修复 amsart.cls 目录中有关带星号部分的错误?

修复 amsart.cls 目录中有关带星号部分的错误?

该命令\section*旨在生成目录中未列出的部分。但是,当使用 amsart.cls 时,这些部分仍会列出。我相信这是一个已知的错误。

我该如何解决这个问题,即生成一个未在目录中列出的未编号部分,同时仍然使用 amsart.cls?

谢谢!

例如,编译以下内容两次会在目录中产生错误条目:

\documentclass{amsart}  
\begin{document}  
\setcounter{tocdepth}{2}  
\tableofcontents  
\section{Numbered}  
\section*{Still here}  
\end{document}

答案1

carsten 的回答——这是 ams 风格——是正确的。

在 ams-latex 集合的下一次更新中,amsclass 手册将包含一个附录,列出 ams 类和基本 latex 等效类之间的差异。但目录中带星号的标题的包含不会改变。

要从目录中删除不需要的条目,请参阅 ams 作者常见问题解答中的此条目:http://www.ams.org/faq?faq_id=238。请注意,\SkipTocEntry 的定义方式取决于是否使用了 hyperref 包。(我们将考虑在升级中包含这样的命令 - 并设置一个安全措施来处理 hyperref 的存在与否,如果一切顺利,预计将在今年晚些时候完成。)

答案2

我承诺过会给出另一个答案,下面是大纲。

创建两个新命令,\noTOC\TOConly应用于标题参数内的文本。对于目录,\def\noTOC#1{}忽略其参数并\def\TOConly#1{#1}设置此材料;设置标题本身时,\def\TOConly#1{}忽略并\def\noTOC#1{#1}输出。

在 ams,我们在生产中使用这种技术,定义隐藏在配置文件中。其中一些定义嵌入在其他相当复杂的定义中,我尚未设法找出一组最小的定义,这些定义可以添加到文档的序言中,而不会弄乱其他任何内容。部分问题在于必须同时正确处理运行头。作者已经要求提供此功能,它是我们在下次升级 ams 文档类时要考虑并可能实施的事项之一。但我希望在此之前有一个独立的补丁,我会在这里发布。

此方法对于两个仅有细微差别的标题版本非常有效,例如在目录或文内标题中添加换行符(但不能同时在两者或在不同位置添加),或者省略或更改几个单词。但是,为两个位置提供完全不同的文本可能同样有效。

相关内容