考虑一下在目录中居中插入短文本没有问题的代码:
\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}