我写了一篇文章,有位作者贡献了一份附录。他建议我使用命令\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}