![文档类书籍的标题中有短标题,但不是目录](https://linux22.com/image/385612/%E6%96%87%E6%A1%A3%E7%B1%BB%E4%B9%A6%E7%B1%8D%E7%9A%84%E6%A0%87%E9%A2%98%E4%B8%AD%E6%9C%89%E7%9F%AD%E6%A0%87%E9%A2%98%EF%BC%8C%E4%BD%86%E4%B8%8D%E6%98%AF%E7%9B%AE%E5%BD%95.png)
我希望在标题中使用章节和节的简短标题,但在目录中应该出现长标题。
我正在使用book
文档类和包fancyhdr
。
\section[short title]{long title}
为我提供了我想要的标题,但简称也放在了目录中。
就我的情况来说,这并没有奏效:目录中未显示的短标题 {hyperref}
答案1
以下内容更新了在课程中设置章节和部分标题时使用标记的方式book
:
\documentclass{book}
\usepackage{fancyhdr,lipsum}
\makeatletter
% Update how \chapter is added to the ToC/header
\let\oldchaptermark\chaptermark
\renewcommand{\chaptermark}[1]{\oldchaptermark{\@chaptermark}}% Used stored chapter mark
\let\old@chapter\@chapter
\def\@chapter[#1]#2{%
\def\@chaptermark{#1}% Store chapter mark
\old@chapter[#2]{#2}%
}
% Update how \section and \subsection is added to the ToC/header
\let\oldsectionmark\sectionmark
\renewcommand{\sectionmark}[1]{\oldsectionmark{\@sectionmark}}% Used stored section mark
\let\oldsubsectionmark\subsectionmark
\renewcommand{\subsectionmark}[1]{\oldsubsectionmark{\@subsectionmark}}% Used stored subsection mark
\let\old@sect\@sect
\def\@sect#1#2#3#4#5#6[#7]#8{%
\@namedef{@#1mark}{#7}% Store sectional mark
\old@sect{#1}{#2}{#3}{#4}{#5}{#6}[#8]{#8}%
}
\makeatother
\begin{document}
\tableofcontents
\sloppy % Just for this example
\chapter[Chapter short title]{Chapter long title}
\lipsum[1-50]
\section[Section short title]{Section long title}
\lipsum[1-50]
\end{document}
答案2
如果您愿意更改为该类memoir
(包含该类book
和该包的等效项fancyhdr
),那么:
\chapter[<toc-title>][<head-title>]{<title>}
\section[<toc-title>][<head-title>]{<title>}
放入<toc-title>
目录、<head-title>
页眉和<title>
文档正文中。同样,相同的构造也适用于\subsection
、\subsubsection
等。