如果在 AMSRefs \bib 条目中使用 \DefineName 缩写,则无法识别“inverted”属性

如果在 AMSRefs \bib 条目中使用 \DefineName 缩写,则无法识别“inverted”属性

在 AMSRefs 第 8.1 节中包装文档,其中解释说,为了正确排版以姓氏开头的作者姓名,应该inverted在该姓名上设置属性;例如:将正确排版为“Li Lian Jie”(而不是“Li, Lian Jie”或“Lian Jie Li”)。如果调用选项或选项,则author={Li, Lian Jie}*{inverted={yes}}尝试强制使用author={Li Lian Jie}正确的名称将不起作用。initialsalphabetic

第 8.4 节解释说,人们可以像在任何条目中一样编写\DefineName{dmj}{Jones, David M.}并使用该缩写。author={dmj}\bib

但是,当我在条目中使用缩写时\bibinverted属性无法被识别。即使\bib条目中有多个作者,并且任何一个名称使用缩写输入,即使该名称不是要向其传递属性的名称,也会发生这种inverted情况。以下是 MCVE:

\documentclass{amsart}

\usepackage{amsrefs}

\DefineName{aut-f}{Author, First}
\DefineName{aut-s}{Author, Second}

\begin{document}

\begin{bibdiv}
\begin{biblist}

\raggedright

\bib{art1}{article}{
    author={Author, First}*{inverted={yes}},
    author={Author, Second}*{inverted={yes}},
    title={Title of the paper},
    journal={Journal of interesting results},
    volume={10},
    date={2021},
    number={3},
    pages={8\ndash 11},
    review={\MR{12345}},
}

\end{biblist}
\end{bibdiv}

\end{document}

上述示例的输出如下所示:

第一作者和第二作者,论文标题,有趣的结果杂志10(2021),第3期,8–11。MR12345

现在,如果我写author={aut-f}的不是author={Author, First},输出将变为:

第一作者和第二作者,论文标题,有趣的结果杂志10(2021),第3期,8–11。MR12345

也就是说,它的行为就像inverted属性未传递给任何条目一样。无论我如何混合和匹配属性inverted与缩写,输出仍与上面相同。

我也尝试添加*{inverted={yes}}命令\DefineName,但是却抛出了错误LaTeX Error: Missing \begin{document}

问题:我如何才能使inverted属性与缩写一起使用\DefineName


我试着看看文献来源,但我自己并没有真正收集到任何有用的东西。我注意到\DefineSimpleKey{prop}{inverted}在第 236 行定义了它,而在第 2450-2461 行有:

\def\set@name@a#1{%
    \begingroup
        \get@current@properties
        \select@auxlanguage
        \def\@tempa{yes}%
        \ifx\@tempa\prop’inverted
            \setbib@nameBE
        \else
            #1%
        \fi
    \endgroup
}

但是,我不确定如何将其与\DefineName第 1244 至 1246 行给出的定义联系起来:

\newcommand{\DefineName}[2]{%
    \bib*{#1}{name}{name={#2}}%
}

我还看了文档查找包rkeyval是否需要以某种方式将键值选项*{inverted={yes}}添加到命令的定义中\DefineName,但我再次没有从中得到太多信息(因为我太菜鸟了)。例如,在文档的第 3 页rkeyval提到了以下内容:

测试带有星号标记的尾随期权。用法:

\newcommand{\blub}[1]{\star@{\blubaux{#1}}{default}}

参数 1 是\star@要运行的代码,参数 2 是选项的默认值(可以为空)。如果参数 1 是\moo,则此测试将丢弃星号并扩展为(\moo如果找到星号),否则扩展为\moo{#2}。如示例所示,参数 1 不必是单个标记。

10 \def\star@#1#2{%
11     \def\star@a##1{#1}%
12     \def\star@b{#1{#2}}%
13     \futurelet\@let@token\star@test
14 }
15
16 \def\star@test{\ifx*\@let@token \let\star@b\star@a\fi \star@b}

也许这有关系?老实说,我有点迷茫。


我还注意到,如果我定义一个\DefineInvertedName类似于的\DefineName命令

\newcommand{\DefineInvertedName}[2]{%
    \bib*{#1}{name}{name={#2}*{inverted={yes}}}%
}

然后添加

\DefineInvertedName{aut-f1}{Author, First}
\DefineInvertedName{aut-s1}{Author, Second}

到上面 MCVE 中的序言中,并在条目中使用author={aut-f1}和,得到以下输出:author={aut-s1}\bib

第一作者和第二作者,论文标题,有趣的结果杂志10(2021),第3期,8–11。MR12345

也就是说,只有最后一个作者条目被倒置。当我创建\bib包含两个以上作者的条目时,也会发生同样的情况:只有最后一个作者条目被倒置。这可能是 AMSRefs 将多个作者条目串联在一起的方式的副产品,但我无法准确指出为什么会这样。

相关内容