\tableofcontents未定义,toc文件为空,如何生成TOC?

\tableofcontents未定义,toc文件为空,如何生成TOC?

我很惊讶这个网站如此优秀和信息丰富。但是,我无法找到以下问题的答案:

背景:我正在为 IOS-press 写一本书,我的第一章是用 IOS-Book-Article 类构建的。它有出版商要求的大量定义,但它禁止制作目录。我需要它来检查和草稿,也需要它为我的合著者服务。

问题:我无法在我的 tex 文档上运行 pdflatex,因为它显示 \tableofcontents 未定义。此外 toc 文件大小为 0。

错误信息:

! Undefined control sequence.
l.20 \tableofcontents

我的 TEX 来源:

\documentclass[secfloat,final]{IOS-Book-Article}
% our definitions and macros
\input{macros.tex}
\makeindex
\begin{document}
\tableofcontents
..... the rest of doc

问题:如何在此文档类中制作目录?我只需要草稿版本,没有什么花哨的,只有部分/子部分/子部分和章节,以及用于修订的页码。

我的调查:这个课程可以在 IOS Author Corner 上找到,但是我这里只给出了一个网址(太长了,无法复制):http://www.iospress.nl/authco/iospressbookarticle-latex.zip(直接 URL,抱歉)。我发现这个类中有一些定义:

% Block preparation of contents:
\def\addcontentsline#1#2#3{}
\long\def\addtocontents#1#2{}

我注释掉了,但没用。这个类中没有 \tableofcontents 定义。我复制了一个在默认 book.cls 类中找到的定义,但没有用,说有些变量是空的,然后设置为 0。尽管如此,我还是无法得到任何类似于 toc 的东西,而且我太菜鸟了,无法创建自己的类。

请问,如何才能做到这一点?

答案1

没什么特别的...只需从 LaTeX 源和中复制粘贴相关的宏定义即可article.cls

\documentclass{IOS-Book-Article}

\makeatletter

% Copied from the LaTeX sources
\def\addcontentsline#1#2#3{%
  \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
\long\def\addtocontents#1#2{%
  \protected@write\@auxout
    {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
    {\string\@writefile{#1}{#2}}}

% Copied from article.cls
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em}
\newcommand\@dotsep{4.5}
\setcounter{tocdepth}{3}
\newcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }
\newcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty\@secpenalty
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \endgroup
  \fi}
\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
\newcommand\listoffigures{%
    \section*{\listfigurename}%
      \@mkboth{\MakeUppercase\listfigurename}%
              {\MakeUppercase\listfigurename}%
    \@starttoc{lof}%
    }
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\newcommand\listoftables{%
    \section*{\listtablename}%
      \@mkboth{%
          \MakeUppercase\listtablename}%
         {\MakeUppercase\listtablename}%
    \@starttoc{lot}%
    }
\let\l@table\l@figure
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}

\makeatother

\begin{document}

\tableofcontents

\section{foo}

\subsection{bar}

Some text.

\end{document}

编辑:删除了\l@part因为IOS-Book-Article没有命令的定义\part

相关内容