修复目录中的水平盒子过满的问题,删除过多的点

修复目录中的水平盒子过满的问题,删除过多的点

这个问题回忆录目录有一个很有效的答案,但是,结论结束得太早了(在我看来)。

有没有办法让点更像默认点,而不会触发过满的水平盒子?(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}

下面是一些示例图像(第一个有我喜欢的点,但是水平盒子过满,第二个删除了水平盒子但是没有足够的点):

水平盒子溢出的图片 点数不足的图像

我发现这个texdoc memman

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

也许这些尺寸与间距有关。

答案1

memoir 文档提及(部分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,则必须忍受这种情况。如果您想要更多字体,可以通过以下方式调整点之间的间距:

\renewcommand*{\cftdotsep}{2}

在此处输入图片描述

对于回忆录,你可以通过命令更改pnumwidthtocmarg

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

相关内容