使用 bibtex 扩展 latex 中的引文

使用 bibtex 扩展 latex 中的引文

我正在写一篇类似以下的论文,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.bib 包含:

@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

您的帖子缺少一些细节,例如 Allan 等人的文章条目。因此,我的回答无法完全复制您的要求。以下是一些观察:

  • 要使用 BibTeX 的crossref功能,请使用label一个条目的作为另一个条目的字段的值crossref;不要使用名为的字段key

  • 您已经这样做了,但只是为了完整性:被交叉引用的条目在 bib 文件(或 bib 文件)中必须比包含对该条目的交叉引用的条目(或条目)更晚出现。

  • 如果您只希望“主要”条目显示在参考书目中,而不显示包含部分交叉引用信息的条目, \cite被交叉引用的条目。

  • 如果您想要缩写的名字,您应该使用参考书目样式,例如abbrvnat(如果您使用该natbib包)或abbrv;不要使用plain(或plainnat)。

在此处输入图片描述

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@InProceedings{martinAl:oopsla2005,
crossref = {oopsla2005},
author = {Michael Martin and Benjamin Livshits and Monica S. Lam},
title = {Finding application errors and security flaws using {PQL}: a program query language},
pages = {365--383},
}
\end{filecontents*}
\begin{filecontents*}{crossref.bib}
@book{oopsla2005,
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},
month =        oct,
publisher =     acm,
note =         sigplan # {, 40(11)}  ,     
}
\end{filecontents*}
\usepackage{natbib}

\begin{document}
%cite1~\cite{oopsla2005} %% no need to 

\cite{martinAl:oopsla2005}

\bibliographystyle{abbrvnat}
\bibliography{bib,crossref}
\end{document}

相关内容