我正在写一篇类似以下的论文,bibtex 在引用中创建引用:
\documentclass{article}
\begin{document}
cite1~\cite{abc:oopsla2005}
cite2~\cite{martinAl:oopsla2005}
\bibliographystyle{plain}
\bibliography{bib,crossref}
\end{document}
其中 bib.bib 包含:
@InProceedings{martinAl:oopsla2005,
author = {Michael Martin and Benjamin Livshits and Monica S. Lam},
title = {Finding application errors and security flaws using {PQL}: a program query language},
crossref = {oopsla2005},
pages = {365--383},
}
并且 crossref 包含:
@Proceedings{oopsla2005,
key = {OOPSLA 2005},
booktitle = {Proceedings of the 20th {ACM SIGPLAN} Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2005)},
title = {Proceedings of the 20th {ACM SIGPLAN} Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2005)},
year = 2005,
address = {San Diego, California, USA},
month = oct,
publisher = acm,
note = sigplan # {, 40(11)}
}
因此,当我创建 pdf 文件时,我得到:
[1] M. Martin、B. Livshits、MS Lam,使用 PQL 查找应用程序错误和安全漏洞:一种程序查询语言,在:[3],第 365-383 页。ACM SIGPLAN 通知,40(11)。
[2] C. Allan,P. Avgustinov,AS Christensen,L. Hendren,S. Kuzins,O. Lhot ́ak,O. de Moor,D. Sereni,G. Sittampalam 和 J. Tibble,在 AspectJ 中添加带有自由变量的跟踪匹配,见:[3],第 345-364 页。ACM SIGPLAN 通知,40(11)。
其中 [3] 为:
[3] OOPSLA 2005,第 20 届 ACM SIGPLAN 面向对象编程系统、语言和应用会议(OOPSLA 2005)论文集,ACM Press,美国加利福尼亚州圣地亚哥,2005 年。ACM SIGPLAN 通知,40(11)。
我想扩展引文 1 和 2 以显示这些参考文献的完整内容。如果我可以显示完整参考文献,我希望 Latex/Bibtex 删除参考文献 3。
是否可以在 Latex 中设置一些参数来实现我的目标?(我无法使用行命令选项,因为我的 Latex 文件是在日志服务器中编译的)
换句话说,我只是想得到:
[1] M. Martin, B. Livshits, MS Lam, 使用 PQL:一种程序查询语言查找应用程序错误和安全漏洞,载于第 20 届 ACM SIGPLAN 面向对象编程系统、语言和应用程序会议(OOPSLA 2005)论文集,ACM Press,美国加利福尼亚州圣地亚哥,2005 年。ACM SIGPLAN 通知,40(11)。
[2] C. Allan,P. Avgustinov,AS Christensen,L. Hendren,S. Kuzins,O. Lhot ́ak,O. de Moor,D. Sereni,G. Sittampalam 和 J. Tibble,在 AspectJ 中添加带有自由变量的跟踪匹配,载于第 20 届 ACM SIGPLAN 面向对象编程系统、语言和应用程序会议(OOPSLA 2005)的论文集,ACM Press,美国加利福尼亚州圣地亚哥,2005 年。ACM SIGPLAN 通知,40(11)。
答案1
bibtex
有一个命令行开关(即,min-crossrefs=<number>
控制用于包含在参考书目中的 crossref 的最小数量。
如果无法控制bibtex
运行时选项,则还有几个选项。
你可以运行
bibtex -min-crossrefs=500 <file>
在您自己的计算机上生成<file>.bbl
文件中的参考书目,然后替换
\bibliographystyle{plain}
\bibliography{bib}
使用生成的文件的内容.bbl
,或者通过\input{<file>.bbl}
。
第二种选择是使用bibexport
来生成一个.bib
,其中所有crossref
s 都已解析并且其数据已包含在(适当的)条目中。这可以通过以下方式实现:
bibexport -n -o new-bib.bib <file>
然后是从参考书目中-n
删除ed 条目,并为输出命名,在本例中为。请使用来获取 的完整文档。crossref
-o
new-bib.bib
texdoc bibexport
bibexport
然后改变
\bibliography{bib}
到
\bibliography{new-bib}