Amsart、natbib 和 endnotes 不兼容?

Amsart、natbib 和 endnotes 不兼容?

我无法让文档类amsart和包natbib协同endnotes工作。

举一个简单的例子:

\documentclass[10pt]{amsart}

\usepackage[round]{natbib}
\usepackage{endnotes}

\begin{document}

bla\endnote{bla}

\theendnotes

\end{document}

要么将文档类更改为 (eg) article\usepackage[round]{natbib}要么删除\theendnotes,然后一切正常。但这三者结合在一起会导致:

! Undefined control sequence.
<write> ...keUppercase {Notes}}{\let \@bibauthor
\@empty \let \@bibjournal ...
l.13 \end{document}

(我在这里删除了引文和参考书目,但这没有什么区别。)

有什么方法可以解决这个问题,或者这三个根本不兼容?(我确保我使用的是最新版本。)

答案1

问题是natbib留下了\@temptokena“脏东西”;这通常不是问题,但在使用的情况下却会出现,因为它还会写入目录中amsart声明的条目,这就是错误的原因。\section*

解决方法:

\documentclass[10pt]{amsart}

\usepackage[round]{natbib}
\usepackage{endnotes}

\begin{document}

bla\endnote{bla}

\begingroup\csname @temptokena\endcsname{}% empty off \@temptokena
\theendnotes
\endgroup

\end{document}

然而,有一个更新的软件包,enotez可以用来替代endnotes;顺便说一句,它具有更高的可定制性。

而不是\usepackage{endnotes}类型\usepackage{enotez}(并查阅其文档)。而不是\theendnotes

\printendnotes

应该使用。

相关内容