Arreglar hbox demasiado lleno en la tabla de contenido elimina demasiados puntos

Arreglar hbox demasiado lleno en la tabla de contenido elimina demasiados puntos

Esta pregunta sobre eltabla de contenido de memoriastiene una respuesta que funciona bien, sin embargo, los puntos terminan demasiado pronto (en mi opinión).

¿Hay alguna manera de hacer que los puntos se parezcan más a los predeterminados sin activar los hboxes demasiado llenos? (La WME se toma directamente de la pregunta anterior):

\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}

Aquí hay algunas imágenes de ejemplo (la primera tiene los puntos que me gustan, pero un hbox demasiado lleno, la segunda elimina el hbox pero no tiene suficientes puntos):

Imagen de hbox demasiado lleno Imagen de puntos insuficientes

Encontré esto entexdoc memman

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

Quizás esos tamaños estén involucrados en el espaciado.

Respuesta1

Elmemoir documentaciónmenciones (sección9.1 Métodos generales de ToC, pág. 142):

El número de página está escrito al ras en un cuadro de ancho \@pnumwidthy el cuadro está en el margen derecho. Si el número de página es demasiado largo para caber en el cuadro, sobresaldrá en el margen derecho.

El valor predeterminado para \@pnumwidthestá configurado en 1.55em, que se puede ajustar usando \setpnumwidth{<len>}.


Aquí hay otro enfoque: establezca el número de página en un cuadro con un fondo blanco:

ingrese la descripción de la imagen aquí

\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}

Respuesta2

3emes demasiado para pnumwidth. Basta con mantenerlo en2.5em

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

ingrese la descripción de la imagen aquí

Si tiene números de página superiores a 1000, tendrá que vivir con eso. Si desea tener más puntos, puede ajustar la separación entre los puntos

\renewcommand*{\cftdotsep}{2}

ingrese la descripción de la imagen aquí

Para las memorias, puedes cambiar pnumwidthy tocmargmediante los comandos.

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

información relacionada