将章节添加到 ToC 时 memoir 和 titletoc 包出现错误

将章节添加到 ToC 时 memoir 和 titletoc 包出现错误

我正在使用回忆录文档类,并尝试自定义目录样式。为此,我使用包titletoc和命令\titlecontents进行格式化。对于可以正常工作,sectionsubsection对于则失败chapter,并出现以下错误:

! Undefined control sequence.

<argument> \@chapapp@head 

\@cftbsnum 1\@cftasnum 

l.3 ...er}{\chapternumberline {1}first chapter}{3}%

?

这是为我重现错误的 MWE。pdflatex 和 lualatex 都出现了这种情况(至少我没有尝试其他的)。如果\documentclass{memoir}将 替换为\documentclass{book},则一切正常。

\documentclass{memoir}

\usepackage{titletoc}

\titlecontents{chapter}[0pt]{\vskip0pt}{\small\thecontentslabel.\ }{}{\small\dotfill\contentspage}
\titlecontents{section}[0pt]{\vskip0pt}{\qquad\small\thecontentslabel.\ }{}{\small\dotfill\contentspage}
\titlecontents{subsection}[0pt]{\vskip0pt}{\qquad \qquad \small\thecontentslabel.\ }{}{\small\dotfill\contentspage}

\setcounter{tocdepth}{3} 
\setcounter{secnumdepth}{3} 

\begin{document}
\tableofcontents
\listoffigures

test
\chapter{first chapter}
Contents of first chapter.
\section{first section}
Contents of first section.
\chapter{second chapter}
contents of second chapter.
\section{second section}
Contents of second section.
\subsection{First subsection}
Contents of first subsection
\end{document}

答案1

据我所知,这似乎可以解决问题。我不太确定是否需要重新定义方框,但你可以忽略它

\documentclass{memoir}
\renewcommand\cftchapterfont{\normalfont\small}
\renewcommand{\cftchapterleader}{\cftdotfill{\cftchapterdotsep}}
\renewcommand{\cftchapterdotsep}{\cftdotsep}
\renewcommand{\cftchapterpagefont}{\normalfont\small}
\renewcommand{\cftchapteraftersnum}{.\ }
\setlength\cftbeforechapterskip{0pt}
\renewcommand\cftsectionfont{\normalfont\small}
\renewcommand\cftsubsectionfont{\normalfont\small}
\renewcommand\cftsubsubsectionfont{\normalfont\small}
\renewcommand{\cftsectionaftersnum}{.\ }
\renewcommand{\cftsubsectionaftersnum}{.\ }
\renewcommand{\cftsubsubsectionaftersnum}{.\ }
\renewcommand\numberlinebox[2]{#2}
\renewcommand\chapternumberlinebox[2]{#2}

\settocdepth{subsubsection}
\setsecnumdepth{subsubsection}


\begin{document}
\tableofcontents*
\listoffigures*

test
\chapter{first chapter}
Contents of first chapter.
\section{first section}
Contents of first section.
\chapter{second chapter}
contents of second chapter.
\section{second section}
Contents of second section.
\subsection{First subsection}
Contents of first subsection
 \end{document}

在此处输入图片描述

答案2

我注意到您的评论中您希望元素大写,而 daleif 的答案并没有做到这一点,尽管它做了您想要的其他事情。要使章节条目大写,请执行以下操作:

\renewcommand{\cftchapterfont}{\normalfont\small\MakeUppercase}

并以同样的方式添加\MakeUppercase\cftsectionfont\cftsubsectionfont等。

相关内容