我想更新一些使用旧版 LaTeX 模板得到的参考书目修改。我确实知道 BibLaTeX 3.3 有一些变化,但我似乎遗漏了一些东西,因为 latex 仍然告诉我“\blx@defformat@d 定义中的参数编号非法。”。也许你们中的一个人可以告诉我除了另一个帖子中已经提到的内容之外还发生了哪些变化。
\DeclareFieldFormat[inreference]{title}{\bibstring{inrefstring}\addspace#1}
\renewcommand*{\newunitpunct}{\addcomma\space} %Comma instead of Point
\DeclareFieldFormat[article]{title}{{#1}} %keine Anführungszeichen mehr
\DeclareNameFormat{sortname}{
{\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}}
\AtBeginBibliography{%Bold Authors in Literature
\renewcommand*\mkbibnamegiven[1]{\bfseries{#1}}
\renewcommand*\mkbibnamefamily[1]{\bfseries{#1}}
\renewcommand*\mkbibnameprefix[1]{\bfseries{#1}}
\renewcommand*\mkbibnameaffix[1]{\bfseries{#1}}
\DeclareFieldFormat{year}{\bfseries{#1}}
\DeclareFieldFormat{labelyear}{\bfseries{\mkbibemph{\mknumalph{#1}}}}
}
答案1
对于 3.3 之前代码的更改,一般建议参见Biblatex 3.3 名称格式。主要思想是您必须#1
用宏(如)替换参数(如\namepartfamily
)。不过,这里有些事情更容易。
\DeclareNameFormat{sortname}{
{\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}}
应该
\DeclareNameAlias{sortname}{given-family}
使用相当新的biblatex
。(即使是 3.3 之前的版本,也最好将其写为 ,\DeclareNameAlias{sortname}{first-last}
而不是诉诸\usebibmacro{name:...}
。)
\renewcommand*\mkbibnamegiven[1]{\bfseries{#1}}
\renewcommand*\mkbibnamefamily[1]{\bfseries{#1}}
\renewcommand*\mkbibnameprefix[1]{\bfseries{#1}}
\renewcommand*\mkbibnameaffix[1]{\bfseries{#1}}
可以简化为
\renewcommand*\mkbibcompletename[1]{\mkbibbold{#1}}
请注意,\bfseries
是一个应用作 的开关{\bfseries <text>}
。用作 时,\bfseries{<text>}
粗体会泄露。宏形式是\textbf
,但其biblatex
版本是\mkbibbold
。因此,在 3.3 之前,这仍然是糟糕的风格。
\DeclareFieldFormat{labelyear}{\bfseries{\mkbibemph{\mknumalph{#1}}}}
看起来非常可疑:年份通常不以“字母”形式给出。由于biblatex
's\mknumalph
无法处理 702 以上的数字,因此它永远不会像名称所宣传的那样。此外,格式labelyear
实际上并未使用,因此无论如何这都没有效果。