Memoir TOC 零件编号的默认间距

Memoir TOC 零件编号的默认间距

采取以下最小工作示例:

\documentclass{memoir}
\begin{document}
\tableofcontents
\part{first part}
\chapter{first chapter}
\part{second part}
\chapter{second chapter}
\part{third part}
\chapter{third chapter}
\part{fourth part}
\chapter{fourth chapter}
\part{fifth part}
\chapter{fifth chapter}
\part{sixth part}
\chapter{sixth chapter}
\part{seventh part}
\chapter{seventh chapter}
\part{eighth part}
\chapter{eighth chapter}
\end{document}

我们得到了非常丑陋的条目输出\part

已经相当糟糕了

特别糟糕

当然,可以通过增加零件编号的框的尺寸\renewcommand\cftpartnumwidth{1cm}或类似的东西来增加,但我想知道这是否真的有必要?

答案1

这取决于您是否希望部分标题对齐,或者只希望数字与标题之间用普通空格分隔。

对齐标题

\documentclass{memoir}
\usepackage{totcount}

\regtotcounter{part}
\newlength{\partnumberwidth}
\makeatletter
\AtBeginDocument{\measure@part@numbers}
\newcommand{\measure@part@numbers}{%
  \count@=0
  \loop\ifnum\count@<\totvalue{part}
    \advance\count@ by 1
    \settowidth{\dimen@}{\bfseries\@Roman{\count@}\ \ }%
    \ifdim\dimen@>\partnumberwidth
      \setlength{\partnumberwidth}{\dimen@}%
    \fi
  \repeat
}
\renewcommand\partnumberlinehook[1]{%
  \setlength{\@tempdima}{\partnumberwidth}%
}
\makeatother

\begin{document}
\tableofcontents
\part{first part}
\chapter{first chapter}
\part{second part}
\chapter{second chapter}
\part{third part}
\chapter{third chapter}
\part{fourth part}
\chapter{fourth chapter}
\part{fifth part}
\chapter{fifth chapter}
\part{sixth part}
\chapter{sixth chapter}
\part{seventh part}
\chapter{seventh chapter}
\part{eighth part}
\chapter{eighth chapter}
\end{document}

在此处输入图片描述

正常空间

\documentclass{memoir}

\makeatletter
\renewcommand\partnumberlinehook[1]{%
  \settowidth{\@tempdima}{\bfseries #1 }%
}
\makeatother

\begin{document}
\tableofcontents
\part{first part}
\chapter{first chapter}
\part{second part}
\chapter{second chapter}
\part{third part}
\chapter{third chapter}
\part{fourth part}
\chapter{fourth chapter}
\part{fifth part}
\chapter{fifth chapter}
\part{sixth part}
\chapter{sixth chapter}
\part{seventh part}
\chapter{seventh chapter}
\part{eighth part}
\chapter{eighth chapter}
\end{document}

在此处输入图片描述

答案2

可以使用一些未知的 LaTeX 编码来完成,例如在打印之前测量每个数字的宽度,然后确保有足够的空间来打印数字。这意味着标题文本不是垂直对齐的,而是根据特定数字向左对齐。您可能会对此感到满意,但我怀疑很多人不会。使用更复杂的编码(涉及两遍系统)可以确定最大数字宽度,然后将其应用于所有条目以提供对齐的标题文本。

决定您最终希望 ToC 是什么样子,尝试一些代码,然后再次询问。

记住,我是一个 GOM(脾气暴躁的老头)。

相关内容