![为什么我在 bibtex 中看到一个空白的作者,尽管它存在](https://linux22.com/image/412255/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%9C%A8%20bibtex%20%E4%B8%AD%E7%9C%8B%E5%88%B0%E4%B8%80%E4%B8%AA%E7%A9%BA%E7%99%BD%E7%9A%84%E4%BD%9C%E8%80%85%EF%BC%8C%E5%B0%BD%E7%AE%A1%E5%AE%83%E5%AD%98%E5%9C%A8.png)
我的 bibtex 文件中有类似以下引用的内容。我使用的是 IEEEtranN 书目样式。
@electronic{UT,
author = {{Test}},
title = {{Test Code}},
url = "http://test.com"
}
然而,由于某种原因,作者没有出现在我的参考书目中,但其他所有信息都出现了;
——. Test Code. [Online]. Available: http://test.com
谁能告诉我为什么会发生这种情况以及怎样才能阻止它?
答案1
正如 Mico 所评论的,这是 IEEEtranN(和其他 IEEEtran 样式)的预期行为,即,如果引用作者两次或更多次,则仅在第一次打印姓名,并且任何后续重复的条目都用水平线而不是作者姓名打印。
要更改此行为,您可以使用\noop
方法。这是一种通常用于更改参考书目条目排序顺序的变通方法,例如根据 .bib 文件中的顺序对参考书目进行排序。但是,它也可以用于使两个作者在 Bibtex 中以不同的方式显示,但打印效果却相同。
这个想法是,您在作者姓名前面添加一个不执行任何操作的命令,即非操作或“无操作”。此命令只接受一个参数并将其丢弃,因此不会打印任何内容。但是,由于该命令是作者姓名字段的一部分,因此它用于排序,还用于确定两个作者字段是否具有相同的内容。如果一个条目有 noop 命令而另一个没有,或者它们都有命令但参数不同,则作者是“不同的”,并且第二个条目会打印全名而不是水平线。
.bib
应使用条目在文件的前言中定义特殊命令@PREAMBLE
。
先生.bib
:
@PREAMBLE{"\def\authornoop#1{}"}
@electronic{testone,
author = {{\authornoop{T}}Test},
title = {Test Code 1},
url = "http://test.com"
}
@electronic{testtwo,
author = {Test},
title = {Test Code 2},
url = "http://test.com"
}
.tex
:
\documentclass{IEEEtran}
\usepackage[numbers]{natbib}
\begin{document}
\citet{testone} \citet{testtwo}
\bibliographystyle{IEEEtranN}
\bibliography{mybibfile}
\end{document}
结果:
请注意,这可能会改变排序顺序。您可以修改参数以\authornoop
更正此问题,并\authornoop
根据需要向其他条目添加另一个参数。
或者,您可以通过编辑文件尝试更强大的方法.bst
,例如BibTeX 用“------”替换相似的作者姓名是否正常?。
请注意,如果您计划向 IEEE 提交论文,那么他们实际上希望像这样格式化重复的作者,因此您的修改可能会在出版时被撤销。