未定义控制序列 \likechapter

未定义控制序列 \likechapter

我正在尝试制作一个目录,其中会包含已编号的章节和其他已编号但不属于章节的项目。为此,我尝试使用在网上找到的一个代码片段:

\makeatletter
     \renewcommand{\@dotsep}{2}
     \newcommand{\l@likechapter}[2]{{\bfseries\@dottedtocline{0}{0pt}{0pt}{#1}{#2}}}
 \makeatother 

\newcommand{\likechapter}[1]
{  
       \likechapterheading{#1}  
       \addcontentsline{toc}{likechapter}
{
\MakeUppercase{#1}
}
}

渲染时 TeXLive 会抱怨:

! Undefined control sequence.
\likechapter #1-> \likechapterheading 
                                      {#1} \addcontentsline {toc}{likechapte...
l.331  \likechapter {Intro}

我究竟做错了什么?

答案1

TeX/LaTeX 抱怨\likechapterheading未定义并在中使用\likechapter,即它试图扩展\likechapter并偶然发现\likechapterheading,是未知的。

如果给出了,则示例应该是可编译的\providecommand{\likechapterheading}[1]{},即如果尚未定义,则提供它,否则忽略新的定义。

请注意,ToC从排版的角度来看,该条目看起来是错误的(缩进!)

\documentclass{book}

\providecommand{\likechapterheading}[1]{}


\makeatletter
\renewcommand{\@dotsep}{2}
\newcommand{\l@likechapter}[2]{{\bfseries\@dottedtocline{0}{0pt}{0pt}{#1}{#2}}}
\makeatother 

\newcommand{\likechapter}[1]{%  
  \likechapterheading{#1}  
  \addcontentsline{toc}{likechapter}{%
   \MakeUppercase{#1}%
  }%
}

\begin{document}
\tableofcontents

\chapter{Foo}
\likechapter{Foobar}

\end{document}

答案2

必须先

 \newcommand{\empline}{\mbox{}\newline}
 \newcommand{\likechapterheading}[1]
{     \begin{center}  
   \textbf{\MakeUppercase{#1}}   
  \end{center}  
   \empline}

我的错。这应该给我一个教训,让我注意点。

相关内容