我想引用同一第一作者的两篇 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
样式 (不要!) 和.bib
bib 文件 (不要!) 的文件扩展名。最后,如果您想摆脱有关缺失字段的警告,您必须在每个 bib 条目中添加类似(更改为您需要的内容) 的内容。\bibliographystyle
\bibliography
journal
journal = {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 在他的评论中提到的,我在这里添加他的建议:
与其为 类型的条目填充缺失的journal
和year
字段(@article
这只能解决部分问题),为什么不直接处理问题的根源呢?我的建议是不要使用 类型的@article
条目arxiv 出版物。相反,我会使用条目类型@misc
,它不需要以year
字段开头(或者journal
就此而言,不需要字段)。