在自定义类中支持目录的最少代码

在自定义类中支持目录的最少代码

我正在尝试创建一个自定义类来替换该类book,并且需要包含 ToC 功能。放置命令\tableofcontents会导致错误“未定义的控制序列”。使用类似minitoc或的包tocloft没有帮助。

我应该向我的自定义类写入什么才能让 ToC 正常工作?

答案1

您应该从 book.cls 中提取最少的代码,虽然不保证,而且我不太确定您在课堂上定义了什么,但至少包括以下内容:

 \setcounter{tocdepth}{2}
\newcommand\tableofcontents{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
    }
\newenvironment{theindex}
   {\if@twocolumn
      \@restonecolfalse
      \else
         \@restonecoltrue
      \fi
      \twocolumn[\@makeschapterhead{\indexname}]%
      \@mkboth{\MakeUppercase\indexname}%
              {\MakeUppercase\indexname}%
                \thispagestyle{plain}\parindent\z@
                \parskip\z@ \@plus .3\p@\relax
                \columnseprule \z@
                \columnsep 35\p@
                \let\item\@idxitem}
      {\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@} (*@\label{idxitem}@*)
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}

通常,在您自己的类定义中加载一个标准类是一个更好的主意,这样您的类至少可以继承所有基本功能。很多时候您只需要一个包而不是一个类。

相关内容