Como posso usar vários arquivos .bib sem entrada, não mesclados?

Como posso usar vários arquivos .bib sem entrada, não mesclados?

Suponha que eu tenha um cats.bibe hats.bibque queira usar em um artigo sobre gatos com chapéus. Já existe umartigo existente sobre isso(bem, mais ou menos), que tenho em ambos os arquivos.

Agora eu façonãodeseja mesclar esses arquivos (ao contrário deessa questãoeEste). EUsoudisposto a permitir que qualquer ferramenta que eu use ignore a possibilidade de diferenças entre as entradas e apenas escolha a que quiser (nem mesmo de forma consistente; quero dizer, estou disposto a garantir que são realmente cópias da mesma entrada). Nestas condições, o que posso fazer para poder usar ambas as bibliografias no meu documento LaTeX sem obter erros?

Se você sugerir fazer algo mesclá-los temporariamente apenas com o propósito de compilar o documento, sugira algo que se integre, digamos, latexmk, para que eu não tenha que fazer isso manualmente repetidamente, e espero também que qualquer ferramenta que faça isso obtenha os nomes da bibliografia do .texpróprio arquivo e não a priori.

Responder1

Você pode usar quantos .bibarquivos quiser. Entradas duplicadas resultarão em um erro BibTeX que não tem consequências e mantém apenas a primeira entrada encontrada.

\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}

Aqui está o aviso do 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)

insira a descrição da imagem aqui

Responder2

Os arquivos Bib são apenas texto simples e não há equivalente, \end{document}então você pode simplesmente concatená-los (pois você aceita a responsabilidade por entradas duplicadas).

No Linux --shell-escapevocê poderia fazer algo como

\documentclass{article}
\immediate\write18 {cat nice_papers*.bib > \jobname.bib}
\addbibresource{\jobname.bib}
\begin{document}

No Windows seria semelhante: em vez de cat...você usaria copy /y nice_papers*.bib \jobname.bib. Isso assume o biblatex, mas a mudança para o bibtex é trivial ( \bibliography{\jobname}).

Isso deve ser compatível, latexmkpois não usa ferramentas externas.

Uma coisa a observar é que seus arquivos bib de origem devem terminar com uma ou mais novas linhas para que você não acabe com uma linha de lixo no ponto de mesclagem (isso é especialmente verdadeiro se você tivercomentários em seu bibfile)

informação relacionada