我实际上有完全相反的问题这里。
当一个条目 ( @inproceedings
) 交叉引用某个会议记录时,一切正常。只有该@inproceedings
条目在参考列表中,并且它继承了会议记录的所有详细信息。
但是,当多个条目 ( @inproceedings
) 交叉引用同一论文集时,两个条目加上论文集都在参考文献列表中,这两个条目都@inproceedings
包含对论文集的引用,而这并不是我想要的。我希望每个条目@inproceedings
都打印论文集的详细信息(编辑、年份等)。
这是 bib 文件 my.bib:
@inproceedings{inproc1,
title = {Paper 1},
author = {Authors of Paper 1},
pages = {40--46},
crossref = {Proc},
}
@inproceedings{inproc2,
author = {Paper 2},
title = {Authors of Paper 2},
pages = {47--52},
crossref = {Proc},
}
@proceedings{Proc,
editor = {Editor Name},
title = {Proceedings title},
booktitle = {Proceedings title},
year = {2015},
}
这里是加载此书目的基本乳胶文件:
\documentclass{article}
\begin{document}
\cite{inproc1,inproc2}
\bibliographystyle{plain}
\bibliography{my.bib}
\end{document}
这是我得到的输出。
然而,我想要删除第二个参考文献(会议录),因为我从未引用过它,并且在第一和第三个条目中打印它的详细信息(编辑、年份等)。
有什么可以做的吗之内bib 文件来修复这个问题?!
答案1
基本上,你观察到的行为是通过设计@inproceedings
以及拆分和条目的实际目的@proceedings
:如果您引用一篇论文(@inproceedings
条目),BibTeX 会将交叉引用条目中缺失的信息导入到参考书目中的论文条目中,或者,如果引用了同一会议记录中的两篇以上论文,则将条目本身放入参考书目并从论文条目中引用它们,@proceedings
以节省一些空间。@proceedings
推荐的解决方案
阈值 2 只是默认值:可以使用选项在bibtex
命令行上进行配置-min-crossrefs=NUMBER
。因此,如果您将bibtex
命令行更改为
bibtex -min-crossrefs=99 mytex.aux
所有@inproceedings
条目将在参考书目中展开。
bib 文件中的解决方案
但是,正如您要求在bib
文件本身内更改此设置的选项一样:这可以通过不使用@crossref
,而是将条目中的相关信息@proceedings
直接写入每个@inproceedings
条目来实现:
@inproceedings{inproc1,
title = {Paper 1},
author = {Authors of Paper 1},
pages = {40--46},
editor = {Editor Name},
booktitle = {Proceedings title},
year = {2015},
}
@inproceedings{inproc2,
author = {Paper 2},
title = {Authors of Paper 2},
pages = {47--52},
editor = {Editor Name},
booktitle = {Proceedings title},
year = {2015},
}
@proceedings{Proc,
editor = {Editor Name},
title = {Proceedings title},
booktitle = {Proceedings title},
year = {2015},
}
不过,我建议不是以这种方式更改主 bib 文件 – 恢复的方法要复杂得多!相反,使用一些工具,如bib2bib
例如创建一个扁平变体你的 bib 文件。