编辑:

编辑:

我想引用同一第一作者的两篇 ArXiv 论文。但是,当我在其中一篇论文中添加第三位作者时,发生了一些奇怪的事情。参考书目中的两个条目都显示了一对额外的括号 (),这实际上是用来给出年份的。但在这种情况下,我不想指定年份!

在我附加的最小示例中,当从“disney2015”的作者列表中删除“Goofy Goof”时,括号就会消失。

在我看来,这很像是 bibtex 或此样式类中的一个错误。有人能帮我解决吗?

我想知道你是否也遇到了这种情况。我尝试使用 bibtex 0.99d 和 kpathsea 6.1.0 和 kpathsea 6.1.1

我想向您展示我的示例 bibtex 文件(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}
}

可以从这个 tex 文件运行:

\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}

提前致谢,Mechanix

答案1

您的问题对我来说不太清楚。您是否被迫使用文档类和bst您在 MWE 中使用的?例如,发布文章? 那么不要改变您使用的模板的预定义行为!

如果你没有被迫使用类和参考书目样式,为什么不直接使用其他样式呢?自定义biblatex比创建自己的样式要容易得多makebst要容易得多。

您遇到的与括号相关的问题的具体原因是,您使用的参考书目样式要求year在条目类型为 时添加字段@article。 (另外,还存在缺少字段的问题journal;稍后会详细介绍。)这就是为什么你得到一个空的();稍后会详细介绍。)这就是为什么省略字段时year对的原因。 因为样式不是设计的不是year为 类型的条目设置字段@article,不会执行任何测试来检查该字段是否缺失。因此,您收到的“错误”更像是一种功能,而不是错误,因为您使用条目类型的方式并非其构建方式。

您的 MWE 生成了几个警告,您应该阅读并更正。例如,您需要为学会和期刊添加类别选项。

您还在和的参数中提供了.bst样式 (不要!) 和.bibbib 文件 (不要!) 的文件扩展名。最后,如果您想摆脱有关缺失字段的警告,您必须在每个 bib 条目中添加类似(更改为您需要的内容) 的内容。\bibliographystyle\bibliographyjournaljournal = {MISSING},MISSING

请参阅以下 MWE。我添加了类选项,用year和字段扩充了条目,并更正了和指令journal的语法。\bibliographystyle\bibliography

\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}

如果您坚持不在 bib 文件中写入年份(为什么?),您必须复制使用的样式文件并进行更改或更好地使用biblatex以及自定义它的可能性......

编辑:

正如@Mico 在他的评论中提到的,我在这里添加他的建议:

与其为 类型的条目填充缺失的journalyear字段(@article这只能解决部分问题),为什么不直接处理问题的根源呢?我的建议是不要使用 类型的@article条目arxiv 出版物。相反,我会使用条目类型@misc,它不需要以year字段开头(或者journal就此而言,不需要字段)。

相关内容