使用 tocloft 自定义目录时遇到问题

使用 tocloft 自定义目录时遇到问题

我在设置一本包含许多章节、节和小节的大书的目录时遇到了困难。水平间距不正确,页码的点也不正确。以下是显示问题的 MWE:

\documentclass[11pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage[total={6.25in,10in},left=1.25in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{lipsum}

\usepackage[titles]{tocloft}
    \renewcommand{\cftdotsep}{2}  %  Points spacement.
    \makeatletter  % To fix a small offset with page number.  TO BE FIXED!
    \renewcommand{\@pnumwidth}{2.3em} % {1.75em}  TO BE FIXED!

    % Chapter spacement:
    \renewcommand{\cftchappresnum}{\chaptername\ }
    \renewcommand{\cftchapaftersnumb}{\newline}
    \setlength{\cftchapindent}{0pt} % Spacement to left of chapter number.
    \setlength{\cftchapnumwidth}{0pt} %

    % Sections spacement:
    \renewcommand{\cftsecpresnum}{\hfill} % ??
    \renewcommand{\cftsecaftersnum}{~} % Appears to be too short.  TO BE FIXED!
    \setlength{\cftsecindent}{11pt} % Random number?  TO BE FIXED!
    \setlength{\cftsecnumwidth}{32pt} % Random number?  TO BE FIXED!
    \addtolength{\cftsecnumwidth}{8pt} % ??

    % Sub-sections spacement:
    \renewcommand{\cftsubsecpresnum}{\hfill} % ??
    \renewcommand{\cftsubsecaftersnum}{~} % Appears to be too short.  TO BE FIXED!
    \setlength{\cftsubsecindent}{56pt} % Random number?  TO BE FIXED!
    \setlength{\cftsubsecnumwidth}{48pt} % Random number?  TO BE FIXED!
    \addtolength{\cftsubsecnumwidth}{12pt} %  ??

\begin{document}

\frontmatter 

\tableofcontents

\mainmatter

\chapter{Chapter Title}
\setcounter{page}{12}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\chapter{Chapter Title}
\setcounter{page}{850}
\lipsum[2-4]
\setcounter{section}{12}
\section{Section Title}
\lipsum[2-4]
\setcounter{subsection}{15}
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\setcounter{chapter}{12}
\chapter{Chapter Title}
\setcounter{page}{1311}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\setcounter{subsection}{14}
\subsection{Subsection}
\lipsum[2-4]
\setcounter{section}{15}
\section{Section Title}
\lipsum[2-4]
\setcounter{subsection}{12}
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\backmatter
\pagestyle{plain}

\end{document}

预览,问题以红色显示:

在此处输入图片描述

  1. 如图所示,右侧有一些多余的点。如何解决这个问题?我需要最后一个点和其页码之间的间距恒定,或者所有点都应该对齐(无论页码是多少)。

  2. 章节/子章节标题与其编号之间的间距看起来有点太紧。我应该用什么来代替{~}

  3. 左边距的间距似乎是随机的,对于使用 11 点字体的书,我不知道应该在那里使用什么数字。目前,我仅使用肉眼看起来奇怪的数字(11pt、32pt、8pt、56pt、48pt、12pt ??)。我需要帮助。


编辑: 关于圆点问题,microtype包装似乎是造成多余圆点的原因。下面给出了一个简单的解决方案: 我怎样才能使目录中的点在同一位置结束?

答案1

这是您的 MWE 的修订版本。

% tocprob.tex  SE 557386

\documentclass[11pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage[total={6.25in,10in},left=1.25in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{lipsum}

\usepackage[titles]{tocloft}
    \renewcommand{\cftdotsep}{2.10}  %  Points spacement. % PW changed
    \makeatletter  % To fix a small offset with page number.  TO BE FIXED!
    \renewcommand{\@pnumwidth}{2.3em} % {1.75em}  TO BE FIXED!

    % Chapter spacement:
    \renewcommand{\cftchappresnum}{\chaptername\ }
    \renewcommand{\cftchapaftersnumb}{\newline}
    \setlength{\cftchapindent}{0pt} % Spacement to left of chapter number.
    \setlength{\cftchapnumwidth}{0pt} %

    % Sections spacement:
%    \renewcommand{\cftsecpresnum}{\hfill} % ??
%    \renewcommand{\cftsecaftersnum}{~} % Appears to be too short.  TO BE FIXED!
%    \setlength{\cftsecindent}{11pt} % Random number?  TO BE FIXED!
%    \setlength{\cftsecnumwidth}{32pt} % Random number?  TO BE FIXED!
    \addtolength{\cftsecnumwidth}{8pt} % ??

    % Sub-sections spacement:
%    \renewcommand{\cftsubsecpresnum}{\hfill} % ??
%    \renewcommand{\cftsubsecaftersnum}{~} % Appears to be too short.  TO BE FIXED!
%    \setlength{\cftsubsecindent}{56pt} % Random number?  TO BE FIXED!
%    \setlength{\cftsubsecnumwidth}{48pt} % Random number?  TO BE FIXED!
    \addtolength{\cftsubsecnumwidth}{12pt} %  ??

\begin{document}

\frontmatter 

\tableofcontents

\mainmatter

\chapter{Chapter Title}
\setcounter{page}{12}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\chapter{Chapter Title}
\setcounter{page}{850}
\lipsum[2-4]
\setcounter{section}{12}
\section{Section Title}
\lipsum[2-4]
\setcounter{subsection}{15}
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\setcounter{chapter}{12}
\chapter{Chapter Title}
\setcounter{page}{1311}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\section{Section Title}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\setcounter{subsection}{14}
\subsection{Subsection}
\lipsum[2-4]
\setcounter{section}{15}
\section{Section Title}
\lipsum[2-4]
\setcounter{subsection}{12}
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]
\subsection{Subsection}
\lipsum[2-4]

\backmatter
\pagestyle{plain}

\end{document}

基本上,我所做的就是注释掉许多tocloft更改,以恢复到一般的目录布局。在某些地方,您需要在数字和标题之间留出额外的空间,而我只是将额外的空间添加到默认间距中。我不知道是什么导致了点间距的问题,但将您的\cftdotsep从更改22.10似乎已经解决了这个问题。

相关内容