我有以下部分标题:
\subsection[Einfluss auf das Standardfranz.]{Einfluss auf das Standardfranzösisch}\label{standardFranz}
[...] 之间的文本较短,因为我需要页面标题中较短的标题。
这很好,但我需要将完整的章节标题放在目录中。我该如何实现?目前,它需要目录的 [...] 之间的文本,但我希望它需要 {...} 之间的文本。
答案1
您可以暂时避免\section
设置通常设置\sectionmark
,然后在该部分之后手动进行设置:
\documentclass{article}
\usepackage{lipsum}
\pagestyle{headings}
\newcommand{\gobble}[1]{}% Similar to \@gobble
\begin{document}
\tableofcontents
\lipsum[1-7]
{\let\sectionmark\gobble% Avoid setting \sectionmark
\section{A section}}% Set \section
\sectionmark{A different sectional heading}% Set actual mark
\lipsum[1-20]
\end{document}
我们将 的放置\section
与\gobble
的组合在一起\sectionmark
。
答案2
这是标准类的缺陷之一:在我看来,短标题(分段命令的可选参数)应该只用于页眉,而不是目录。
这是标准类(article
、report
和book
)的一组补丁。其他类(例如memoir
或 KOMA)有自己的方法来解决问题。
\documentclass{book}
\usepackage{etoolbox}
\usepackage{lipsum} % just for the example
\makeatletter
% the following three lines only if the class is report or book
\patchcmd{\@chapter}{#1}{#2}{}{} % #1 is the optional argument
\patchcmd{\@chapter}{#1}{#2}{}{} % #2 is the mandatory argument
\patchcmd{\@chapter}{#1}{#2}{}{}
%%%
\patchcmd{\@sect}{\fi#7}{\fi#8}{}{} % #7 is the optional argument
\patchcmd{\@sect}{\fi#7}{\fi#8}{}{} % #8 is the mandatory argument
\makeatother
\begin{document}
\tableofcontents
\chapter[Short chapter title]{A long long chapter title}
\section[Short title]{A long long section title}
\lipsum[1-20]
\end{document}
以下是目录的图片:
以下是标题的图片: