我有一个居中的目录标题和线性分隔符,我想同时在文档中升高或降低它们,同时保持两者之间的空白垂直空间。
我不知道我是否对这两者进行了最佳编码,但请考虑以下 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
有助于垂直移动目录标题及其规则。
\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}