如何在 biblatex 书目驱动程序中为 \item 指定可选参数

如何在 biblatex 书目驱动程序中为 \item 指定可选参数

我想在 biblatex 中基于 enumitems 的description环境列表编写一个书目环境(我想这样做是因为它适合我正在构建的文档的其他部分)。像 一样itemizedescription使用可选参数作为item描述标签。我想编写我的书目环境,以便在此可选参数中设置出版年份。这似乎应该可以工作,但实际上却不行(我在这里使用了itemize而不是description以使示例尽可能简洁):

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

这不是将方括号中打印的日期解释为\item前面调用的可选参数,而是将方括号本身打印为列表的一部分。也就是说,我希望我的书目排版就像这样:

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

但相反,我得到的却是这样的情况:

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

我怎样才能得到前者而不是后者?

答案1

您可以在中添加可选参数\defbibenvironment。在驱动程序中为时已晚(隐藏在许多分组层下,因此\item无法正确看到可选参数)。

\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 “某标题”

相关内容