Elemento no deseado en la lista de referencias cuando se utiliza referencia cruzada con biber

Elemento no deseado en la lista de referencias cuando se utiliza referencia cruzada con biber

Recién comencé a usar biber/biblatex y tengo problemas para comprender parte de su comportamiento. No puedo imaginar que sea el primero en encontrarme con este problema, pero no pude encontrar una pregunta duplicada.

Cito varios artículos que se publican en la misma revista. Para garantizar que la información de la revista sea coherente en todas las citas, hice una entrada bibliográfica separada que contiene solo la información de la revista. Luego hago una referencia cruzada de esa entrada con las entradas del artículo. Un references.bibarchivo de ejemplo:

@article{myjournal,
    journaltitle={Journal of Interesting Things},
    publisher={Someone}
}

@article{myarticle1,
    crossref={myjournal},
    title={That thing},
    author={Martypants, Susan},
    year={2019},
}

@article{myarticle2,
    crossref={myjournal},
    title={That other thing},
    author={Rofessor, Peter},
    year={2020}
}

Ahora, cuando cito ambos myarticle1y myarticle2en mi documento, la lista de referencias contiene una línea adicional sin nombre y solo la información de la revista:

salida que contiene entradas no deseadas

Un ejemplo práctico mínimo que produce este resultado es:

\documentclass{article}

\usepackage[backend=biber,style=alphabetic]{biblatex}
\addbibresource{references.bib}

\begin{document}
    
\cite{myarticle1,myarticle2}
    
\printbibliography{}
    
\end{document}

Curiosamente, si cito sólo uno de los dos artículos, el artículo "vacío" de la revista no aparece. (es decir, reemplazar \cite{myarticle1,myarticle2}con da como \cite{myarticle1}resultado una lista de referencia de un elemento en lugar de tres).

Soluciones alternativas:Puedo copiar y pegar la información de la revista en cada artículo y eliminar la referencia cruzada. Sin embargo, si luego quiero cambiar alguna información sobre la revista (por ejemplo, agregar una dirección del editor), tendré que revisar todas las entradas. Alternativamente, puedo eliminar la entrada manualmente del .bblarchivo, lo que también da como resultado el resultado deseado. Ninguna de estas soluciones me resulta del todo satisfactoria.

Pregunta:¿Cuál es la forma preferida de estructurar el documento .bibpara que (a) no tenga que escribir y mantener información duplicada del diario y (b) el asiento del diario no aparezca como un elemento separado en la lista de referencias, a menos que se cite explícitamente?

¡Gracias por su ayuda!

Respuesta1

El crossrefcampo es algo más que la simple herencia de datos. También se trata de establecer una determinada relación padre-hijo entre entradas (cf. el xrefcampo, que sólo modela esta relación padre-hijo sin herencia de datos).

Una característica de esta relación padre-hijo es que una entrada padre se agrega automáticamente a la bibliografía si un cierto número de hijos hacen referencia a ella (incluso si no se cita explícitamente). El número exacto de referencias infantiles se puede controlar con la mincrossrefsopción. Su valor predeterminado es 2, lo que significa que una entrada principal se agrega a la bibliografía si al menos dos entradas secundarias (diferentes) hacen referencia a ella. Ese es el caso en su ejemplo: myjournalhace referencia a myarticle1y myarticle2.

Una forma de evitarlo sería establecer mincrossrefsun valor más alto (tal vez irrazonablemente alto) como 999el sugerido porManuel Weinkaufen elcomentarios.

\documentclass{article}

\usepackage[backend=biber, style=alphabetic, mincrossrefs=999]{biblatex}

