一些文档元素(例如,book
类中的图表)按章节编号(图 1.1、1.2、2.1,...)。如何实现连续编号(图 1、2、3,...)?
反之亦然:一些文档元素(例如,article
类中的图形)是连续编号的。如何实现按节编号?
\documentclass{book}% for "vice versa" variant, replace `book` with `article`
\begin{document}
\chapter{foo}% for "vice versa" variant, replace `\chapter` with `\section`
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}
附加问题:是否可以调整章节标题本身的编号?例如,我可以从按章节编号切换到课程中各节的连续编号book
吗?
答案1
更改(例如)图形的编号涉及两项修改:
figure
重新定义每当章节/部分计数器增加时是否重置计数器;重新定义计数器的“外观”
figure
(\thefigure
),即删除(或添加)章节/部分前缀。
标准解决方案:\counterwithout
标准解决方案(处理上面提到的修改 1 和 2)是使用\counterwithout
和\counterwithin
命令。
自 2018 年 10 月起,命令位于 LaTeX 内核中;对于早期版本,需要\usepackage{chngcntr}
下面的例子展示了如何在book
类中实现图形的连续编号:
\documentclass{book}
\counterwithout{figure}{chapter}
\begin{document}
\chapter{foo}
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}
相反,以下是如何在类中实现每个部分图形编号的方法article
:
\documentclass{article}
\counterwithin{figure}{section}
\begin{document}
\section{foo}
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}
它对表格、自定义浮点数、方程式和脚注的工作方式相同。(请注意,在许多具有该\chapter
命令的文档类中,即使计数器footnote
不显示章节前缀,脚注也会按章节编号。)这些命令也可用于定理环境;不过,在定义新定理环境时指定其编号更容易:
\newtheorem{thm}{Theorem}% Continuous numbering
\newtheorem{prop}{Proposition}[section]% Per-section numbering
您还可以自定义章节标题本身的编号。例如,为了实现类中的章节连续编号book
(默认情况下,按章节编号),但按章节按部分编号(默认情况下连续编号),您的序言应包含
\counterwithout{section}{chapter}
\counterwithin{chapter}{part}
影响计数器的重置没有更改其外观,使用带星号的宏版本\counterwithout*
和\counterwithin*
。例如,对于类中每个部分的图片编号article
– 但不附加部分前缀\thefigure
–,将以下内容添加到您的序言中:
\counterwithin*{figure}{section}
还可以在文档主体中多次重新定义计数器的重置和外观。请注意\counterwithout
,\counterwithin
和它们的变体不会影响计数器的当前值;要更改后者,请使用\setcounter{<counter>}{<new value>}
。
AMSmath 解决方案
这AMS 课程和amsmath
软件包功能\numberwithin
匹配的宏\counterwithin
。但是,没有与 等效的 AMS \counterwithout
。用法示例:\numberwithin{equation}{section}
。请参阅cmhughes 提供的完整示例。如果您使用数学,您可能更喜欢amsmath
无论如何加载并使用\numberwithin
。
其他解决方案
这caption
软件包具有键值选项figurewithin
和,tablewithin
允许更改(意外的)图形和表格的编号。允许的选项值为chapter
、section
和none
。(对于上面的第一个代码示例,这转换为\usepackage[figurewithin=none]{caption}
。)
这listings
包使用\AtBeginDocument
来定义lstlisting
同名环境的计数器。要关闭具有 的类的环境每章编号\chapter
,请\lstset{numberbychapter=false}
在文档序言中发出。要启用不具有 的类的每节编号\chapter
,请在序言中添加以下内容:
\AtBeginDocument{\counterwithin{lstlisting}{section}}
答案2
Patryk 的答案非常完美。但是每次你想将对象标签重新从“1”开始,你都需要手动重置表格、图形、方程式等的计数器。因此,它更适合带有附录的论文,而不是带有许多章节的书。
该\renewcommand
线路您只需设置一次。
优点就是超级简单,灵活。
像这样:
\setcounter{figure}{0}
\renewcommand{\thefigure}{A\arabic{section}.\arabic{figure}}
创建“图 A1.1”
你也可以这样做
\renewcommand{\thefigure}{Appendix~\arabic{section}.\arabic{figure}}
获得“图附录 1.1”(如果您有这种冲动的话)。
或者
\renewcommand{\thefigure}{A\arabic{section}.\arabic{subsection}.\arabic{figure}}
获得A1节1小节中图1的“图A1.1.1”。
答案3
奇怪的是,还没有人提到该包remreset
及其\@removefromreset
宏或 LaTeX - 核心宏\@addtoreset
。
请参阅xassoccnt
本帖底部的另一个版本。
\documentclass{book}
\usepackage{remreset}
\makeatletter
\@removefromreset{figure}{chapter}
\renewcommand{\thefigure}{\arabic{figure}}
\@addtoreset{figure}{section}
\makeatother
\begin{document}
\chapter{First}
\begin{figure}
\caption{First figure}
\end{figure}
\chapter{Second}
\begin{figure}
\caption{Second figure}
\end{figure}
\section{A section that causes resetting of figure}
\begin{figure}
\caption{Third figure}
\end{figure}
\end{document}
使用xassoccnt
有\RemoveFromReset
和\AddToReset
(不使用\makeatletter...\makeatother
\documentclass{book}
\usepackage{xassoccnt}
\RemoveFromReset{figure}{chapter}
\AddToReset{figure}{section}
\renewcommand{\thefigure}{\arabic{figure}}
\begin{document}
\chapter{First}
\begin{figure}
\caption{First figure}
\end{figure}
\chapter{Second}
\begin{figure}
\caption{Second figure}
\end{figure}
\section{A section that causes resetting of figure}
\begin{figure}
\caption{Third figure}
\end{figure}
\end{document}
请注意\RemoveFromFullReset
,还有从驱动程序重置列表中删除计数器及其自己的重置列表。
更新从 1.3 版开始xassoccnt
,支持以逗号分隔的计数器列表\AddToReset
,\RemoveFromReset
以从驱动程序计数器重置列表中添加或删除。1.5
截至 2017 年 10 月 20 日,当前版本为。
答案4
您还可以重新定义thefigure
命令
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
在article
课堂上
\renewcommand{\thefigure}{\arabic{section}.\arabic{figure}}