如何在目录中的章节名称/编号和章节标题之间创建换行符?

如何在目录中的章节名称/编号和章节标题之间创建换行符?

我正在使用该Memoir课程,并尝试格式化我正在处理的文档的目录。目前,目录按以下方式排列条目:

<<chapter name>> <<chapter number>> <<chapter title>>

例如

Chapter 1 Introduction
Appendix A Specifications

我希望章节条目的格式如下:

<<chapter name>> <<chapter number>>
<<chapter title>>

例如

Chapter 1
Introduction

Appendix A
Specifications

我看过了回忆录手册但尚未找到任何有用的东西。

编辑

添加了 MWE 和图像:

\documentclass[openany]{memoir}
\usepackage{memsty}

\renewcommand*{\cftchaptername}{\chaptername\space}
\renewcommand*{\cftappendixname}{Appendix\space}

\begin{document}
\tableofcontents

\chapter{Foo}

\section{Bar}

\chapter{Baz}

\appendix
\chapter{Misc}

\end{document}

答案1

手册中没有提到这一点,因为这可能不太常见,而且使用简单的配置也不太容易做到。这里有一个建议

\makeatletter
\renewcommand*{\l@chapapp}[3]{%
  \ifnum \c@tocdepth >\m@ne
    \cftchapterbreak
    \vskip \cftbeforechapterskip
    {%\leftskip \cftchapterindent\relax
     \memRTLleftskip \cftchapterindent\relax
%%%     \rightskip \@tocrmarg
     \memRTLrightskip \@tocrmarg
%%%     \parfillskip -\rightskip
     \parfillskip -\memRTLrightskip
     \parindent \cftchapterindent\relax
     \@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \let\@cftbsnum \cftchapterpresnum
     \let\@cftasnum \cftchapteraftersnum
     \let\@cftasnumb \cftchapteraftersnumb
     \def\@chapapp@head{#3}%
     \settowidth{\@tempdima}{\cftchapterfont\@chapapp@head}%
     \addtolength{\@tempdima}{\cftchapternumwidth}%
     %% this line have to be out commented
     %\advance\memRTLleftskip \@tempdima \null\nobreak\hskip -\memRTLleftskip
     {\cftchapterfont {#1}}\nobreak
     \cftchapterfillnum{#2}}
  \fi}
\makeatother
\renewcommand\cftchapteraftersnumb{\par}

我们基本上需要\l@chapapp(在目录中排版章节和附录)停止增加左边距


添加:

您可以添加\nopagebreak,但在我看来,最好的解决方案是使长度\cftbeforechapterskip更加灵活。默认情况下,\cftbeforechapterskip它不是那么灵活。所以我通常使用类似于

\setlength{\cftbeforechapterskip}{1.0em plus 0.2em minus 0.3em}

也就是说,它可以拉伸一些,也可以收缩一些。这样可以得到更好的结果。

顺便说一句:你可能还想使用

\setlength\parskip{0pt}

为了消除文档中段落之间的任何延伸。

相关内容