我正在使用 Springers乘法为带编辑器的书籍模板化。目录 (ToC) 存在问题:
当部分编号仅包含数字 1-9 时,一切看起来都正常,例如
- 标头
1.1 副标题
1.2.9 子子标题
但当节数超过 10 时,标题文本和节号在目录中太接近了,它们甚至开始重叠。这看起来很丑(比这里更糟糕):
- 标头
1.10副标题
1.3.10SubSubheader
12.2.3SubSubheader
\tableofcontents
接下来是中的定义svmult.cls
。我只理解了一半,但在这种情况下这还不够。我需要在哪里修复这个问题,以便目录中的节号和节标题之间始终有足够的空间?
\def\tableofcontents{\chapter*{\contentsname\markboth{{\contentsname}}%
{{\contentsname}}}
\def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}}
\def\lastand{\ifnum\value{auco}=2\relax
\unskip{} \andname\
\else
\unskip \lastandname\
\fi}%
\def\and{\stepcounter{@auth}\relax
\ifnum\value{@auth}=\value{auco}%
\lastand
\else
\unskip,
\fi}%
\@starttoc{toc}\if@restonecol\twocolumn\fi}
\setcounter{tocdepth}{0}
\def\l@part#1#2{\addpenalty{\@secpenalty}%
\addvspace{2em \@plus\p@}%
\begingroup
\parindent \z@
\rightskip \z@ \@plus 5em
\hrule\vskip5\p@
\bfseries\boldmath
\leavevmode
#1\par
\vskip5\p@
\hrule
\vskip\p@
\nobreak
\endgroup}
\def\@dotsep{2}
\def\addnumcontentsmark#1#2#3{%
\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline
{\thechapter}#3}{\thepage}}}
\def\addcontentsmark#1#2#3{%
\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
\def\addcontentsmarkwop#1#2#3{%
\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}}}
\def\@adcmk[#1]{\ifcase #1 \or
\def\@gtempa{\addnumcontentsmark}%
\or \def\@gtempa{\addcontentsmark}%
\or \def\@gtempa{\addcontentsmarkwop}%
\fi\@gtempa{toc}{chapter}}
\def\addtocmark{\@ifnextchar[{\@adcmk}{\@adcmk[3]}}
\def\l@chapter#1#2{\par\addpenalty{-\@highpenalty}
\addvspace{1.0em \@plus \p@}
\@tempdima \tocchpnum \begingroup
\parindent \z@ \rightskip \@tocrmarg
\advance\rightskip by \z@ \@plus 2cm
\parfillskip -\rightskip \pretolerance=10000
\leavevmode \advance\leftskip\@tempdima \hskip -\leftskip
{\bfseries\boldmath#1}\ifx0#2\hfil\null
\else
\nobreak
\leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern
\@dotsep mu$}\hfill
\nobreak\hbox to\@pnumwidth{\hss #2}%
\fi\par
\penalty\@highpenalty \endgroup}
\newcommand{\tocauthorstyle}{\itshape}
\newcommand{\toctitlestyle}{\bfseries}
\def\l@title#1#2{\addpenalty{-\@highpenalty}
\addvspace{8\p@ \@plus \p@}
\@tempdima \z@
\tocchpnum \z@ \calctocindent
\begingroup
\parindent \z@ \rightskip \@tocrmarg
\advance\rightskip by \z@ \@plus 2cm
\pretolerance=10000
%\parfillskip -\@tocrmarg
\leavevmode \advance\leftskip\@tempdima \hskip -\leftskip
{\toctitlestyle#1}%\nobreak
%\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern
%\@dotsep mu$}\hfill
%\nobreak\hbox to\@pnumwidth{\hss #2}\par
\par
\penalty\@highpenalty \endgroup}
\newcommand{\tocaftauthskip}{\z@}
\def\l@author#1#2{%\addpenalty{\@highpenalty}
\@tempdima \z@
\begingroup
\pretolerance=10000
\parindent \z@ \rightskip \@tocrmarg
\advance\rightskip by \z@ \@plus 2cm
\parfillskip -\@tocrmarg
\leavevmode \advance\leftskip\@tempdima \hskip -\leftskip
{\tocauthorstyle#1}\nobreak
\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern
\@dotsep mu$}\hfill
\nobreak\hbox to\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\addvspace{\tocaftauthskip}\endgroup}
\newdimen\tocchpnum
\newdimen\tocsecnum
\newdimen\tocsectotal
\newdimen\tocsubsecnum
\newdimen\tocsubsectotal
\newdimen\tocsubsubsecnum
\newdimen\tocsubsubsectotal
\newdimen\tocparanum
\newdimen\tocparatotal
\newdimen\tocsubparanum
\tocchpnum=\z@ % no chapter numbers
\tocsecnum=18\p@ % section 88. plus 2.222pt
\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt
\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt
\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt
\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt
\def\calctocindent{%
\tocsectotal=\tocchpnum
\advance\tocsectotal by\tocsecnum
\tocsubsectotal=\tocsectotal
\advance\tocsubsectotal by\tocsubsecnum
\tocsubsubsectotal=\tocsubsectotal
\advance\tocsubsubsectotal by\tocsubsubsecnum
\tocparatotal=\tocsubsubsectotal
\advance\tocparatotal by\tocparanum}
\calctocindent
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by \z@ \@plus 2cm
\parfillskip -\rightskip \pretolerance=10000
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}
%
\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}}
\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}}
\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}}
\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}}
\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}}
答案1
该类使用以下长度来控制为分段编号保留的空间:
\tocsecnum
对于部分。\tocsubsecnum
对于小节。\tocsubsubsecnum
用于小节。\tocparanum
对于段落。\tocsubparanum
对于小段落。
然后您可以简单地为所需长度添加一些值;例如:
\addtolength\tocsubsubsecnum{2ex}
然后调用
\calctocindent
以便可以重新计算下部分段单位条目的长度。