Your question is quite unclear to me. Are you forced to use the document class and the bst
you used in your MWE? For example, for publishing an article? Then do not change the predefined behaviour of the template you use!
If you are not forced to use the class and bibliography style, why do you not just use another one? It is much easier to customize biblatex
than to create an own style with makebst
.
The specific reason for the parenthes-related issues you're encountering is that you're using a bibliography style which requires a year
field if the entry is of type @article
. (Separately, there's also an issue with missing journal
fields; more about that later.) That's why you get an empty ()
pair when you omit the year
field. Because the style is not designed not to have a year
field for entries of type @article
, no test is performed to check if the field is missing. So the "error" you get is more a feature than a bug, because you're using the entry type in a way it is not built for.
Your MWE generates several warnings you should read and correct. For example, you need to add a class option for the society and journal.
You also provide the file extensions .bst
for the style (don't!) and .bib
for the bib file (don't!) in the arguments of \bibliographystyle
and \bibliography
. Finally, if you want to get rid of warnings about the missing field journal
, you have to add something like journal = {MISSING},
(change MISSING
to what you need) to each of your bib entries.
Please see the following MWE. I've added class options, augmented the entries with year
and journal
fields, and corrected the syntax of the \bibliographystyle
and \bibliography
directives.
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{disney2013,
archivePrefix = {arXiv},
arxivId = {1307.9998},
author = {Donald Duck and Dagobert Duck and Daisy Duck and Mickey Mouse},
eprint = {1307.9998},
journal = {MISSING},
url = {http://arxiv.org/abs/1307.9998},
year = {2001},
}
@article{disney2015,
archivePrefix = {arXiv},
arxivId = {1411.9999},
eprint = {1411.9999},
author = {Donald Duck and Pippi Longstockings and Goofy Goof},
journal = {MISSING},
url = {http://arxiv.org/abs/1411.9999},
year = {2002},
}
@article{disney2017,
archivePrefix = {arXiv},
arxivId = {1411.9997},
eprint = {1411.9997},
author = {Mickey Mouse},
url = {http://arxiv.org/abs/1411.9997},
journal = {MISSING},
year = {2003},
}
\end{filecontents*}
\documentclass[%
superscriptaddress,twocolumn,
10pt,
pra, aps % society=aps, journal=pra
]{revtex4-1}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{hyperref}
\begin{document}
\cite{disney2015}
\cite{disney2013}
\cite{disney2017}
\bibliographystyle{apsrev4-1} % no .bst
\bibliography{\jobname} % no .bib
\end{document}
If you insist in not writing an year into the bib file (Why btw?) you have to copy the used style file and change it or better to use biblatex
and the possibilities to customize it ...
Edit:
As @Mico mentioned in his comment I add his advice here:
Instead of back-filling the missing journal
and year
fields for entries of type @article
, which sort of treats the symptoms of the problem, why not treat the cause of the problem directly? My recommendation would be not to use the entry type @article
for arxiv publications. Instead, I'd use the entry type @misc
, which doesn't require the year
field to begin with (or the journal
field, for that matter).
@article
entry type, which requires the fieldsyear
andjournal
. Instead, use the@misc
entry type.