如何将目录中的所有长文本插入行居中

如何将目录中的所有长文本插入行居中

考虑一下在目录中居中插入短文本没有问题的代码:

\documentclass{book}
\begin{document}
\tableofcontents
\addtocontents{toc}{\hfil\protect {\Large{\textbf{PART I.}}} \hfil}
\addtocontents{toc}{\vskip 12pt \par}
\addtocontents{toc}{\hfil\protect {\Large{\textbf{HERE IS A CENTERED TOC ENTRY.}}} \hfil}

\addtocontents{toc}{\vskip 45pt \par}
\addtocontents{toc}{\hfil\protect {\Large{\textbf{HERE IS A ANOTHER TOC ENTRY THAT I WANT CENTERED AS WELL---BUT THIS IS WHAT I GET.}}} \hfil}
\end{document}

并产生输出:

在此处输入图片描述

正如所见,代码很好地将目录文本条目居中,这些条目没有被强制放到后续行;但是,较长的条目(在本例中占据了目录中的三行)并没有在目录中的所有三行中都居中,尽管我使用了与较短条目居中的相同命令。

问题:我如何修改代码来处理更长的目录条目;即那些延伸到至少一行附加行的条目,以便目录中的所有行都自动居中?

谢谢。

答案1

\centering不要使用\hfil来使段落居中,而且大小命令不带参数。

在此处输入图片描述

\documentclass{book}
\begin{document}
\tableofcontents
\addtocontents{toc}{{\centering\Large\bfseries PART I.\par}}
\addtocontents{toc}{\par\vspace{12pt}}
\addtocontents{toc}{{\centering\Large\bfseries HERE IS A CENTERED TOC ENTRY.\par}}

\addtocontents{toc}{\par\vspace{45pt}}
\addtocontents{toc}{{\centering\Large\bfseries HERE IS A ANOTHER TOC ENTRY THAT I WANT CENTERED AS WELL---BUT THIS IS WHAT I GET.\par}}
\end{document}

相关内容