使用回忆录文档类时,目录条目的 \hbox 过满警告

使用回忆录文档类时,目录条目的 \hbox 过满警告

使用 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构造。

在此处输入图片描述

相关内容