![书中第 0 章中的图形计数器问题](https://linux22.com/image/466528/%E4%B9%A6%E4%B8%AD%E7%AC%AC%200%20%E7%AB%A0%E4%B8%AD%E7%9A%84%E5%9B%BE%E5%BD%A2%E8%AE%A1%E6%95%B0%E5%99%A8%E9%97%AE%E9%A2%98.png)
我的书中有第 0 章用于回忆先决条件。图形环境应该遵循默认编号方案:\thechapter.\thefigure
。但是,该方案在第 0 章中被违反,而在“非零”章节中的行为符合预期。以下 MWE 说明了这个问题。我希望 sfigure
在第 0 章中遵循与其他章节相同的编号方案。
\documentclass{book}
\usepackage{graphicx}
\begin{document}
\setcounter{chapter}{-1}
\chapter{0th}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\chapter{1st}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\end{document}
答案1
\numberwithin{figure}{chapter}
请尝试使用包装中的标签amsmath
,并且MWE
是:
\documentclass{book}
\usepackage{graphicx}
\usepackage{amsmath}
\begin{document}
\numberwithin{figure}{chapter}
\setcounter{chapter}{-1}
\chapter{0th}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\clearpage
\chapter{1st}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\end{document}
答案2
最初book.cls
定义\thefigure
为:
\renewcommand \thefigure
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
\c@chapter
这意味着,仅当章节号 ( ) 大于 0 ( )时,才会显示章节计数器\z@
。这是为了避免在前言中使用章节计数器前缀。
为了避免这种情况,您可以删除该条件并使用:
\renewcommand\thefigure{\thechapter.\arabic{figure}}
在文档序言中。可以使用以下方法完成相同的操作:
\counterwithout{figure}{chapter}% only to have the counter only once in the reset list of chapter, which usually wouldn't be problematic
\counterwithin{figure}{chapter}
但是(如前所述),这也会在前言中显示“0.<FigureNo>”,其中章节不会编号。为了避免这种情况,您可以使用类似于 KOMA-Script 类的定义scrbook
:
\makeatletter
\renewcommand*{\thefigure}{\if@mainmatter\thechapter.\fi\@arabic\c@figure}
\makeatother
如果您的第 0 章中还有其他元素也使用章节计数器,那么您也可以调整上述所有内容。例如,对于表格,请用、by\thefigure
或by替换。\thetable
figure
table
\c@figure
\c@table
下面是一个包含所有相关计数器的示例,定义如下book.cls
:
\documentclass{book}
\usepackage{graphicx}
\renewcommand*{\thefigure}{\thechapter.\arabic{figure}}
\renewcommand*{\thetable}{\thechapter.\arabic{table}}
\renewcommand*{\theequation}{\thechapter.\arabic{equation}}
%\renewcommand*{\thelstlisting}{\thechapter.\arabic{lstlisting}}% if you use listings in your chapter 0
\begin{document}
\setcounter{chapter}{-1}
\chapter{0th}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\clearpage
\chapter{1st}
\begin{figure}
\includegraphics{example-image-a}
\caption{Image A}
\end{figure}
\begin{figure}
\includegraphics{example-image-b}
\caption{Image B}
\end{figure}
\end{document}