![回忆录类中的“未定义的控制序列”问题?](https://linux22.com/image/259019/%E5%9B%9E%E5%BF%86%E5%BD%95%E7%B1%BB%E4%B8%AD%E7%9A%84%E2%80%9C%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E6%8E%A7%E5%88%B6%E5%BA%8F%E5%88%97%E2%80%9D%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我使用memoir
class 并希望自定义目录和章节样式。当我使用\renewcommand*\l@chapter[2]
在第二次编译:
Undefined control sequence.
\chapternumberline ... \@tempdima {\@chapapp@head
\@cftbsnum #1\@cftasnum \h...
l.2 ...pter}{\chapternumberline {1}Chapter One}{3}
我的代码:
\documentclass{memoir}
\usepackage{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{titletoc}
\usepackage{etoolbox}
\definecolor{secnum}{RGB}{13,151,225}
\definecolor{ptcbackground}{RGB}{212,237,252}
\definecolor{ptctitle}{RGB}{0,177,235}
\makeatletter
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 2.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
\advance\leftskip\@tempdima
\hskip -\leftskip
\colorbox{ptctitle}{\strut%
\makebox[\dimexpr\textwidth-2\fboxsep-7pt\relax][l]{%
\color{white}\bfseries\sffamily#1%
\nobreak\hfill\nobreak\hb@xt@\@pnumwidth{\hss #2}}}\par\smallskip
\penalty\@highpenalty
\endgroup
\fi}
\makeatother
\begin{document}
\tableofcontents
\chapter{Chapter One}
\section{Section One One}
\subsection{Section One Two}
\chapter{Chapter Two}
\section{Section Two One}
\end{document}
然而,在book
课堂上,它却没有任何错误!
答案1
您修改的定义源自book.cls
,因此很明显它在那里有效。memoir.cls
具有完全不同的章节定义方式,因此您可以通过从book.cls
那里“注入”代码轻松产生冲突。 文档结构等完全由文档类负责,因此您需要考虑您正在使用哪个类。 请改为修改 memoir.cls 中的代码。
这是一个起点。我试图尽可能地“微创”,但我真的不是回忆录专家。从表面上看,它需要更多的调整,但定义确实截然不同:
\makeatletter
\setlength{\cftbeforechapterskip}{2.0em \@plus\p@}
\renewcommand{\cftchapterfont}{\bfseries\sffamily}
\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}%
%%% \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
\advance\memRTLleftskip \@tempdima \null\nobreak\hskip -\memRTLleftskip
\colorbox{ptctitle}{\strut%
\makebox[\dimexpr\textwidth-2\fboxsep-7pt\relax][l]{%
\color{white}\cftchapterfont#1%
\nobreak{\cftchapterleader}\nobreak
\cftchapterformatpnum{#2}%
\cftchapterafterpnum}}\par\smallskip}%
\fi}
\makeatother