\begin{filecontents}{\jobname.bib}
@article{myjournal,
  journaltitle = {Journal of Interesting Things},
  publisher    = {Someone},
}
@article{myarticle1,
  crossref = {myjournal},
  title    = {That thing},
  author   = {Martypants, Susan},
  year     = {2019},
}
@article{myarticle2,
  crossref = {myjournal},
  title    = {That other thing},
  author   = {Rofessor, Peter},
  year     = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\autocite{myarticle1,myarticle2}

\printbibliography
\end{document}

Una alternativa sería decir biblatexque myjournales sólo un contenedor de datos y no una entrada que podría aparecer en la bibliografía por derecho propio. Eso se hace agregando options = {dataonly},a la entrada. Esto no es diferenteCigarra'ssugerencia deoptions={skipbib=true},, pero un poco más riguroso (ya que también evitará la creación de etiquetas, que de todos modos falla aquí, para ser justos). Sin embargo, esta solución myjournalni siquiera aparece en la bibliografía cuando se cita explícitamente.

\documentclass{article}

\usepackage[backend=biber, style=alphabetic]{biblatex}

\begin{filecontents}{\jobname.bib}
@article{myjournal,
  journaltitle = {Journal of Interesting Things},
  publisher    = {Someone},
  options      = {dataonly},
}
@article{myarticle1,
  crossref = {myjournal},
  title    = {That thing},
  author   = {Martypants, Susan},
  year     = {2019},
}
@article{myarticle2,
  crossref = {myjournal},
  title    = {That other thing},
  author   = {Rofessor, Peter},
  year     = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\autocite{myarticle1,myarticle2}

\printbibliography
\end{document}

Si no desea establecer esta relación adicional entre padres e hijos, puede ser mejor elegir una herramienta diferente para el trabajo:Cigarracontenedores sugeridos @xdataen elcomentarios.La biblatexdocumentaciónexplica xdatalo siguiente (§2.2.3Campos especiales, pag. 31)

Este campo hereda datos de una o más @xdataentradas. Conceptualmente, el xdata campo está relacionado con crossrefy xref: crossrefestablece una relación lógica padre/hijo y hereda datos; xrefestablece una relación lógica padre/hijo sin heredar datos; xdatahereda datos sin establecer una relación. El valor de xdatapuede ser una clave de entrada única o una lista separada de claves. Consulte §3.13.6 para obtener más detalles.

Y eso parece encajar perfectamente: xdatasin crossrefla relación padre-hijo que causó el comportamiento no deseado en primer lugar.

Sin embargo, cabe señalar que @xdatalas entradas no pueden aparecer en la bibliografía y no pueden citarse de manera útil. Además, la herencia de campos @crossrefpuede tener en cuenta los tipos de entrada de las entradas primarias y secundarias y puede establecer reglas como si el titlecampo de un @collectionpadre se hereda como booktitleun @incollectioncampo secundario. Esto no es posible (y no tiene sentido) para @xdata.

\documentclass{article}

\usepackage[backend=biber, style=alphabetic]{biblatex}

\begin{filecontents}{\jobname.bib}
@xdata{myjournal,
  journaltitle = {Journal of Interesting Things},
  publisher    = {Someone},
}
@article{myarticle1,
  xdata    = {myjournal},
  title    = {That thing},
  author   = {Martypants, Susan},
  year     = {2019},
}
@article{myarticle2,
  xdata    = {myjournal},
  title    = {That other thing},
  author   = {Rofessor, Peter},
  year     = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\autocite{myarticle1,myarticle2}

\printbibliography
\end{document}

En este caso particular, todos los estilos estándar ignorarán el publishercampo @articles, por lo que solo heredarás un campo, a saber, el journal(title). La herencia de un solo campo también se puede modelar con @stringentradas. (Pero, por supuesto, esa no es una opción si desea heredar varios campos a la vez).

\documentclass{article}

\usepackage[backend=biber, style=alphabetic]{biblatex}

\begin{filecontents}{\jobname.bib}
@string{myjournal = {Journal of Interesting Things}}
@article{myarticle1,
  journal  = myjournal,
  title    = {That thing},
  author   = {Martypants, Susan},
  year     = {2019},
}
@article{myarticle2,
  journal  = myjournal,
  title    = {That other thing},
  author   = {Rofessor, Peter},
  year     = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\autocite{myarticle1,myarticle2}

\printbibliography
\end{document}

Todos los ejemplos publicados producen

[19 de marzo] Susan Martypants. "Esa cosa". En: Revista de cosas interesantes (2019).//[Rof20] Peter Rofessor. “Esa otra cosa”. En: Revista de cosas interesantes (2020).

Respuesta2

El comentario de Manuel Weinkauf fue efectivamente la solución:

\usepackage[backend=biber,style=alphabetic,mincrossrefs=99]{biblatex}

Lo agrego como respuesta para que se pueda cerrar la pregunta.

información relacionada