Como posso especificar um argumento opcional para \item em um driver de bibliografia biblatex

Como posso especificar um argumento opcional para \item em um driver de bibliografia biblatex

Quero escrever um ambiente bibliográfico no biblatex baseado nas descriptionlistas de ambientes dos enumitems (quero fazer isso porque se encaixa em outras partes do documento que estou construindo). Assim como itemize, descriptionusa um argumento opcional itempara o rótulo de descrição. Quero escrever meu ambiente bibliográfico de forma que o ano de publicação seja definido neste argumento opcional. Parece que deveria funcionar, mas não funciona (usei itemizeem vez de descriptionaqui para tornar o exemplo o mais mínimo possível):

\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}

Em vez de interpretar a data impressa entre colchetes como um argumento opcional para a \itemchamada que a precede, isso imprime os próprios colchetes como parte da lista. Ou seja, quero meu conjunto de bibliografia como se isso estivesse acontecendo:

\begin{itemize}
\item[<year>] <other stuff>
\end{itemize}

mas em vez disso estou entendendo como se isso estivesse acontecendo:

\begin{itemize}
\item[] [<year>] <other stuff>
\end{itemize}

Como posso obter o primeiro e não o último?

Responder1

Você pode adicionar o argumento opcional em \defbibenvironment. É tarde demais no driver (escondido sob muitas camadas de agrupamento, de modo que \itemnão será possível ver o argumento opcional corretamente).

\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}

2024 “Algum título”

informação relacionada