部分书签和目录样式

部分书签和目录样式

book.cls课堂上,我重新定义了\part部分以定制相应的目录条目,如下所示:

\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\noindent\fcolorbox{ocre}{black!5}{\protect\makebox[\linewidth-2\fboxsep]{\Large\sffamily\strut #1}}}%
\else%
...

问题是 不知\fcolorbox何故与 pdf 文件中创建的部分书签不匹配。例如,parttitle我在构建的 pdf 文件中得到的不是 ,而是以下书签:

push0 g 0 Gpop[-2]parttitleocreblack!5push0 g 0 Gpoptowidthheightdepthottheight-0.5 -widthheightdepthd- widthheightdepthheightted

我已经尝试了一些\protect命令,但到目前为止还没有成功。您是否知道一种系统的方法来纠正此行为。如果没有,我仍然可以直接在 pdf 中重新定义部分标题。

答案1

像这样:

\documentclass{book}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{calc}

\makeatletter

\def\@myparttocformat #1{\noindent
    \fcolorbox{cyan}{black!5}
       {\makebox[\linewidth-2\fboxsep-\@pnumwidth]{\Large\sffamily\strut #1}}}

\def\@part[#1]#2{%
  \ifnum \c@secnumdepth >-2\relax 
    \refstepcounter{part}%
    \addcontentsline {toc}{part}
     {\texorpdfstring{\protect\@myparttocformat{#1}}{#1}}%
  \else
 \addcontentsline {toc}{part}{#1}\fi \markboth {}{}{\centering \interlinepenalty \@M \normalfont \ifnum \c@secnumdepth >-2\relax \huge \bfseries \partname \nobreakspace \thepart \par \vskip 20\p@ \fi \Huge \bfseries #2\par }\@endpart }

\makeatother

\begin{document}
\tableofcontents

\part{Hello}

\chapter{A chapter}

world

\end{document}

我这样做是为了接近你的 mwe 骨架,然而,我更愿意重新定义\l@part。(不知道在哪个设备名称中ocre定义了 xcolor 选项)

当然,超链接将只出现在零件的实际名称上,而不是像这里一样出现在整个阴影和框架上。但整体会更清晰。

目录

显示书签(现在在 Acrobat 中):

使用 acroread 的目录

相关内容