
Parece um problema simples, mas não está claro como resolvê-lo.
Considere isto
\renewcommand{\thesection}{\arabic{section} ABCXYZ}
...
\tableofcontents
\section{The title of the section}
produzirá uma sobreposição entre o número "1" e "O título da seção" e ABCXYZ.
A distância entre o número e o título é fixada pelo índice. Não é variável. Você não pode colocar nada lá. É claro que é o mesmo problema de quando o número da seção é muito longo em comparação com a distância fixa:\setcounter{section}{1000}
A seguinte solução
\makeatletter\renewcommand*\l@section{\@dottedtocline{1}{...}{...}}\makeatother
funciona mais ou menos.
No entanto, parece redefinir alguns dos parâmetros normais do toc.
Pelo menos ele redefine visivelmente os números das seções e os títulos das seções em negrito, enquanto os blocos de subseção e os títulos de subsubseção não estão em negrito. Os números das páginas das seções também deixam de estar em negrito. Torne-se como os números das páginas das subseções no toc.
Isso é mau.
Envolvendo
\textbf{arabic{section}}
dentro\renewcommand{\thesection}
funciona. Mas... não consegue chegar ao título da seção.
\section{\textbf{TITLE IS HERE}}
está abaixo do ideal por vários motivos.
P: Como recuperamos o restante do negrito comum e da formatação no toc padrão após renovar *l@section?
Sem nenhum pacote, por favor.
Uma subquestão é esta: eu defino um comprimento e defino a largura dele como o comprimento da ```\arabic{seção} ABCXYZ'' e agora, tendo definido a distância da seção parac bem grande, desejo subtrair esta distância variável .
O resultado seria que o número da seção, sendo pequeno, não possui um grande espaço entre ele e o título. Parece que \renewcommand{\thesection}{...}
é o lugar errado para colocá-lo. Isso não afetaria o espaçamento do título da seção.
P: O que mais precisa ser renovado e onde é o local correto para colar um objeto hspace{\correction} para afetar o título da seção conforme aparece no índice.
Provavelmente este é exatamente o mesmo lugar onde a formatação padrão também pode ser reconstruída.
Responder1
A definição de \l@section
vem da classe document, portanto não é um pacote, mas não faz exatamente parte do LaTeX. Eu sugiro que você coloque
\makeatletter \show\l@section \makeatother
no seu documento para ver a definição preexistente.
Eu acho que você está usando a classe de documento "artigo", onde \l@section
usa negrito e não usa \@dottedtocline
nada! Na definição encontrada em article.cls, há uma configuração misteriosa de
\setlength\@tempdima{1.5em}%
e essa é a largura do número da seção (usado por \numberline
).
Não vou postar a definição completa porque não tenho a versão mais recente. Mas talvez você queira reconsiderar o uso de um pacote para formatar o toc.
Uma alternativa é redefinir \numberline
para que simplesmente não se sobreponha ao número e ao título!
\makeatletter
\renewcommand\numberline[1]{%
\begingroup
\sbox\@tempboxa{#1 }%
\ifdim\wd\@tempboxa<\@tempdima
\wd\@tempboxa=\@tempdima
\fi
\usebox\@tempboxa
\endgroup
}
Responder2
Eu sei que você disse que não quer usar nenhum pacote, mas abaixo usei o tocloft
pacote para indicar o que poderia ser feito. A única alteração no ToC é o espaço para números seccionais. Se você quiser outras alterações, o pacote oferece muitas facilidades ( texdoc tocloft
).
% tocprob5.tex SE 533343 section numbers
\documentclass{article}
\renewcommand{\thesection}{\arabic{section} ABCXYZ}
\usepackage{tocloft}
\newlength{\mylen}
\settowidth{\mylen}{\textbf{99 ABCXYZ}} % the space required for the section number
\setlength{\cftsecnumwidth}{\mylen} % set space for section number
\setlength{\cftsubsecnumwidth}{\mylen} % set space for subsection number
\begin{document}
\tableofcontents
\section{Section}
\subsection{Subsection}
\section{Another section}
\end{document}
Espero que você não use seu exemplo de redefinição \thesection
em seu documento real, pois o primeiro \subsection
será \section
numerado como "1 ABCXYZ.1", o que para mim parece muito estranho. Talvez você queira redefinir a numeração das subseções.