[Tex/LaTex] BibTeX shows additional parenthesis depending on the author list

bibtex

I want to reference two ArXiv-papers from the same first author. However, something weird happens, when I append a third author to one of the papers.
Both entries in the bibliography show an additional pair of parentheses () that is actually intended to give the year.
But in this case, I don't want to specify the year!

In the minimal example that I attached, the parenthesis vanish when "Goofy Goof" is removed from the author list of "disney2015".

It looks to me very much like a bug in bibtex or in this style class.
Can somebody help me with that?

I would like to know whether it happens to you as well. I tried it with bibtex 0.99d and kpathsea 6.1.0 and kpathsea 6.1.1

I would like to show you my example bibtex file (bibtest.bib):

@article{disney2013,
archivePrefix = {arXiv},
arxivId = {1307.9998},
author = {Donald Duck and Dagobert Duck and Daisy Duck and Mickey Mouse},
eprint = {1307.9998},
url = {http://arxiv.org/abs/1307.9998}
}

@article{disney2015,
archivePrefix = {arXiv},
arxivId = {1411.9999},
eprint = {1411.9999},
author = {Donald Duck and Pippi Longstockings  and Goofy Goof},
url = {http://arxiv.org/abs/1411.9999}
}

@article{disney2017,
archivePrefix = {arXiv},
arxivId = {1411.9997},
eprint = {1411.9997},
author = {Mickey Mouse},
url = {http://arxiv.org/abs/1411.9997}
}

That could be run from this tex file:

\documentclass[superscriptaddress,twocolumn]{revtex4-1}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{hyperref}


\begin{document}
        \cite{disney2015}
        \cite{disney2013}
        \cite{disney2017}
        \bibliographystyle{apsrev4-1}
        \bibliography{bibtest}
\end{document}

Thanks in Advance,
Mechanix

Best Answer

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).