biblatex 声明多个参考书目

biblatex 声明多个参考书目

我有三个书目,利用类别和关键词来区分所有条目

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

相关内容