我正在使用 TexShop,因为没有类似导航的东西(或者至少我不知道如何创建它)并且我的文档包含大约 200-300 页,所以我尝试使用该包fancyhdr
和在我的 PDF 文件的页脚中构建自己的导航\nameref
。
问题是我的标题很长。我使用短标题来缩短它们,但现在我的目录也被缩短了。我想知道是否有可能在\nameref
将完整标题放入目录中的同时使用短标题。
如果有人知道解决方案就太好了。提前谢谢。
你好,我们又见面了,
正如您所要求的,代码最少。代码如下(我希望代码最少,因为我对这个东西比较陌生):
\documentclass{book}
\usepackage[colorlinks,cross-references,bookmarks=true]{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lfoot{\nameref{S:A}, \nameref{S:B}, \nameref{S:C}}
\begin{document}
\tableofcontents
\newpage
\section[Intro]{Vorbemerkung}\label{S:A}
\newpage
\section[Paul]{Paul ist ein Mann von Format}\label{S:B}
\newpage
\section[Klaus]{Klaus}\label{S:C}
\end{document}
@Caramdir:我的 TexShop 以自己的 pdf 显示文档,这使我能够通过单击“苹果 + 鼠标”从此 pdf 切换到 tex 文件并返回,这是我的导航工具之一,其工作方式如下:我转到 pdf 的目录,通过超链接转到我想要的部分,然后在文档中单击“苹果 + 鼠标”以精确到达 tex 文档中的相同点。我知道许多步骤,但我看不到其他方法。通过将超文本放在标题中,我可以改进这个过程,因为我可以轻松地跳回到目录附近(精确到第一章)。
当我使用其他程序打开文档时,“苹果 + 鼠标”选项不起作用,这就是为什么您的建议在这种情况下没有帮助。
答案1
如果要保留目录中部分单元的强制参数的内容,同时使用页眉/页脚中的可选参数的内容,则需要重新定义命令\@part
(控制部分的信息)、\@chapter
(控制章节的信息)和 \@sect
(控制其他部分单元的信息)。以下是重新定义的示例代码(\makeatletter
和之间的行\makeatother
):
\documentclass{book}
\usepackage[colorlinks,bookmarks=true]{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lfoot{\nameref{S:A}, \nameref{S:B}, \nameref{S:C}}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#2}%
\else
\addcontentsline{toc}{part}{#2}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname~\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par}%
\@endpart}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#2}%
\else
\addcontentsline{toc}{chapter}{#2}%
\fi
\else
\addcontentsline{toc}{chapter}{#2}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
#6{%
\@hangfrom{\hskip #3\relax\@svsec}%
\interlinepenalty \@M #8\@@par}%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#8}%
\else
\def\@svsechd{%
#6{\hskip #3\relax
\@svsec #8}%
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#8}}%
\fi
\@xsect{#5}}
\makeatother
\begin{document}
\tableofcontents
\part[Short part title]{A part title not so short}
\chapter[Short title]{A really really really really really really really long title}
\section[Intro]{Vorbemerkung}\label{S:A} \newpage
\section[Paul]{Paul ist ein Mann von Format}\label{S:B} \newpage
\section[Klaus]{Klaus}\label{S:C}
\end{document}