采取以下最小工作示例:
\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(脾气暴躁的老头)。