![使用回忆录文档类时,目录条目的 \hbox 过满警告](https://linux22.com/image/247722/%E4%BD%BF%E7%94%A8%E5%9B%9E%E5%BF%86%E5%BD%95%E6%96%87%E6%A1%A3%E7%B1%BB%E6%97%B6%EF%BC%8C%E7%9B%AE%E5%BD%95%E6%9D%A1%E7%9B%AE%E7%9A%84%20%5Chbox%20%E8%BF%87%E6%BB%A1%E8%AD%A6%E5%91%8A.png)
使用 documentclass 时,我收到Overfull
目录条目警告memoir
。它们似乎在章节标题条目(以粗体文本突出显示)的页码超过 2 位数字或部分页码超过 3 位数字时发生。
如果我切换到 documentclass,就不会收到章节标题警告book
。但章节标题仍然会收到警告。
我怎样才能解决这个问题?
\documentclass[oneside, draft]{memoir}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\newcommand{\repeattext}[1]{#1 #1 #1 #1 #1 #1}
\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}
答案1
有三个内部 LATEX 命令用于排版目录、lof、lot 等。它们是(及其默认值):
\@pnumwidth
= 1.55em\@tocrmarg
= 2.55em\@dotsep
= 4.5
页码排版在宽度为 的框中\@pnumwidth
,与右侧边缘齐平,框位于右侧边缘。如果页码太长,框放不下,页码就会伸出右侧边缘。这就是您的情况。
标题文本从右边距缩进,缩进量由 给出\@tocrmarg
。
\@dotsep
给出引线中点之间的距离(以数学单位表示)。
您的问题是由于数字太大,无法放入默认值定义的框中\@pnumwidth
。因此,如果我们将框变大,一切都会好起来。我们在序言中添加以下内容:
\makeatletter
\renewcommand{\@pnumwidth}{3em}
\renewcommand{\@tocrmarg}{4em}
\makeatother
请注意应该\@pnumwidth
始终小于\@tocrmarg
。
对于回忆录,可以通过以下方式更改
\renewcommand*{\cftdotsep}{1}
\setpnumwidth{3em}
\setrmarg{4em}
无需任何\makeatletter
构造。