我在使用书籍 documentclass 的文档中拥有多种不同类型的实体。有章节、实验室、附录等。
仅以实验室为例,我创建了一个新命令来定义实验室并自动编号。我希望它们位于目录中与章节相同的级别。现在,作为一个快速技巧,我创建了实验室章节,这使它们显示出来,但它们显示章节编号和实验室编号。
\newcounter{lab}
\newcommand{\lab}[1]{\stepcounter{lab} \chapter{Lab \arabic{lab}: #1}}
如何指定哪些实体进入目录?
此外,如果我要创建一个自己的独立章节,那么在另一个问题中:自定义 \chapter 定义
在其中一个答案中,我看到了对 chapter 宏的定义的引用,但我没有看到 chapter 如何设置字体和文本大小?代码如下:
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
结果是,我如何创建新实体放入目录,以及这些实体如何定义它们的外观?
答案1
\addtocontents 将记录写入文件 toc,下次运行 latex 时 \tableofcontents 将读取该文件。检查 .toc 文件以查看结果。例如,\string\contentsline 写入“\contentsline”,但不展开。{chapter} 条目与区分章节和节等有关。其余部分与章节相同,只是我使用 \thelab 而不是 \thechapter。
\documentclass{book}
\makeatletter
\newcounter{lab}% also defines \thelab
% roughly equivalent to \chapter
\newcommand{\lab}[1]{% #1 is lab heading
\refstepcounter{lab}%
\if@openright\cleardoublepage\else\clearpage\fi%
\addtocontents{toc}{\string\contentsline {chapter}%
{\hbox to .65in{Lab}\protect\numberline{\thelab}#1}{\thepage}}%
\global\@topnum\z@% page number to bottom?
\noindent%
\@lab{#1}% fixed first character separation
}
% roughly equivalent to \@chapter
\def\@lab#1{% #1 is lab heading
\if@twocolumn%
\@topnewpage[{\huge\bfseries Lab \thelab: #1\par}]%
\else{\huge\bfseries Lab \thelab: #1\par}%
\@afterheading% no idea
\fi}
% copied from mwe
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
% copied from book.cls and modified
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addtocontents{toc}{\string\contentsline {chapter}%
{\hbox to .65in{Chapter}\protect\numberline{\thechapter}#1}{\thepage}}%
\else
\addtocontents{toc}{\string\contentsline {chapter}%
{\hbox to .65in{Chapter}\protect\numberline{\thechapter}#1}{\thepage}}%
\fi
\else
\addtocontents{toc}{\string\contentsline {chapter}%
{\hbox to .65in{Chapter}\protect\numberline{\thechapter}#1}{\thepage}}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\makeatother
\begin{document}
\tableofcontents
\chapter{In the beginning}
This space intentionally left blank.
\lab{Eat the apple.}
This space intentionally left blank.
\end{document}