计数器

计数器是 LaTeX 的一个基本部分:它们允许您控制所有内容(章节、列表、标题等)的编号机制。为此,每个计数器存储一个长整数值,范围为从 2 31 -2^{31} 2 31 1 2^{31}-1 的整数值。[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
    数字从 2 31 -2^{31} 2 31 1 2^{31}-1 被转换为字符串(例如:-2147483648-2147483647,...,12,...,21474836462147483647)。
    示例:1, 2, 3, …

  • \alph
    数字 1 到 26 转换为小写字母(例如:ab,...,z)。其他数字(负数、零、27、28、...)转换为空字符串。
    示例:a, b, c, ...

  • \Alph
    与 \alph 相同,但使用大写字母。
    示例:A, B, C, ...

  • \roman
    数字 1 到 4999 转换为罗马数字(例如:i(1),ii(2),...,mmmmcmxcix(4999))。从 5000 到 2 31 1 2^{31}-1 的数字转换为 "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

最后修改: 2025年04月21日 星期一 10:04