Ya no tienes que indagar más en otros sitios porque has llegado al lugar perfecto, poseemos la solución que necesitas encontrar y sin complicarte.
Solución:
Puede hacer esto con bastante facilidad utilizando secciones de referencia con fuentes de datos vinculadas:
documentclassarticle
usepackage[style=authoryear]biblatex
addbibresourceresource1.bib
begindocument
beginrefsection[resource2.bib]
nocite*
printbibliography
endrefsection
nocite*
printbibliography
enddocument
Aquí, el primero nocite
solo agrega las referencias de resource2.bib
porque es local a la refsección. El segundo nocite
solo recoge cosas de resource1.bib
porque ambos están en la refsección “‘0”. printbibliography
es local a una refsección si no tiene section
argumento.
Aquí hay otra forma de pensar sobre esto y por qué es difícil en general. biblatex
funciona semánticamente con bibliografías, por lo que la forma de citar cosas es mediante información semántica que se aplica a las bibliografías: claves de cita, tipos de entrada, secciones de referencia, etc. biber
sabe cómo asignarlos a cosas a un nivel semánticamente más bajo como archivos, etiquetas en un archivo XML (el .bcf
) y similares. El problema es que lo que se quiere es un biblatex
forma de especificar citar keys en un nivel semántico por debajo del de “bibliografía”, por ejemplo, “archivo”. biblatex
no tiene ningún concepto de tales cosas en su código y es muy difícil de implementar (y sería muy complicado). Puede pasar por conceptos tan extraños como nombres de archivo para biber
pero eso no es suficiente para este caso ya que biblatex
Las estructuras de datos internas necesitarían rastrear las listas de citas y ordenar en el nivel semántico de “archivo” y eso es imposible. En pocas palabras, debería haber un componente semántico bibliográfico entre “una o más citas keys”y” todas las citas keys en una refsección “que es todo nocite
actualmente entiende. “Archivo” ya está descartado por las razones mencionadas anteriormente.
El siguiente enfoque no es del todo satisfactorio porque técnicamente para biblatex
todas las entradas habrán sido (
no
)cite
d, esto conduce a biblatex
aplicando técnicas de desambiguación que no tendría que utilizar.
La idea principal es utilizar un mapa fuente restringido a jobname-resource2.bib
DeclareSourcemap
maps[datatype=bibtex]
map
perdatasourcejobname-resource2.bib
step[fieldset=keywords, fieldvalue=, nocitethis, append]
para agregar una palabra clave nocitethis
a todas las entradas de ese archivo.
También definimos bibcheck
defbibcheckmynocite%
ifboolexprtest ifciteseen or test ifkeywordnocitethis
skipentry
Esta verificación solo imprimirá las entradas de la bibliografía que se hayan citado antes o que tengan la palabra clave específica nocitethis
que solo las entradas de jobname-resource2.bib
tengo.
Queda por emitir un nocite*
(entonces técnicamente todas las entradas son nocited
y procesado por biber).
Tendrás que usar el bibcheck
en la bibliografia
printbibliography[check=mynocite]
También necesitaremos cargar biblatex
con citetracker
habilitado para ifciteseen
trabajar
usepackage[backend=biber,style=authoryear,citetracker=true]biblatex
MWE
RequirePackagefilecontents
beginfilecontents*jobname-resource1.bib
@articleA2014,
author=First Author,
journal=Journal A,
title=First Paper,
note = should appear in bib, because it was cited,
year=2014
@articleD2014,
author=First Author,
journal=Journal A,
title=First Paper,
note = should not be seen in bib,
year=2014
endfilecontents*
beginfilecontents*jobname-resource2.bib
@articleB2014,
author=Another Author,
journal=Journal B,
title=Second Paper,
note = should appear in bib, b/c it is in jobname-resource2 and nocite was issued,
year=2014
@articleC2014,
author=Next Author,
journal=Journal C,
title=Third Paper,
note = should appear in bib, b/c it is in jobname-resource2 and nocite was issued,
year=2014
endfilecontents*
documentclassarticle
usepackage[backend=biber,style=authoryear,citetracker=true]biblatex
addbibresourcejobname-resource1.bib
addbibresourcejobname-resource2.bib
DeclareSourcemap
maps[datatype=bibtex]
map
perdatasourcejobname-resource2.bib
step[fieldset=keywords, fieldvalue=, nocitethis, append]
defbibcheckmynocite%
ifboolexprtest ifciteseen or test ifkeywordnocitethis
skipentry
nocite*
begindocument
This is a citation citeA2014
printbibliography[check=mynocite]
enddocument
Notará que hay un “(2014a)” pero no “(2014b)”, porque Biber “(2014b)” existe – es D2014
– y ha sido citado (debido a nocite*
), simplemente lo suprimimos en la bibliografía a través de nuestra verificación.
Apoyo la sugerencia de que poder “nocitar” todas las entradas en un .bib
file sería útil, pero hasta que eso suceda, no es complicado tomar rápidamente esas citas de una sola vez.
Imagine que queremos llenar un solo archivo con todas las entradas. keys a partir de una .bib
archivo, por lo que simplemente podemos agregar un
inputnocites
Eso significa que necesitamos un archivo llamado nocites.tex
que tiene algo como
% nocites.tex
nocite%
entrykey1, entrykey2, entrykey3, entrykey4, % ...
Utilizando grep
, sed
, y tr
, podemos hacer esto fácilmente (y las personas mejor con expresiones regulares probablemente lo harán de manera aún más fácil / eficiente):
# assuming a .bib file called `bibliography.bib`
grep @ bibliography.bib | grep -v '@string' | grep -v '\@' | sed 's/@.*{//g' | tr 'n' ' ' | sed 's/^/\nocite sed '$a' > nocites.tex
Lo que hace esto es:
- busque cada línea que tenga una ‘@’;
- descartar cualquier línea que tenga un ‘@string’en él (opcional);
- descartar cualquier línea que tenga una ‘ @’ en ella (opcional; mi
.bib
archivo necesitaría esto); - eliminar de cada línea coincidente el
@
(p. ej., girar{ @Book{entry1
dentroentry1
); - convertir todas las líneas nuevas en una sola línea separada por espacios (opcional);
- anteponer al archivo un
nocite%
mientras mueve la entrada keys a la siguiente línea; - agregar un cierre
al final del archivo;
- escribe todas estas transformaciones en un archivo llamado
nocites.tex
.