Как можно использовать несколько непересекающихся файлов .bib, не объединенных?

Как можно использовать несколько непересекающихся файлов .bib, не объединенных?

Предположим, у меня есть cats.bibи 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 должны заканчиваться одним или несколькими символами новой строки, чтобы в точке слияния не образовалась пустая строка (это особенно актуально, если у вас естькомментарии в вашем бибфайле)

Связанный контент