amsart 中的贡献者无法工作

amsart 中的贡献者无法工作

我写了一篇文章,有位作者贡献了一份附录。他建议我使用命令\contrib[With an appendix by]{sb.}。但是我不知道为什么它不起作用。当我编译时,它显示:未定义的控制序列。

\documentclass{amsart}
\begin{document}
\title{title}
\author{names}
\contrib[With an appendix by]{sb}
\maketitle
content
\end{document} 

我是否需要输入一些新包来运行\contrib?提前致谢!

答案1

正如评论中提到的,这可以通过添加来解决

\makeatletter
\let\@wraptoccontribs\wraptoccontribs
\makeatother

你的序言。

根据此链接,这是类中的一个错误ams。所有功劳都归功于 Google 论坛的 Enrico Gregorio。

答案2

这是一个非常古老的错误,amsart.cls我似乎在 2007 年就分析过它。comp.text.tex 线程

以下是中的相关行amsart.cls,其中错误出现在第 495 行:

480 \newcommand\contrib[2][]{%
481   \def\@tempa{#1}%
482   \ifx\@empty\@tempa
483   \else
484     \ifresetcontrib \@xcontribs
485     \else \global\resetcontribtrue
486     \fi
487   \fi
488   \ifx\@empty\contribs
489     \gdef\contribs{#1 #2}%
490   \else
491     \g@addto@macro\contribs{\and#1 #2}%
492   \fi
493   \@wraptoccontribs{#1}{#2}%
494 }
495 \def\wraptoccontribs#1#2{}

正确的代码应该是

495 \def\@wraptoccontribs#1#2{}

宏只是一个钩子,如果要将论文作为对某些卷的贡献插入,则可能用于一些内部处理。

解决方法是添加

\makeatletter
\let\@wraptoccontribs\wraptoccontribs
\makeatother

文件序言。

\documentclass{amsart}

\makeatletter
\let\@wraptoccontribs\wraptoccontribs
\makeatother

\begin{document}
\title{title}
\author{names}
\contrib[With an appendix by]{sb}
\maketitle
content
\end{document} 

在此处输入图片描述

相关内容