LaTeX
计数器
计数器是 LaTeX 的一个基本部分:它们允许您控制所有内容(章节、列表、标题等)的编号机制。为此,每个计数器存储一个长整数值,范围为从 到 的整数值。[1]
计数器操作
在 LaTeX 中,创建新的计数器是非常简单的,甚至可以创建在另一个计数器增加时自动重置的计数器(例如章节中的子节)。使用命令:
\newcounter{NameOfTheNewCounter}
您可以创建一个新的计数器,默认值为零。如果您希望每次增加另一个计数器时,该计数器自动重置为零,请使用:
\newcounter{NameOfTheNewCounter}[NameOfTheOtherCounter]
例如,如果您希望在每个章节中独立编号公式,您可以创建一个名为“equationschapter”的计数器,它将在每个章节的开始时自动重置。
\newcounter{equationschapter}[section]
\section{First Section}
I present one equation:
\stepcounter{equationschapter} $a=b+c$ (Eq. \arabic{section}.\arabic{equationschapter})
\section{Second Section}
I present more equations:
\stepcounter{equationschapter} $a=c+d$ (Eq. \arabic{section}.\arabic{equationschapter})
\stepcounter{equationschapter} $d=e$ (Eq. \arabic{section}.\arabic{equationschapter})
向现有计数器添加另一个计数器
要向现有计数器添加另一个计数器,并在增加时导致重置,可以使用:
\counterwithin*{NameOfTheCounter}{NameOfTheOtherCounter}
如果该命令不起作用,可能是由于使用了旧版 LaTeX,您可以尝试以下命令:
\makeatletter
\@addtoreset{NameOfTheCounter}{NameOfTheOtherCounter}
\makeatother
要撤销该效果,可以使用:
\counterwithout*{NameOfTheCounter}{NameOfTheOtherCounter}
或者:
\makeatletter
\@removefromreset{NameOfTheCounter}{NameOfTheOtherCounter}
\makeatother
增加计数器
您可以使用以下命令来增加计数器:
\stepcounter{NameOfTheNewCounter}
或者:
\refstepcounter{NameOfTheNewCounter} % 用于标签和交叉引用
或者:
\addtocounter{NameOfTheNewCounter}{number}
这里的 number
也可以是负数。对于自动重置的计数器,您需要使用 \stepcounter
。
设置计数器的值
要显式设置计数器的值,使用:
\setcounter{NameOfTheNewCounter}{number}
计数器访问
有几种方法可以访问计数器的值。
-
\theNameOfTheNewCounter
会打印与计数器相关的格式化字符串(注意,计数器的实际名称前加了 "the")。 -
\value{NameOfTheNewCounter}
会返回计数器的值,可以用于其他计数器或计算。它不是格式化的字符串,因此不能在文本中使用。 -
\arabic{NameOfTheNewCounter}
会打印使用阿拉伯数字格式的计数器。
请注意,\arabic{NameOfTheNewCounter}
也可以作为一个值使用,但其他格式(如 \value
)不能。
奇怪的是,LaTeX 计数器在任何情况下都不会使用反斜杠,即使是在 \the
命令中。纯 TeX 中的等效命令 \count
和 \newcount\mycounter
遵循反斜杠规则。
计数器样式
以下是一些 LaTeX 内部命令,用于将指定计数器的数字值转换为可打印的字符串,并将该字符串插入文档:
-
\arabic
数字从 到 被转换为字符串(例如:-2147483648
,-2147483647
,...,1
,2
,...,2147483646
,2147483647
)。
示例:1, 2, 3, … -
\alph
数字 1 到 26 转换为小写字母(例如:a
,b
,...,z
)。其他数字(负数、零、27、28、...)转换为空字符串。
示例:a, b, c, ... -
\Alph
与 \alph 相同,但使用大写字母。
示例:A, B, C, ... -
\roman
数字 1 到 4999 转换为罗马数字(例如:i
(1),ii
(2),...,mmmmcmxcix
(4999))。从 5000 到 的数字转换为 "mmmmm"(5000),"mmmmmi"(5001)等。其他数字(负数、零)转换为空字符串。
示例:i, ii, iii, ... -
\Roman
与 \roman 相同,但使用大写字母。
示例:I, II, III, ... -
\fnsymbol
适用于脚注;打印符号序列。
数字与符号对应如下:-
1: ∗
-
2: †
-
3: ‡
-
4: §
-
5: ¶
-
6: ∥
-
7: ∗∗
-
8: ††
-
9: ‡‡
其他数字:空字符串
示例:∗, †, ‡, ...
-
LaTeX 默认计数器
-
part:部分
-
chapter:章节
-
section:节
-
subsection:小节
-
subsubsection:子小节
-
paragraph:段落
-
subparagraph:子段落
-
page:页
-
figure:图
-
table:表格
-
footnote:脚注
-
mpfootnote:多页脚注
对于 enumerate
环境:
-
enumi:第一级
-
enumii:第二级
-
enumiii:第三级
-
enumiv:第四级
对于 eqnarray
环境:
-
equation:方程
创建没有章节的书籍
下面是一个例子,展示了如何在 book
类中使用部分和节,但没有章节:
\renewcommand{\thesection}{\thepart .\arabic{section}}
\part{My Part}
\section{My Section}
\subsection{My Subsection}
自定义 enumerate
参见《列表结构》章节。
自定义章节编号
下面是一个重新创建类似于 LaTeX 中现有的章节和小节计数器的例子:
\newcounter{mysection}
\newcounter{mysubsection}[mysection]
\addtocounter{mysection}{2} % 将计数器设置为其他数字
\addtocounter{mysubsection}{10} % 同上
\arabic{mysection}.\arabic{mysubsection}
Blah blah
\stepcounter{mysection}
\arabic{mysection}.\arabic{mysubsection}
Blah blah
\stepcounter{mysubsection}
\arabic{mysection}.\arabic{mysubsection}
Blah blah
\addtocounter{mysubsection}{25}
\arabic{mysection}.\arabic{mysubsection}
Blah blah and more blah blah