抱歉,如果这个问题已经出现在其他地方,我找不到它。
有没有办法在文本中标记某个部分但在目录中赋予它不同的名称?
我的章节标题很长,但我想在目录中给它们起个昵称。我尝试使用,\section*{A}
但这\addcontentsline{toc}{section}{B}
会从正文中删除章节的编号。
我对 LaTeX 还很陌生,所以如果这个问题让你烦恼的话,我很抱歉!
答案1
大多数文档类都为用户提供了为部分单元指定不同的 ToC 相关条目的选项,该选项通过可选参数显示在实际文档主体中:
\part[<ToC-part>]{<Body-part>}
\chapter[<ToC-chapter>]{<Body-chapter>}
\section[<ToC-section>]{<Body-section>}
\subsection[<ToC-subsection>]{<Body-subsection>}
\subsubsection[<ToC-subsubsection>]{<Body-subsubsection>}
...
这样就可以有效地创建与实际文档中包含的内容完全不同的目录。但是,它提供了许多优点,包括:
缩写 ToC 相关内容,否则这些内容会显得尴尬或没有意义;
当读者查看目录时,删除未定义的部分单元的符号;
将“奇异的”事物作为标题的一部分;
...
\documentclass{report}
\usepackage{graphicx}
\begin{document}
\tableofcontents
\chapter[Interesting]{A very long chapter title that is not necessary in the ToC}
\section[Some math]{The graph $G\langle m,n;k\rangle$}
\subsection[Pictures]{The image \includegraphics[height=\baselineskip]{example-image}}
\end{document}
常见用法(除上述用法外)源于这样一个事实:分节单元的强制论据最终会移动。也就是说,它们会进入您放置它的文本,也会进入目录中。而且,移动论据有时脆弱的,因此必须小心处理它们可能包含的内容。可选参数提供了一种简单的解决方法,可以删除“不需要的”内容并指定您自己的内容。
答案2
作为@Werner 答案的评论式扩展:
文档类 amsbook 是那些不提供可选参数的类之一,这些参数用于章节、节、小节等与目录相关的命名。但是,通过文档,第 14 页,有替代命令\except{toc}{}
和\for{toc}{}
分别控制哪些内容不进入目录以及哪些内容仅进入目录。
替换\chapter[name for TOC]{name for main text}
为
\documentclass{amsbook}
\begin{document}
\chapter{\for{toc}{name for TOC}\except{toc}{name for main text}}
然后给出相同的结果。
有时这甚至可以节省重复的公共部分,例如
\chapter{name common to TOC and main text
\except{toc}{with additional details only in main text}}