书目中第一作者以姓氏开头,名字开头,后续作者以名字开头

书目中第一作者以姓氏开头,名字开头,后续作者以名字开头

《澳大利亚法律引文指南》第 3 版规定,对于参考书目,书籍条目应以姓氏、名字的形式显示第一作者,然后所有后续作者都以名字、姓氏的形式显示,例如

Cook、Catriona、Robin Creyke 和 Robert Geddes

下面的宏通过按最后、第一顺序打印出第一个作者条目,然后如果后面没有“et al”,则添加逗号和空格来实现这一点。但我发现这不起作用。我尝试使用测试,\ifandothers但它似乎总是返回 false。因此,对于“et al”条目,我最终得到:

Cook、Catriona 等人

我正在尝试使用下面的宏来实现这一点。我已经花了好几个小时,而且我对 LaTeX 和 biblatex 还很陌生,所以我很沮丧,把剩下的头发都拔掉了。

我使用的宏是否正确?我怀疑这是一个新手错误。任何帮助我都会很感激。

附言:我甚至还没有接触到宏的编辑器部分。

PPS:此代码来自 aglc2.cbx,它是 Will Hardy 的 AGLC 风格的一部分,发布于http://github.com/willhardy/aglc

\newbibmacro{author/editor:lastnamefirst}{%
\ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
    {\ifuseauthor{%
    \ifandothers{author}{%
        \printnames[sortname][1-1]{author}%
        \printnames[default][2-2]{author}%
    } {%
        \printnames[sortname][1-1]{author}%
        \addcomma\addspace%
        \printnames[default][2-3]{author}%
        }%
    }{}}%
    {\ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}}{\printnames[sortname]{editor}}{}}%
}

更新:响应@lockstep 的建议,这里有一些代码显示我无法让 \DeclareNameAlias 工作:

\documentclass[titlepage]{article}
\usepackage[style=aglc2,backend=biber]{biblatex}
\DeclareNameAlias{default}{last-first/first-last}
\bibliography{week1}

\begin{document}
Test citations here:\footcite{ldtl7} and here:\footcite{ldtl7a}
\printbibliography
\end{document}

这是 bib 文件:

@BOOK{ldtl7,
  year       = 2009,
  author     = {Catriona Cook and Robin Creyke and Robert Geddes and David Hamer},
  title      = {Laying Down the Law},
  edition    = 7,
  publisher  = {LexisNexis Butterworths}
}
@BOOK{ldtl7a,
  year       = 2009,
  author     = {Catriona Cook and Robin Creyke and Robert Geddes},
  title      = {Laying Down the Law2},
  edition    = 7,
  publisher  = {LexisNexis Butterworths}
}

输出如下:

References
Cook, Catriona, Robin Creyke and Robert Geddes, Laying Down the Law2 (LexisNexis Butterworths, 7th ed, 2009)
Cook, Catriona, Robin Creyke et al, Robert Geddes, Laying Down the Law (LexisNexis Butterworths, 7th ed, 2009)

脚注中写道:

1 Cook, Catriona, Robin Creyke et al, Robert Geddes, Laying Down the Law (LexisNexis Butterworths, 7th ed, 2009).
2 Cook, Catriona, Robin Creyke and Robert Geddes, Laying Down the Law2 (LexisNexis Butterworths, 7th ed, 2009).

答案1

没有必要定义新的宏。尝试以下操作:

\documentclass{article}

\usepackage[style=verbose]{biblatex}

\AtBeginBibliography{%
  \DeclareNameAlias{default}{last-first/first-last}%
}
\renewcommand*{\finalnamedelim}{%
%   \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% DELETED
  \addspace\bibstring{and}\space}

\usepackage{filecontents}

\begin{filecontents}{biblatextest.bib}
@book{CCG01,
  author = {Cook, Catriona and Creyke, Robin and Geddes, Robert},
  year = {2001},
  title = {Alpha},
}
\end{filecontents}

\addbibresource{biblatextest.bib}

\begin{document}

Some text \autocite{CCG01}.

\printbibliography

\end{document}

编辑:示例已更新以使用\AtBeginBibliography

(filecontents 环境仅用于将一些外部文件直接包含到示例中,以便进行编译。对于解决方案来说,它不是必需的。)

答案2

我认为我已经解决了这个问题,尽管我不太清楚为什么。似乎有两个问题需要解决。第一个是我问的,即:如何让只有第一位作者以倒数第一的形式出现,而后续作者以倒数第一的形式出现。为了解决这个问题,我修改了 aglc2.cbx sortname DeclareNameFormat。现在看起来像这样:

\DeclareNameFormat{排序名称}{%
        \ifthenelse{\value{列表计数}=1}
                {
                        \usebibmacro{名称:姓-名}{#1}{#3}{#5}{#7}%
                        \usebibmacro{名称:其他}
                }
                {
                        \ifthenelse{\value{listcount}>1\and\value{listtotal}>\value{liststop}}
                        {}
                        {%
                            \usebibmacro{名称:姓氏}{#1}{#3}{#5}{#7}%
                        }%
                }
}

我非常有信心这是一个不错的解决方案。

奇怪的是我如何修复“et al”的位置。我知道我做了什么,但我不知道它为什么有效。我不得不做两点改变。第一个是删除这个宏:

\renewbibmacro*{名称:其他}{%
  \ifthenelse{\value{listtotal}>\value{liststop}\AND\value{listcount}=2\AND\ifmorenames}%
    {\addspace\bibstring{其他}}%
    {}}

这个宏的存在似乎是根本没有打印“et al”的原因。

第二个改变是改变这个:

\renewbibmacro*{作者}{%
  \ifuseauthor
    {\printnames[][1-3]{作者}}
    {}}

对此

\renewbibmacro*{作者}{%
  \ifuseauthor
    作者
    {}}

这似乎是“et al”出现在第二作者之后而不是第一作者之后的原因。我不知道为什么。但现在这些改变已经完成,风格似乎已经正常。

所以我想我已经到了!我很想了解更多关于最后两个变化的信息,这样它们以后就不会困扰我了,但至少我现在处于我想要的状态……至少现在是这样。

感谢所有提供帮助的人。与你们所有人的讨论使这一切成为可能。我感谢你们的指导。

相关内容