此文章是vip文章,如何查看?  

1,点击链接获取密钥 http://nicethemes.cn/product/view29882.html

2,在下方输入文章查看密钥即可立即查看当前vip文章


Latex计数器

  • 时间:
  • 浏览:
  • 来源:互联网

1 创建简单计数器

在LaTeX中创建一个简单计数器的方法是:

\newcounter{counterName}

\比如创建一个简单计数器叫做counterA:\newcounter{counterA}
计数器的计数范围为-263-1–263-1(即long integer),通常足敷使用了。默认的,计数器的初值为0。

使用简单计数器

使用简单计数器通常涉及到以下几方面的操作:

2.1 赋值计数器

使用\setcounter可以直接赋值计数器,比如:

\setcounter{counterA}{1}

使用\addtocounter可以在计数器原有数值的基础上增减,比如:

\addtocounter{counterA}{1}%意为counterA的数值增加1。
\addtocounter{counterA}{-1}%意为counterA的数值减少1

计数器的步进增减如此常用
LaTeX专门定义了\stepcounter命令,相当于\addtocounter{counterName}{1}

2.2 读取计数器的当前值

计数器的当前值通常有如下的几个方法可以获得(假设计数器的名字为counterName):

\theCounterName
用于显示计数器counterName的当前值(字符串)

\value{counterName}
获取计数器的当前数字(数字),不能单独使用,只能作为其他计数器的参数或者参加运算。

\arabic{counterName}
显示获取计数器的当前数字形式。

注意区分这三种读取计数器当前值的不同用法,比如下列:

\newcounter{counterA}
\newcounter{counterB}
\setcounter{counterB}{\value{counterA}}
\thecounterA\quad\arabic{counterA}

在这里,给counterB赋值时,可以使用\value{counterA}获取counterA的当前数字并赋值给coutnerA,但是不能使用\theCounterA,因此\theCounterA是一个字符串,而\setcounter要求使用数字作为参数。
注意到,\setcounter{counterB}{\arabic{counter}}也是可以的—\arabic即可以显示计数器的当前数值,也可以当作数字来处理。但是,有些计数器不是数字形式的,需要注意\arabic返回的是相应的数字值,不一定代表计数器的真实内容,参见4。

3 创建关联计数器

LaTeX中的计数器,最有特色的是可以创建关联计数器,即将计数器A和计数器B关联在一起,当计数器B的数值递进改变时,计数器A会被复位(清零)。将两个计数器关联起来要使用LaTeX的内部命令@addtoreset,比如将两个计数器counterA和counterB关联起来:

\newcounter{counterA}
\newcounter{counterB}
\setcounter{counterA}{1}
\setcounter{counterB}{1}
\makeatletter
\@addtoreset{counterA}{counterB}
\makeatother
\stepcounter{counterB}
\thecounterA\quad\thecounterB

注意到,只有使用\stepcounter{counterB}递进改变counterB的数值时,counterA才会被清零复位,使用\addtocounter或者\setcounter命令设置counterB的数值,不会影响counterA的数值,这是LaTeX在设计@addtoreset时的基本用意。
由于创建关联计数器很常见,LaTeX也定义了更方便的命令,即:

\newcounter{counterA}[counterB]

意即,创建一个计数器counterA,并将counterA和counterB关联在一起,当counterB递进改变时,counterA会被复位清零,实验代码如下:

\newcounter{counterB}
\newcounter{counterA}[counterB]
\setcounter{counterA}{1}
\setcounter{counterB}{1}
\stepcounter{counterB}
\thecounterA\quad\thecounterB

4 计数器的个性化样式
每个计数器都可以通过如下的命令获取计数器的不同数字样式:

命令
示例

\arabic
1,2,3
\alph
a,b,c…
\Alph
A,B,C…
\roman
i,ii,iii…
\Roman
I,II,III…
\fnsymbol

在脚注中使用特定的符号表示计数器的值
通过下面的代码可以了解以上命令的实际效果:

\newcounter{counterA}
\stepcounter{counterA}
\arabic{counterA}\quad\alph{counterA}\quad\Alph{counterA}\quad\roman{counterA}\quad\Roman{counterA}\quad\fnsymbol{counterA}
\stepcounter{counterA}
\par\arabic{counterA}\quad\alph{counterA}\quad\Alph{counterA}\quad\roman{counterA}\quad\Roman{counterA}\quad\fnsymbol{counterA}
\stepcounter{counterA}
\par\arabic{counterA}\quad\alph{counterA}\quad\Alph{counterA}\quad\roman{counterA}\quad\Roman{counterA}\quad\fnsymbol{counterA}
\stepcounter{counterA}
\par\arabic{counterA}\quad\alph{counterA}\quad\Alph{counterA}\quad\roman{counterA}\quad\Roman{counterA}\quad\fnsymbol{counterA}

5 计数器在章节序号中的应用
LaTeX的每个章节命令都对应着一个计数器,比如report类中包含如下的定义:

\newcounter{part}
\newcounter{chapter}
\newcounter{section}[chapter]
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\newcounter{paragraph}[subsubsection]
\newcounter{subparagraph}[paragraph]

以上计数器的初值都被设置为0(默认值)。
可以看出,计数器section是和计数器chapter关联在一起的,计数器subection是和计数器section关联在一起的……比如article类,当LaTeX顺序扫描文件时,发现第一个\section命令,则首先将section这个计数器增加1(执行\stepcounter命令),于是当前section的章节号变为1。当扫描到第二个\section时,计数器section的值变为2,以此类推。当计数器section等于1时,如果扫描到\subsection命令,则计数subsection做同样的递进增加动作,直到碰到新的\section命令,计数器subsection被复位清零—这正是我们需要的效果。
实际上,定理编号、公式编号等,也是通过定义相应的计数器实现的,不难揣测其实现方式。

本文链接http://element-ui.cn/news/show-577086.aspx