我想在 biblatex 中基于 enumitems 的description
环境列表编写一个书目环境(我想这样做是因为它适合我正在构建的文档的其他部分)。像 一样itemize
,description
使用可选参数作为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}