我很惊讶这个网站如此优秀和信息丰富。但是,我无法找到以下问题的答案:
背景:我正在为 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
。