![修复目录中的水平盒子过满的问题,删除过多的点](https://linux22.com/image/286300/%E4%BF%AE%E5%A4%8D%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%B0%B4%E5%B9%B3%E7%9B%92%E5%AD%90%E8%BF%87%E6%BB%A1%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E5%88%A0%E9%99%A4%E8%BF%87%E5%A4%9A%E7%9A%84%E7%82%B9.png)
这个问题回忆录目录有一个很有效的答案,但是,结论结束得太早了(在我看来)。
有没有办法让点更像默认点,而不会触发过满的水平盒子?(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}
对于回忆录,你可以通过命令更改pnumwidth
和tocmarg
\setpnumwidth{2.5em}
\setrmarg{4em}