A renovação das distâncias do índice quebra o negrito para números de páginas de seções e títulos

A renovação das distâncias do índice quebra o negrito para números de páginas de seções e títulos

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@sectionvem 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@sectionusa negrito e não usa \@dottedtoclinenada! 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 \numberlinepara 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 tocloftpacote 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 \thesectionem seu documento real, pois o primeiro \subsectionserá \sectionnumerado como "1 ABCXYZ.1", o que para mim parece muito estranho. Talvez você queira redefinir a numeração das subseções.

informação relacionada