书中第 0 章中的图形计数器问题

书中第 0 章中的图形计数器问题

我的书中有第 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替换。\thetablefiguretable\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}

相关内容