在对方程式进行编号时,在节计数器后添加一个额外的点

在对方程式进行编号时,在节计数器后添加一个额外的点

我的部分用计数器后面的点进行编号。我是这样理解的

\renewcommand{\thesection}{\arabic{section}.}

我还需要对各部分内的方程式进行编号,我尝试这样做

\numberwithin{equation}{section}

结果是我得到了带有额外点的方程式数字,例如(1..1)而不是(1.1)

我怎样才能解决这个问题?

答案1

如果在 的定义中添加了结束点\thesection,则还应从使用 的定义中删除“中间”点\thesection,尤其是\theequation\thesubsection。(请注意,对 的重新定义\thesection也会在目录、页眉/页脚和交叉引用中产生结束点。)

\documentclass{article}

\usepackage{amsmath}

\renewcommand{\thesection}{\arabic{section}.}
\numberwithin{equation}{section}

\renewcommand{\theequation}{\thesection\arabic{equation}}
\renewcommand{\thesubsection}{\thesection\arabic{subsection}}

\begin{document}

\section{foo}

\subsection{bar}

\begin{equation}
a^2 + b^2 = c^2
\end{equation}

\end{document}

编辑:为了回应 Frank Mittelbach,这里有一个替代方案,可以更改宏\@seccntformat,以便在新\@seccntdot条件为真时添加一个点。etoolbox包用于在\section每个相等/较低级别分段命令之前将此条件设置为 true,在每个相等/较低级别分段命令之后将此条件设置为 false。

\documentclass{article}

\usepackage{amsmath}

\numberwithin{equation}{section}

\usepackage{etoolbox}

\makeatletter

\newif\if@seccntdot

\pretocmd{\section}{\@seccntdottrue}{}{}
\apptocmd{\@xsect}{\@seccntdotfalse}{}{}

\def\@seccntformat#1{%
  \csname the#1\endcsname
  \if@seccntdot .\fi
  \quad
}

\makeatother

\begin{document}

\section{foo}

\subsection{bar}

\begin{equation}
a^2 + b^2 = c^2
\end{equation}

\end{document}

两个示例的输出:

enter image description here

答案2

正如@lockstep 已经提到的那样,以\thesection这种方式进行更改意味着在任何\thesection使用的地方(在各个地方)都会添加额外的点,例如在交叉引用或目录中,这可能不是我们所希望的。

一种可能的替代方法是更改\@seccntformat​​标准标题命令使用的命令,以格式化标题本身的数字(但不在其他地方)。其默认定义是

\def\@seccntformat#1{\csname the#1\endcsname\quad}

可以轻松地在那里添加点,但是它将应用于用 生成的所有标题\@startsection,例如,,,\section... \subsection,除非您构建一些根据参数提供不同结果的逻辑。

答案3

另一个简单的替代方法是使用 »标题安全« 包将点添加到标题。

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools}   % loads »amsmath«
\usepackage{titlesec}

\numberwithin{equation}{section}

\titleformat{\section}{\normalfont\Large\bfseries}{\thesection.}{1em}{}

\begin{document}
  \section{Foo}
    \subsection{Bar}

      \begin{equation}
        a^2+b^2=c^2
      \end{equation}
\end{document} 

相关内容