Estou usando Springerssvmultmodelado para um livro com editor. Há um problema com o TableOfContents (ToC):
Quando o número da seção inclui apenas os dígitos de 1 a 9, tudo parece ok, por exemplo
- Cabeçalho
1.1 Subcabeçalho
1.2.9 Subsubcabeçalho
mas quando a contagem de seções ultrapassa 10, o texto do cabeçalho e o número da seção ficam muito próximos no ToC e até começam a se sobrepor. Isso parece feio (pior que aqui):
- Cabeçalho
1.10Subcabeçalho
1.3.10SubSubcabeçalho
12.2.3SubSubcabeçalho
O que se segue é a definição de \tableofcontents
in svmult.cls
. Só entendo pela metade, e isso não é suficiente neste caso. Onde eu precisaria corrigir o problema, para que sempre haja espaço suficiente entre o número da seção e o cabeçalho da seção no ToC?
\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}}
Responder1
A classe controla o espaço reservado para o número seccional usando os seguintes comprimentos:
\tocsecnum
para seções.\tocsubsecnum
para subseções.\tocsubsubsecnum
para subsubseções.\tocparanum
para parágrafos.\tocsubparanum
para subparágrafos.
você pode simplesmente adicionar algum valor ao comprimento necessário; por exemplo:
\addtolength\tocsubsubsecnum{2ex}
e então invocar
\calctocindent
para que os comprimentos das entradas das unidades seccionais inferiores possam ser recalculados.