我无法让文档类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
应该使用。