Исправление переполненного hbox в оглавлении удаляет слишком много точек

Исправление переполненного hbox в оглавлении удаляет слишком много точек

Этот вопрос намемуары оглавлениеесть ответ, который работает хорошо, однако точки заканчиваются слишком рано (на мой взгляд).

Есть ли способ сделать точки более похожими на точки по умолчанию, не вызывая при этом переполненных hboxes? (WME взято непосредственно из вопроса выше):

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

Вот несколько примеров изображений (на первом есть точки, которые мне нравятся, но переполненный hbox, на втором hbox удален, но точек недостаточно):

Изображение переполненного hbox Изображение недостаточного количества точек

Я нашел это вtexdoc memman

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

Возможно, эти размеры и задействованы в интервале.

решение1

Thememoir документацияупоминает (раздел9.1 Общие методы ToC, стр. 142):

Номер страницы набирается вровень с правым краем в поле шириной \@pnumwidth, а поле находится на правом поле. Если номер страницы слишком длинный, чтобы поместиться в поле, он будет выступать в правое поле.

Значение по умолчанию для \@pnumwidth, 1.55emкоторое можно изменить с помощью \setpnumwidth{<len>}.


Вот еще один подход: установите номер страницы в поле с белой фоновой заливкой:

введите описание изображения здесь

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

решение2

3emслишком много для pnumwidth. Достаточно держать его на уровне2.5em

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

введите описание изображения здесь

Если у вас есть номера страниц, превышающие 1000, вам придется с этим жить. Если вы хотите иметь больше fots, вы можете настроить расстояние между точками,

\renewcommand*{\cftdotsep}{2}

введите описание изображения здесь

Для мемуаров вы можете изменить pnumwidthи tocmargс помощью команд

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

Связанный контент