Saltar al contenido

nocite {*} para fuentes de bibdatas individuales con biblatex / biber

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)cited, 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

ingrese la descripción de la imagen aquí

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:

  1. busque cada línea que tenga una ‘@’;
  2. descartar cualquier línea que tenga un ‘@string’en él (opcional);
  3. descartar cualquier línea que tenga una ‘ @’ en ella (opcional; mi .bib archivo necesitaría esto);
  4. eliminar de cada línea coincidente el @{ (p. ej., girar @Book{entry1 dentro entry1);
  5. convertir todas las líneas nuevas en una sola línea separada por espacios (opcional);
  6. anteponer al archivo un nocite% mientras mueve la entrada keys a la siguiente línea;
  7. agregar un cierre al final del archivo;
  8. escribe todas estas transformaciones en un archivo llamado nocites.tex.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *