Ich möchte eine Bibliografieumgebung in Biblatex schreiben, die auf description
den Umgebungslisten von Enumitems basiert (ich möchte dies tun, weil es zu anderen Teilen des Dokuments passt, das ich erstelle). Wie itemize
verwendet description
ein optionales Argument item
fü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 itemize
anstelle 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 \item
vorangehenden 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 \item
das 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}