我正在排版一本带有memoir
类的书,这本书中的各个部分必须位于目录 (TOC) 的中心。感谢使用 tocloft 将零件置于 toc 的中心只要零件名称不超过一行,我就能让它工作。但如果更长,第二行就不会居中。这是一个工作示例:
\documentclass[a4paper,10pt,twoside]{memoir}
\usepackage{polyglossia}
\usepackage{blindtext}
\usepackage{fontspec}
\makeatletter
\renewcommand{\partnumberline}[1]{\hfil\hspace\@tocrmarg Teil #1:~}
\makeatother
\renewcommand{\cftpartfont}{\large\normalfont}
\cftpagenumbersoff{part}
\begin{document}
\tableofcontents*
\part{It works with one liners}
\chapter{Test}
\Blindtext
\section{Test124}
\Blindtext
\part{But it does not work with those: That is only a test nothing more, please do not read it}
\chapter{Test2}
\Blindtext \Blindtext \Blindtext
\end{document}
我该怎么做才能让所有线条居中?
答案1
最简单的解决方案可能就是根本不使用回忆录界面!
而是直接转到源代码并重新编码。这里我删除了所有通常为页码和左缩进等留出空间的代码。
\makeatletter
\renewcommand{\partnumberline}[1]{Teil #1:~}
\renewcommand*{\l@part}[2]{%
\ifnum \c@tocdepth >-2\relax
\cftpartbreak
\begingroup
{
\setlength{\memRTLleftskip}{0pt}
\setlength{\memRTLrightskip}{0pt}
\interlinepenalty\@M
\centering
\cftpartfont #1
\par
}
\nobreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\fi}
\makeatother
\renewcommand{\cftpartfont}{\large\normalfont}