Wie kann ich ein optionales Argument für \item in einem Biblatex-Bibliographietreiber angeben?

Wie kann ich ein optionales Argument für \item in einem Biblatex-Bibliographietreiber angeben?

Ich möchte eine Bibliografieumgebung in Biblatex schreiben, die auf descriptionden Umgebungslisten von Enumitems basiert (ich möchte dies tun, weil es zu anderen Teilen des Dokuments passt, das ich erstelle). Wie itemizeverwendet descriptionein optionales Argument itemfür die Beschreibungsbezeichnung. Ich möchte meine Bibliografieumgebung so schreiben, dass das Veröffentlichungsjahr in diesem optionalen Argument festgelegt wird. Dies scheint zu funktionieren, tut es aber nicht (ich habe hier itemizeanstelle von verwendet description, um das Beispiel so minimal wie möglich zu halten):

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

Anstatt das in eckigen Klammern gedruckte Datum als optionales Argument für den \itemvorangehenden Aufruf zu interpretieren, werden hier die eckigen Klammern selbst als Teil der Liste gedruckt. Ich möchte also, dass meine Bibliografie so gesetzt wird, als ob dies passieren würde:

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

aber stattdessen habe ich das Gefühl, dass Folgendes passiert:

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

Wie kann ich Ersteres bekommen und Letzteres nicht?

Antwort1

Sie können das optionale Argument in hinzufügen \defbibenvironment. Im Treiber ist es zu spät (versteckt unter vielen Gruppierungsebenen, sodass \itemdas optionale Argument nicht richtig angezeigt wird).

\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 „IrgendeinTitel“

verwandte Informationen