我想根據 enumitems 的description
環境列表在 biblatex 中編寫一個參考書目環境(我想這樣做是因為它適合我正在構建的文檔的其他部分)。與 一樣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}