平时看书经常看到“图1.2”这样的编号,含义是第1章的第2幅插图;或者“图1.1.2”,含义是第1章第1节的第2幅插图。而在LaTeX中如果直接插图的话只会显示“图2”这样的编号,有没有办法在LaTeX的图表序号中加入章节序号呢?办法肯定是有的,下面就是一种办法。
在插入图表之前(比如导言区)加入以下两行代码:
enewcommand { hetable} { hechapter{}.arabic{table}}
enewcommand { hefigure} { hechapter{}.arabic{figure}}
第一行是设定表格的编号,第二行设定图片的编号。这样设置的实现效果为“图1.1”、“表2.2”。正文中label{...}和 ef{...}使用方法不变。需要“图1-1”这种格式的话可以把上面指令中的“.”改为“-”。
其中 hechapter是章节号,类似地还有 hesection、 hesubsection。
table和figure是表格和图片计数器(counter)的值。
arabic{...}的含义是输出阿拉伯数字的编号。如果需要大小写的罗马数字,可以分别使用Roman{...}和 oman{...}。
需要注意的是 hechapter、 hesection和 hesubsection这三个宏的输出会包含上层序号,比如在第1章(chapter)第2节(section)第3小节(subsection)中, hesubsection的输出结果就是1.2.3, hesection的输出结果就是1.2, hechapter的输出结果就是1。使用时要注意避免重复,只用其中一个就行了。
与上面三个宏形成对比的是arabic{chapter}、arabic{section}和arabic{subsection}这三个命令,它们也可用在前面的指令中,但它们只输出当前一层的序号,同样以第1章(chapter)第2节(section)第3小节(subsection)为例,arabic{subsection}的输出结果是3,arabic{section}的输出结果是2,arabic{chapter}的输出结果是1。使用这三个指令可以输出“1-2-3”这样的章节编号。
这种方法有一个问题,table和figure计数器不会自动清零,比如第1章有3幅图片,到第2章时LaTeX会从“图2.4”开始编号。为了解决这个问题,需要在合适的地方(比如一章结尾或下一章开头)手动将计数器清零,即
setcounter{table}{0}
setcounter{figure}{0}