我有三个书目,利用类别和关键词来区分所有条目
\printbibliography[title={Publications related to theses},category=cited,heading=subbibliography,keyword=ownpub]
\printbibliography[title={Publications unrelated to theses},category=notcited,heading=subbibliography,keyword=ownpub]
\printbibliography[heading=bibintoc,resetnumbers=true,notcategory=cited,notcategory=notcited,notkeyword=ownpub]
我希望前两个与最后一个具有不同的样式。我在网上找到了一些命令来修改前两个的行为,使其按照我想要的方式工作(粗体作者姓名和不同的编号样式)。
编号:
\DeclareFieldFormat{labelnumberwidth}{{#1\adddot}}
名字:
\newcommand{\makeauthorbold}[1]{%
\DeclareNameFormat{author}{%
\edef\tempname{{Ferdinandy}}%
\ifnumequal{\value{listcount}}{1}
{\ifnumequal{\value{liststop}}{1}
{\expandafter\ifstrequal\tempname{##1}{\textbf{##1\addcomma\addspace ##4\addcomma\isdot}}{##1\addcomma\addspace ##4\addcomma\isdot}}
{\expandafter\ifstrequal\tempname{##1}{\textbf{##1\addcomma\addspace ##4}}{##1\addcomma\addspace ##4}}}
{\ifnumless{\value{listcount}}{\value{liststop}}
{\expandafter\ifstrequal\tempname{##1}{\textbf{\addcomma\addspace ##1\addcomma\addspace ##4}}{\addcomma\addspace ##1\addcomma\addspace ##4}}
{\expandafter\ifstrequal\tempname{##1}{\textbf{\addcomma\addspace ##1\addcomma\addspace ##4\addcomma\isdot}}{\addcomma\addspace ##1\addcomma\addspace ##4\addcomma\isdot}}%
}%
}%
}
查看biblatex
手册,我发现可以\DeclareFieldFormat
根据关键字应用,但这对我来说意味着,如果我用这个接触一个字段,我将必须自己提供默认行为(即,如果我的条件为真,就不可能覆盖默认行为,我必须同时提供真条件和假条件)。
\ifkeyword {〈keyword〉}{〈true〉}{〈false〉}
〈true〉
如果〈keyword〉
在当前正在处理的条目的关键字字段中找到,则执行,否则执行〈false〉
。
这是真的吗?或者有没有办法覆盖特定\printbibliography
实例的默认行为?后者会更直接,然后必须使用几个嵌套的 if(并且很可能多次列出默认行为)。如果是真的,我在哪里可以找到默认行为的定义?
答案1
您可以通过分组将重新定义保持在本地
{\DeclareFieldFormat{labelnumberwidth}{#1\adddot}
\printbibliography[category=cited, keyword=ownpub]
\printbibliography[category=notcited, keyword=ownpub]}
\printbibliography[resetnumbers=true, notcategory=cited, notcategory=notcited, notkeyword=ownpub]
或者
\begingroup
\DeclareFieldFormat{labelnumberwidth}{#1\adddot}
\printbibliography[category=cited, keyword=ownpub]
\printbibliography[category=notcited, keyword=ownpub]
\endgroup
\printbibliography[resetnumbers=true, notcategory=cited, notcategory=notcited, notkeyword=ownpub]
在某些情况下,这可能比\seveformat
/更有效\restoreformat
,但在某些情况下也可能不太优雅。
答案2
savefieldformat
我实际上找到了使用和的解决方案restorefieldformat
。不过看起来不太优雅。
\savefieldformat{labelnumberwidth} %save current settings
\DeclareFieldFormat{labelnumberwidth}{{#1\adddot}} %modify for following printbibliographies
\printbibliography[title={Publications related to theses},category=cited,heading=subbibliography,keyword=ownpub]
\printbibliography[title={Publications unrelated to theses},category=notcited,heading=subbibliography,keyword=ownpub]
\restorefieldformat{labelnumberwidth} %restore what we saved
\printbibliography[heading=bibintoc,resetnumbers=true,notcategory=cited,notcategory=notcited,notkeyword=ownpub]