如何对目录标题和分隔线进行编码,以便于进行高度调整

如何对目录标题和分隔线进行编码,以便于进行高度调整

我有一个居中的目录标题和线性分隔符,我想同时在文档中升高或降低它们,同时保持两者之间的空白垂直空间。

我不知道我是否对这两者进行了最佳编码,但请考虑以下 MWE:

\documentclass[openany]{book}
\usepackage{tocloft}

\renewcommand{\cfttoctitlefont}{\hfill\Huge\bfseries} % To Center TOC title.
\renewcommand{\cftaftertoctitle}{\hfill}  % To Center TOC title.

\newcommand{\divider}
{%
  \begin{center} \vspace*{-55pt}
  \rule{1.75in}{.2mm}
  \end{center}
}

\begin{document}
\thispagestyle{empty}
\LARGE

\addtocontents{toc}{\hfil\protect\divider\hfil\par}
\addcontentsline{toc}{section}{{\bf 1.} An entry in the TOC.}
\renewcommand\contentsname{\vspace*{0pt}THE TOC}
\tableofcontents
\end{document}

生成目录:

在此处输入图片描述

我希望能够升高或降低目录标题和下方相关分隔符的高度。

现在,没有分隔符,\renewcommand\contentsname{\vspace*{-20pt}THE TOC}标题将增加 20pts。

我以为也许同时将代码的一部分更改为\vspace*{-55pt}along with可以实现这一点,但事实并非如此。此外,命令本身似乎不会影响标题;但令人惊讶的是,它会影响分隔符。\divider\vsoace*{-75pt}\renewcommand\contentsname{\vspace*{-20pt}THE TOC}\renewcommand\contentsname{\vspace*{-20pt}THE TOC}

vspace*问题:我该如何改变上述代码来生成一个居中的目录标题和下方指定的分隔符,以便通过命令或类似命令来提高或降低它们的高度?

谢谢。

答案1

这是一个选项(无需使用tocloft

您可以定义 的标题、其格式以及规则的垂直间距。使用 ,ToC规则的长度将自动设置为格式化标题的宽度。ToC\widthof{<text>}

如果选择 0pt 作为垂直间距作为规则,则该规则将放置在目录标题的基线上。

\ToCabove有助于垂直移动目录标题及其规则。

b

\documentclass[openany]{book}

\usepackage{showframe} % only to show the margins

%******************************************  Definitions
\newcommand{\ToCname}{THE TOC} % Define ToC title
\newcommand{\ToCformat}{\Huge\bfseries} % Define the  format of ToC title <<<<<
\newcommand{\ToCrulesep}{2ex}% set the  vertical space  separation<<<<<
\newlength{\ToCabove}   
\setlength{\ToCabove}{-5ex}% set space above the ToC title
%****************************************** 

\usepackage{calc}% for widthof <<<< 

\newsavebox{\ToCtitle}  
\savebox{\ToCtitle}{% build box with ToC title + rule
\parbox[t]{\linewidth}{%
\centering% 
\ToCformat\ToCname\par%
\vspace*{\dimexpr\ToCrulesep-\baselineskip\relax} 
\rule{\widthof{\ToCformat\ToCname}}{.2mm} % set rule length equal to width of formatted ToC title
}}
\newcommand{\InsertToCtitle}{\vspace*{\ToCabove}\usebox{\ToCtitle}} 
\renewcommand\contentsname{\InsertToCtitle} % use the saved box     
%******************************************         
    
\begin{document}        
    \LARGE
        
    \addcontentsline{toc}{section}{{\bf 1.} An entry in the TOC.}
        
    \tableofcontents
    \thispagestyle{empty}
\end{document}

相关内容