A correção do hbox cheio demais no índice remove muitos pontos

A correção do hbox cheio demais no índice remove muitos pontos

Esta questão sobreíndice do livro de memóriastem uma resposta que funciona bem, porém os pontos acabam cedo demais (na minha opinião).

Existe uma maneira de tornar os pontos mais parecidos com o padrão sem acionar os hboxes lotados? (O WME é retirado diretamente da pergunta acima):

\documentclass[oneside, draft]{memoir}

\usepackage[showframe]{geometry}
\usepackage{lipsum}

\newcommand{\repeattext}[1]{#1 #1 #1 #1 #1 #1}

\makeatletter
\renewcommand{\@pnumwidth}{3em} %even adjusting this down doesn't really help
\renewcommand{\@tocrmarg}{4em}
\makeatother

\begin{document}

\tableofcontents

\chapter{Chapter 1}         \lipsum
    \section{Section 1.1}   \repeattext{\repeattext{\lipsum[1-150]}}

\chapter{Chapter 2}         \lipsum[2]
    \section{Section 2.1}   \repeattext{\repeattext{\lipsum[1-150]}}

\chapter{Chapter 3}         \lipsum[2]
    \section{Section 3.1}   \lipsum[2]

\end{document}

Aqui estão alguns exemplos de imagens (a primeira tem os pontos que eu gosto, mas um hbox cheio demais, a segunda remove o hbox, mas não tem pontos suficientes):

Imagem de hbox lotado Imagem de pontos insuficientes

Eu encontrei isso emtexdoc memman

\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}

Talvez esses tamanhos estejam envolvidos no espaçamento.

Responder1

Omemoir documentaçãomenções (seção9.1 Métodos gerais de ToC, pág. 142):

O número da página é digitado à direita em uma caixa de largura \@pnumwidthe a caixa está na margem direita. Se o número da página for muito longo para caber na caixa, ele ficará saliente na margem direita.

O padrão para \@pnumwidthé definido como 1.55em, que pode ser ajustado usando \setpnumwidth{<len>}.


Aqui está outra abordagem: Defina o número da página em uma caixa com preenchimento de fundo branco:

insira a descrição da imagem aqui

\documentclass[oneside, draft]{memoir}

\usepackage{geometry}
\usepackage{lipsum,xcolor}

\newcommand{\repeattext}[1]{#1 #1 #1 #1 #1 #1}

\makeatletter

\newcommand{\pnumformat}[1]{{\setlength{\fboxsep}{0pt}\llap{\colorbox{white}{#1}}}}
\setpnumwidth{.5em}% Just a small enough length
\renewcommand{\cftchapterformatpnum}[1]{%
  \cftchapterformatpnumhook{#1}%
  \hb@xt@\@pnumwidth{\hfil\pnumformat{\cftchapterpagefont #1}}}
\renewcommand{\cftsectionformatpnum}[1]{%
  \cftsectionformatpnumhook{#1}%
  \hb@xt@\@pnumwidth{\hfil\pnumformat{\cftsectionpagefont #1}}}

\renewcommand{\@tocrmarg}{4em}
\makeatother

\begin{document}

\tableofcontents

\chapter{Chapter 1}         \lipsum
    \section{Section 1.1}   \repeattext{\repeattext{\lipsum[1-150]}}

\chapter{Chapter 2}         \lipsum[2]
    \section{Section 2.1}   \repeattext{\repeattext{\lipsum[1-150]}}

\chapter{Chapter 3}         \lipsum[2]
    \section{Section 3.1}   \lipsum[2]

\end{document}

Responder2

3emé demais para pnumwidth. É o suficiente para mantê-lo em2.5em

\makeatletter
\renewcommand{\@pnumwidth}{2.5em} %even adjusting this down doesn't really help
\renewcommand{\@tocrmarg}{4em}
\makeatother

insira a descrição da imagem aqui

Se você tiver números de páginas superiores a 1.000, terá que conviver com isso. Se quiser ter mais fotos, você pode ajustar a separação entre os pontos

\renewcommand*{\cftdotsep}{2}

insira a descrição da imagem aqui

Para memórias, você pode alterar pnumwidthe tocmargpelos comandos

\setpnumwidth{2.5em}
\setrmarg{4em}

informação relacionada