![如果在 AMSRefs \bib 条目中使用 \DefineName 缩写,则无法识别“inverted”属性](https://linux22.com/image/436392/%E5%A6%82%E6%9E%9C%E5%9C%A8%20AMSRefs%20%5Cbib%20%E6%9D%A1%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8%20%5CDefineName%20%E7%BC%A9%E5%86%99%EF%BC%8C%E5%88%99%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%E2%80%9Cinverted%E2%80%9D%E5%B1%9E%E6%80%A7.png)
在 AMSRefs 第 8.1 节中包装文档,其中解释说,为了正确排版以姓氏开头的作者姓名,应该inverted
在该姓名上设置属性;例如:将正确排版为“Li Lian Jie”(而不是“Li, Lian Jie”或“Lian Jie Li”)。如果调用选项或选项,则author={Li, Lian Jie}*{inverted={yes}}
尝试强制使用author={Li Lian Jie}
正确的名称将不起作用。initials
alphabetic
第 8.4 节解释说,人们可以像在任何条目中一样编写\DefineName{dmj}{Jones, David M.}
并使用该缩写。author={dmj}
\bib
但是,当我在条目中使用缩写时\bib
,inverted
属性无法被识别。即使\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 将多个作者条目串联在一起的方式的副产品,但我无法准确指出为什么会这样。