我正在将 BibTeX 与 Latex Beamer 一起使用,遇到了一个奇怪的问题:
我的 BibTeX 文件的条目如下所示:
@inproceedings{DBLP:conf/latin/BenderF00,
author = {Michael A. Bender and
Martin Farach-Colton},
title = {The {LCA} Problem Revisited},
booktitle = {LATIN},
year = {2000},
pages = {88-94},
ee = {http://dx.doi.org/10.1007/10719839_9},
crossref = {DBLP:conf/latin/2000},
bibsource = {DBLP, http://dblp.uni-trier.de}
}
@proceedings{DBLP:conf/latin/2000,
editor = {Gaston H. Gonnet and
Daniel Panario and
Alfredo Viola},
title = {LATIN 2000: Theoretical Informatics, 4th Latin American
Symposium, Punta del Este, Uruguay, April 10-14, 2000, Proceedings},
booktitle = {LATIN},
publisher = {Springer},
series = {Lecture Notes in Computer Science},
volume = {1776},
year = {2000},
isbn = {3-540-67306-7},
bibsource = {DBLP, http://dblp.uni-trier.de}
}
\cite{DBLP:conf/latin/BenderF00}
一起使用
\begin{frame}[allowframebreaks]{Bibliography}
\begin{scriptsize}
%\nocite{*} // commented out!!!!!!!!
\setbeamertemplate{bibliography item}[text]
\bibliographystyle{alpha}
\bibliography{literatur}
\end{scriptsize}
\end{frame}
给我:
[BFC00] Michael A. Bender 和 Martin Farach-Colton。重新审视 LCA 问题。Gaston H. Gonnet、Daniel Panario 和 Alfredo Viola 编辑,LATIN,计算机科学讲义第 1776 卷,第 88-94 页。Springer,2000 年。
这是完美的。
但是当我没有\cite{DBLP:conf/latin/BenderF00}
明确引用而是使用\nocite{*}
时,我得到以下结果:
[BFC00] Michael A. Bender 和 Martin Farach-Colton。重新审视 LCA 问题。在 Gonnet 等人的文章中。[GPV00],第 88-94 页。
对 [GPV00] 有新的引用等等...
我该如何避免这种行为?我很高兴收到每一条建议
答案1
使用\nocite{*}
基本上就是\nocite
为参考书目数据库中的每个条目添加一个命令。当 BibTeX 找到\nocite
(或\cite
)与某个@inproceedings
项目及其交叉引用项目相关的@proceedings
内容时,它会将这两个条目添加到参考书目中,并在项目中添加一个引用(在您的例子中为“[GPV00]”)@inproceedings
。
因此,无论\cite{DBLP:conf/latin/BenderF00}
有没有\nocite{*}
,该@proceedings
条目都用于填充该项目中的数据。但是,如果有另一个项目交叉引用DBLP:conf/latin/2000
,则该条目无论如何都会单独出现(请参阅驯服野兽,第 12 节)。
没有任何\nocite
命令可以避免仅交叉引用的项目。
如果要显示庞大的数据库,我会采用这种默认方法。另一种方法是获取所有键,删除字段中出现的键,然后使用显式键列表crossref
执行操作。\nocite