Quiero escribir un entorno de bibliografía en biblatex basado en description
las listas de entornos de enumitems (quiero hacer esto porque encaja con otras partes del documento que estoy creando). Me gusta itemize
, description
utiliza un argumento opcional item
para la etiqueta de descripción. Quiero escribir mi entorno de bibliografía para que el año de publicación se establezca en este argumento opcional. Parece que debería funcionar, pero no funciona (he usado itemize
en lugar de description
aquí para que el ejemplo sea lo más mínimo posible):
\documentclass{article}
\usepackage[date=year]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{foo,
title = {SomeTitle},
author = {Doe, John},
date = {2024-04-27},
journaltitle = {Great Works}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\defbibenvironment{description}{\begin{itemize}}{\end{itemize}}{\item}
\DeclareBibliographyDriver{article}{%
[\printdate{}]%
\newunit%
\printfield{title}%
}
\begin{document}
\nocite{*}
\printbibliography[env=description]
\end{document}
En lugar de interpretar la fecha impresa entre corchetes como un argumento opcional de la \item
llamada que la precede, esto imprime los corchetes como parte de la lista. Es decir, quiero que mi bibliografía esté escrita como si esto estuviera sucediendo:
\begin{itemize}
\item[<year>] <other stuff>
\end{itemize}
pero en lugar de eso lo entiendo como si esto estuviera sucediendo:
\begin{itemize}
\item[] [<year>] <other stuff>
\end{itemize}
¿Cómo puedo conseguir lo primero y no lo segundo?
Respuesta1
Puede agregar el argumento opcional en \defbibenvironment
. Es demasiado tarde en el controlador (oculto debajo de muchas capas de agrupación, por lo que \item
no verá el argumento opcional correctamente).
\documentclass{article}
\usepackage[date=year]{biblatex}
\defbibenvironment{description}
{\begin{itemize}}
{\end{itemize}}
{\item[\printdate]}
\DeclareBibliographyDriver{article}{%
\printfield{title}%
}
\begin{filecontents}{\jobname.bib}
@article{foo,
title = {SomeTitle},
author = {Doe, John},
date = {2024-04-27},
journaltitle = {Great Works}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography[env=description]
\end{document}