我正在尝试制作一个目录,其中会包含已编号的章节和其他已编号但不属于章节的项目。为此,我尝试使用在网上找到的一个代码片段:
\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}
我的错。这应该给我一个教训,让我注意点。