Campo personalizado en BibLaTeX

Campo personalizado en BibLaTeX

Me gustaría permitir un campo personalizado opcional en mis entradas .bib. No necesito que estos campos formen parte de la bibliografía, pero me gustaría poder acceder a ellos a través de

\citefield{<entry-key>}{<custom-field-name>}

La respuesta probablemente esté en alguna parte de las referencias que se enumeran a continuación, pero mis intentos iniciales de adaptación \DeclareSourcemapfracasaron \DeclareFieldFormat.

Referencias:

Código:

\begin{filecontents}{mybib.bib}
@book{knuth1984texbook,
  title={The texbook},
  author={Knuth, D.E. and Knuth, A.D. and Bibby, D. and American Mathematical Society and Addison-Wesley Publishing Company and Addison-Wesley},
  isbn={9780201134483},
  lccn={85030845},
  series={Computers \& typesetting},
  url={https://books.google.com/books?id=hEYuAQAAIAAJ},
  year={1984},
  publisher={Addison-Wesley},
  myFieldA={Useful Book},
  myFieldB={on Shelf 4},
}
@book{goossens1994latex,
  title={The LaTeX Companion},
  author={Goossens, M. and Mittelbach, F. and Samarin, A.},
  isbn={9780201541991},
  lccn={lc93023150},
  series={Addison-Wesley series on tools and techniques for computer typesetting},
  url={https://books.google.com/books?id=54A3MuBzIrEC},
  year={1994},
  publisher={Addison-Wesley},
  myFieldA={Also Useful Book},
  myFieldB={on Shelf 5},
}
\end{filecontents}

%% -----------------

\documentclass{article}
\usepackage{biblatex}
\addbibresource{mybib.bib}

\begin{document}
    This should print ``Also Useful Book'':
    \citefield{goossens1994latex}{myFieldA}
\end{document}

Respuesta1

Siempre que solo necesite unos pocos campos y esté dispuesto a sacrificar un poco la semántica de marcado (para las citas), puede salirse con la suya usando los "campos personalizados" biblatexproporcionados (los estilos estándar no los usan, pero si está utilizando uno no estándar, es posible que tenga que comprobar si está realmente "vacío").

Dado que mencionó en los comentarios que le gustaría un nombre personalizado para su campo, eso se puede lograr usando un SourceMap para copiar el valor de su campo personalizado a uno de los disponibles en biblatexel modelo de datos. Esto significa que puede tener su nombre personalizado en su .bibarchivo, pero al hacer la cita aún debe usar un campo biblatex"sabe".

Esto podría ser algo como:

\begin{filecontents}[overwrite]{mybib.bib}
@book{knuth1984texbook,
  title={The texbook},
  author={Knuth, D.E. and Knuth, A.D. and Bibby, D. and American Mathematical Society and Addison-Wesley Publishing Company and Addison-Wesley},
  isbn={9780201134483},
  lccn={85030845},
  series={Computers \& typesetting},
  url={https://books.google.com/books?id=hEYuAQAAIAAJ},
  year={1984},
  publisher={Addison-Wesley},
  myFieldA={Useful Book},
  myFieldB={on Shelf 4},
}
@book{goossens1994latex,
  title={The LaTeX Companion},
  author={Goossens, M. and Mittelbach, F. and Samarin, A.},
  isbn={9780201541991},
  lccn={lc93023150},
  series={Addison-Wesley series on tools and techniques for computer typesetting},
  url={https://books.google.com/books?id=54A3MuBzIrEC},
  year={1994},
  publisher={Addison-Wesley},
  myFieldA={Also Useful Book},
  myFieldB={on Shelf 5},
}
\end{filecontents}

%% -----------------

\documentclass{article}
\usepackage{biblatex}
\addbibresource{mybib.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=myFieldA]
      \step[fieldset=usera, origfieldval]
      \step[fieldsource=myFieldB]
      \step[fieldset=userb, origfieldval]
    }
  }
}

\begin{document}
This should print ``Also Useful Book'':
\citefield{goossens1994latex}{usera}

This should print ``on Shelf 5'':
\citefield{goossens1994latex}{userb}
\end{document}

ingrese la descripción de la imagen aquí

La ventaja de este enfoque es que no es necesario ampliar el modelo de datos, por lo que es más sencillo. Pero si realmente necesita usar el nombre de su campo personalizado en ambos lados, hasta donde yo sé, la única forma es extender el modelo de datos para incluir su campo. En cuyo caso, la respuesta canónica es la de @moewe en:¿Cómo puedo crear tipos de datos completamente nuevos con BibLaTeX/Biber?.

información relacionada