将目录中的垂直间距变化绑定到 \*matter 命令

将目录中的垂直间距变化绑定到 \*matter 命令

这是一个衍生问题暂时更改目录中章节的垂直间距。就像问题的答案一样,我设法实现了在主要内容之前、之中和之后的章节的自定义垂直间距。与该问题相反,我使用 memoir 的\frontmatter\mainmatter\backmatter命令在语义上分离这些文档部分。

现在:是否可以通过某种方式将章节的垂直间距命令移动到序言中,例如通过使用命令\*matter作为触发器?我确实希望尽可能将自定义格式命令排除在文档主体之外。

平均能量损失具有所需的输出,但标记散布在整个文档中:

回忆录文档的目录,其中各章节的间距已自定义

\documentclass{memoir}
\usepackage{etoolbox}

\setlength{\cftbeforechapterskip}{3pt}

\begin{document}
\frontmatter

\tableofcontents
\chapter{Foreword}
\chapter{Abstract}

\mainmatter
\pretocmd{\chapter}{\addtocontents{toc}{\addvspace{6pt}}}{}{}

\chapter{Chapter One}
\section{Section One One}
\section{Section One Two}
\section{Section One Three}
\section{Section One Four}

\chapter{Chapter Two}
\section{Section Two One}
\section{Section Two Two}
\section{Section Two Three}

\chapter{Chapter Three}
\section{Section Three One}
\section{Section Three Two}
\section{Section Three Three}
\section{Section Three Four}
\section{Section Three Five}

\backmatter
\appendix
\chapter{Appendix One}
\pretocmd{\chapter}{\addtocontents{toc}{\addvspace{-6pt}}}{}{}
\chapter{Appendix Two}
\chapter{Appendix Three}

\end{document}

答案1

用于etoolbox添加您需要的内容。

\documentclass{memoir}
\usepackage{etoolbox}

\setlength{\cftbeforechapterskip}{3pt}

\pretocmd{\chapter}{\ojdospacing}{}{}
\apptocmd{\mainmatter}{\let\ojdospacing\ojdospacingon}{}{}
\apptocmd{\backmatter}{\ojdospacing\let\ojdospacing\relax}{}{}
\newrobustcmd{\ojdospacingon}{%
  \addtocontents{toc}{\addvspace{6pt}}%
}
\let\ojdospacing\relax % initialize

\begin{document}
\frontmatter

\tableofcontents
\chapter{Foreword}
\chapter{Abstract}

\mainmatter

\chapter{Chapter One}
\section{Section One One}
\section{Section One Two}
\section{Section One Three}
\section{Section One Four}

\chapter{Chapter Two}
\section{Section Two One}
\section{Section Two Two}
\section{Section Two Three}

\chapter{Chapter Three}
\section{Section Three One}
\section{Section Three Two}
\section{Section Three Three}
\section{Section Three Four}
\section{Section Three Five}

\backmatter
\appendix
\chapter{Appendix One}
\chapter{Appendix Two}
\chapter{Appendix Three}

\end{document}

\backmatter发出时,\ojdospacing会最后一次执行,然后恢复为 的意思\relax

在此处输入图片描述

相关内容