如何使用回忆录将部分条目置于目录中的中心?

如何使用回忆录将部分条目置于目录中的中心?

我正在排版一本带有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}

相关内容