在 biblatex 自定义样式中使用 et al.

在 biblatex 自定义样式中使用 et al.

我一直在研究一种自定义的 biblatex 样式,我希望参考书目最多显示 2 位作者,这意味着条目应该是:

  • 第一(单一作者)
  • 第一和第二(两位作者)
  • 第一等(三人及以上)

\printnames[][1-3]{author}\space我想出了以下名称格式,并在命令中向其输入前三位作者\DeclareBibliographyDriver

%%%% authors
\DeclareNameFormat{author}{%
    \ifthenelse{\value{listcount}=1}%
        {#1 \ifblank{#4}{}{\addcomma\space #4}}%
        {%
            \ifthenelse{\value{liststop}=2}%
                {\space\&\space\ifblank{#4}{}{#4\space}#1}%
                {%
                    \ifthenelse{\value{listcount}=3}%
                        {\space}%
                        {, et~al.}%
                }%
        }%
    }%

它运行得很好,但考虑到我打算转到 biblatex,我希望有一个非常干净的代码,所以问题基本上是:如何改进它?

答案1

那么编辑或翻译人员的名单呢?如果您想在整个过程中应用相同的截断,只需使用包选项maxnames=2。其余部分通过重新定义来实现\finalnamedelim- 一个宏,它在名单中的最后一项之前设置分隔符。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,maxnames=2]{biblatex}

\renewcommand*{\finalnamedelim}{\addspace\&\space}

\addbibresource{biblatex-examples.bib}

\begin{document}
Filler text \parencite{bertram,companion,jaffe,moraux}.
\printbibliography
\end{document}

在此处输入图片描述

上述示例文档在引文和参考书目中都采用了该格式。若要将其仅限于参考书目,请使用选项maxbibnames=2

\renewcommand*{\finalnamedelim}{%
  \ifbibliography
    {\addspace\&\space}
    {\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
     \addspace\bibstring{and}\space}}

如果您真的决心要定义自己的风格,我会使用 中的通用名称格式biblatex.def作为起点。您的格式在名称分隔符(\bibnamedelim...)、名称部分格式(\mkbibname...、大小写、首字母、顺序等)、消除虚假空格(\addspace)和本地化(\bibstring{andothers})方面与这些格式不同。除非您将类似的格式应用于editor、、bookauthortranslator,否则您的名称列表将显得不一致。

相关内容