在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 中):