我正在尝试编写自己的类,但是我没有使用hyperref
包,但以下代码可以正常工作。
\newcommand\chaptindent{\advance\leftskip 1.0em \hskip -\leftskip}
\newcommand\appenindent{\advance\leftskip 6.0em \hskip -\leftskip}
\def\@chapter[#1]#2{
\ifnum \c@secnumdepth > \m@ne
\if@mainmatter
\refstepcounter{chapter}%
\addcontentsline{toc}{chapter}%
{\chaptindent\protect\numberline{\thechapter}\MakeUppercase{#1}}%
\else
\refstepcounter{chapter}
\addcontentsline{toc}{chapter}%
{\appenindent\nobreak\@chapapp\space\protect\numberline{
\thechapter}\space{#1}}
\fi
\else
\addcontentsline{toc}{chapter}{\MakeUppercase{#1}}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\@makechapterhead{#2}%
\@afterheading}
在我包含hyperref
包之后,附录 ToC 行移到了左边框。
移除\chaptindent
并\appenindent
重新\@chapter
定义,获得 ToC 且没有任何僵持
尝试使用\def\l@chapter{\@dottedtocline{1}{0.0em}{1.0em}}
命令修复此问题,但章节和附录行的缩进相同。
如何才能使 ToC 附录与使用hyperref
包正确对齐?
答案1
我已经解决了这个问题。所以有一个解决方案可能对某些人有用。附录与章节相同,因此要在目录中显示它们,请使用与章节相同的命令,即。\l@chapter
此命令是在\contentsline{chapter}{...
处理项目时形成的。为了区分章节和附录,需要\contentsline
在 .toc 文件中形成不同的项目,如下所示\contentsline{chapter}{...
和\contentsline{appendix}{...
。为了处理
\contentsline{appendix}{...
它,需要执行\l@appendix
命令。在此之后,我有机会在目录形成时单独处理章节和附录。
\def\@chapter[#1]#2{\ifnum\c@secnumdepth>\m@ne%
\if@mainmatter%
\refstepcounter{chapter}%
\addcontentsline{toc}{chapter}%
{\protect\numberline\thechapter\texorpdfstring{\MakeUppercase{#1}}{#1}}%
\else%
\refstepcounter{chapter}%
\phantomsection
\addcontentsline{toc}{appendix}%
{\texorpdfstring{\@chapapp\space\protect\numberline\thechapter\space#1}
{\@chapapp\space\thechapter\space#1}}%
\fi%
\else%
\addcontentsline{toc}{chapter}{#1}%
\fi%
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\@makechapterhead{#2}%
\@afterheading}
因此此代码生成以下 .toc 文件内容
...
\contentsline {chapter}{\numberline 2\MakeUppercase {\IeC ...
...
\contentsline {appendix}{{\Ukrainian \CYRD ...
由两个命令处理
\renewcommand\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\vskip \z@ \@plus.2\p@
{\leftskip 0.0em\relax \rightskip \@tocrmarg plus 15em \parfillskip -
\rightskip%mod <plus 15em> for avoid hyph. in TOC
\parindent 0.0em\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima 1.0em\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#1}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil \normalcolor #2}% \hfil\normalfont |||
\par}%
\fi}
\newcommand\l@appendix[2]{%
\ifnum \c@tocdepth >\m@ne
\vskip \z@ \@plus.2\p@
{\leftskip 0.0em\relax \rightskip \@tocrmarg plus 15em \parfillskip -
\rightskip%mod <plus 15em> for avoid hyph. in TOC
\parindent 0.0em\relax \hangindent 4.3em\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima 1.5em\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#1}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil \normalcolor #2}% \hfil\normalfont |||
\par}%
\fi}