使用 bibtex 扩展引文或禁用嵌套引文

使用 bibtex 扩展引文或禁用嵌套引文

我正在写一篇类似以下的论文,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,其中所有crossrefs 都已解析并且其数据已包含在(适当的)条目中。这可以通过以下方式实现:

bibexport -n -o new-bib.bib <file>  

然后是从参考书目中-n删除ed 条目,并为输出命名,在本例中为。请使用来获取 的完整文档。crossref-onew-bib.bibtexdoc bibexportbibexport

然后改变

\bibliography{bib}

\bibliography{new-bib}  

相关内容