我正在尝试在 biblatex 中添加一个用户选项,以在两种显示 DOI 的方式之间进行选择,但如果该选项是由用户在序言中发出的,则我无法使该选项生效。
为了说明我的问题,我准备了下面的 MWE。test.bbx
样式加载authoryear.bbx
并添加选项compactdois
。如果我在 bbx 文件中将选项设置为 true(viaExecuteBibliographyOptions
或 via settoggle
),DOI 实际上会以紧凑的方式显示。但是以三种方式(作为包选项、viaExecuteBibliographyOptions
或 via settoggle
)中的任何一种在文档序言中发出命令都不起作用。
我做错了什么?我希望能够在文档序言中设置该选项,而不是在样式中一劳永逸地设置bbx
。
梅威瑟:
\documentclass{minimal}
\begin{filecontents}{\jobname.bib}
@Article{abbott-1997-NoteNatureWater,
author = {Abbott, Barbara},
title = {A Note on the Nature of {\emph{Water}}},
journal = {Mind},
year = 1997,
volume = 106,
number = 422,
pages = {311-319},
doi = {10.1093/mind/106.422.311}
}
\end{filecontents}
\begin{filecontents}{test.bbx}
\RequireBibliographyStyle{authoryear}
\newtoggle{test:compactdois}
\DeclareBibliographyOption[boolean]{compactdois}[true]{%
\settoggle{test:compactdois}{#1}}
% \ExecuteBibliographyOptions{compactdois} % works
% \settoggle{test:compactdois}{true} % works
\iftoggle{test:compactdois}%
{\DeclareFieldFormat{doi}{%
\mkbibacro{DOI}\addcolon\space{#1}}}
{\DeclareFieldFormat{doi}{%
\url{https://doi.org/#1}}}
\end{filecontents}
\usepackage[backend=biber,bibstyle=test]{biblatex}
%\usepackage[backend=biber,bibstyle=test,compactdois]{biblatex} % no effect
% \ExecuteBibliographyOptions{compactdois} % no effect
% \settoggle{test:compactdois}{true} % no effect
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography[heading=none]
\end{document}