
Этот вопрос намемуары оглавлениеесть ответ, который работает хорошо, однако точки заканчиваются слишком рано (на мой взгляд).
Есть ли способ сделать точки более похожими на точки по умолчанию, не вызывая при этом переполненных 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 удален, но точек недостаточно):
Я нашел это в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}