
Supongamos que tengo un cats.bib
y hats.bib
que quiero usar en un artículo sobre gatos con sombrero. Ya hay undocumento existente sobre eso(bueno, más o menos), que tengo en ambos archivos.
Ahora lo hagonodesea fusionar estos archivos (a diferencia de enesta preguntayÉste). IsoyEstoy dispuesto a permitir que cualquier herramienta que utilice ignore la posibilidad de diferencias entre las entradas y simplemente elija la que quiera (ni siquiera de manera consistente; quiero decir, estoy dispuesto a garantizar que realmente sean copias de la misma entrada). En estas condiciones, ¿qué puedo hacer para poder utilizar ambas bibliografías en mi documento LaTeX sin recibir ningún error?
Si sugiere hacer algo fusionándolos temporalmente solo con el propósito de compilar el documento, sugiera algo que se integre, digamos latexmk
, para que no tenga que hacerlo manualmente repetidamente y, con suerte, también que cualquier herramienta que haga esto obtenga los nombres de las bibliografías del .tex
propio archivo en lugar de a priori.
Respuesta1
Puedes utilizar tantos .bib
archivos como quieras. Las entradas duplicadas darán como resultado un error BibTeX que no tiene consecuencias y solo conserva la primera 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}
Aquí está la advertencia de 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)
Respuesta2
Los archivos Bib son simplemente texto sin formato y no hay equivalente, por \end{document}
lo que puede simplemente concatenarlos (ya que acepta la responsabilidad por las entradas duplicadas).
En Linux --shell-escape
podrías hacer algo como
\documentclass{article}
\immediate\write18 {cat nice_papers*.bib > \jobname.bib}
\addbibresource{\jobname.bib}
\begin{document}
En Windows sería similar: en lugar de cat...
you usarías copy /y nice_papers*.bib \jobname.bib
. Esto supone biblatex, pero el cambio para bibtex es trivial ( \bibliography{\jobname}
).
Esto debería ser compatible latexmk
ya que no utiliza herramientas externas.
Una cosa a tener en cuenta es que sus archivos bib de origen deben terminar con una o más líneas nuevas para que no termine con una línea basura en el punto de fusión (esto es especialmente cierto si tienecomentarios en tu bibfile)