假设我有一个cats.bib
and,hats.bib
我想在一篇关于戴帽子的猫的文章中使用它。已经有一个现有的关于此的论文(嗯,有一点),我在两个文件中都有。
现在,我明白了不是想要合并这些文件(不同于这个问题和这个)。 我是愿意允许我使用的任何工具忽略条目之间可能存在的差异,并只选择它喜欢的条目(甚至不是始终如一;我的意思是,我愿意保证它们确实是同一条目的副本)。在这种情况下,我该怎么做才能在我的 LaTeX 文档中使用这两个参考书目而不会出现任何错误?
如果您建议仅仅为了编译文档而临时合并它们,请建议一些可以集成到其中的东西,latexmk
这样我就不必重复手动执行此操作,并且希望无论使用什么工具执行此操作,都可以从文件本身而不是先验中获取参考书目名称.tex
。
答案1
您可以使用.bib
任意数量的文件。重复的条目将导致 BibTeX 错误,但不会造成任何后果,并且仅保留找到的第一个条目。
\begin{filecontents*}{\jobname-cats.bib}
@article{unique-cats,
author={A. Uthor},
title={Title},
journal={Journal},
year=2016,
}
@article{duplicate,
author={W. Riter},
title={Title},
journal={Journal},
year=2016,
}
\end{filecontents*}
\begin{filecontents*}{\jobname-hats.bib}
@article{unique-hats,
author={P. Laywright},
title={Title},
journal={Journal},
year=2016,
}
@article{duplicate,
author={W. Riter},
title={Title},
journal={Journal},
year=2016,
}
\end{filecontents*}
\documentclass{article}
\begin{document}
\title{Cats in hats}
\author{Einpoklum}
\maketitle
We want to cite \cite{unique-cats}, but also \cite{unique-hats}.
There is a duplicate \cite{duplicate}.
\bibliographystyle{plain}
\bibliography{\jobname-cats,\jobname-hats}
\end{document}
这是 BibTeX 的警告:
This is BibTeX, Version 0.99d (TeX Live 2016)
The top-level auxiliary file: einmulti.aux
The style file: plain.bst
Database file #1: einmulti-cats.bib
Database file #2: einmulti-hats.bib
Repeated entry---line 7 of file einmulti-hats.bib
: @article{duplicate
: ,
I'm skipping whatever remains of this entry
(There was 1 error message)
答案2
Bib 文件只是纯文本,没有等效文件,\end{document}
因此您可以将它们连接起来(因为您接受重复条目的责任)。
在 Linux 上--shell-escape
你可以这样做
\documentclass{article}
\immediate\write18 {cat nice_papers*.bib > \jobname.bib}
\addbibresource{\jobname.bib}
\begin{document}
在 Windows 上,情况类似:cat...
您可以使用而不是copy /y nice_papers*.bib \jobname.bib
。这假设 biblatex,但 bibtex 的更改很简单 ( \bibliography{\jobname}
)。
latexmk
由于它不使用外部工具,因此应该兼容。
需要注意的一点是,你的源 bib 文件应该以一个或多个换行符结尾,这样你就不会在合并点处出现垃圾行(如果你有你的 bibfile 中的评论)