修改子方程编号

修改子方程编号

我目前正在重新定义数学环境中的编号,但遇到了一个问题subbequations

我希望我有一个这样的编号系统:

等式 1.(针对正规方程)

等式 1.A(子方程)

如果我把

\documentclass[12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[leqno]{amsmath}
\usepackage{unicode-math}
\usepackage{etoolbox}
\usepackage{unicode-math}

\makeatletter
    \renewcommand\theequation{%
        \@arabic\c@equation.%
    }

    \renewcommand\tagform@[1]{%
        \maketag@@@{%
        \textbf{\textsc{Eq}.~\ignorespaces#1\unskip}
    }%
}
\makeatother

\patchcmd\subequations
    {\def\theequation{\theparentequation\alph{equation}}}
    {\def\theequation{\theparentequation\protect\Alph{equation}}}
    {}
    {\FAIL}

\begin{document}
\begin{equation}
(a+b)^2 = a^2 + 2 a b + b^2
\label{eq1}
\end{equation}

Some text... \ref{eq1}

\begin{subequations}
    \begin{equation}
    f(x) = a x + b
    \end{equation}
    \begin{equation}
    g(x) = q x + s
    \end{equation}
    \begin{equation}
    h(x) = t x + b
    \end{equation}
\end{subequations}
\end{document}

我有Eq. 1.A。但是如果我使用\ref{eq1}例如,我有1.而不是1

如果我把

\renewcommand\theequation{%
    \@arabic\c@equation%
}
\renewcommand\tagform@[1]{%
    \maketag@@@{%
        \textbf{\textsc{Eq}.~\ignorespaces#1.\unskip}
    }%
}
\patchcmd\subequations % nouvelle numérotation pour les sous-équations
    {\def\theequation{\theparentequation\alph{equation}}}
    {\def\theequation{\theparentequation.\protect\Alph{equation}}}
    {}
    {\FAIL}

我没有问题,\ref{eq1}但是我已经得到了Eq. 1.A.

附加信息:

@egreg 这是我定义的一个命令,用于对方程进行编号,但我在这里用 替换了它,以Alph{}简化事情,我忘记删除它了。谢谢你向我指出这一点。

谢谢@muzimuzhi!但这并不是我想要的。对于正规方程,我希望在方程编号后面有一个点。

因此正确的编号应该是:

等式 1.

等式 2.A

等式 2.B

等式 2.C

所以会有一个点““阿拉伯数字后有空格,大写字母后则无空格。

答案1

在下面的例子中,我提供了一个\p@equation在 内部使用的strange-defined \stepcounter{<counter>}。也许还有更优雅的解决方案。

\documentclass[12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[leqno]{amsmath}
\usepackage{etoolbox}
\usepackage{unicode-math}

\makeatletter
\renewcommand\theequation{%
  \@arabic\c@equation.%
}

\renewcommand\tagform@[1]{%
  \maketag@@@{%
    \textbf{\textsc{Eq}.~\ignorespaces#1\unskip}
  }%
}


\patchcmd\subequations
    {\def\theequation{\theparentequation\alph{equation}}}
    {\def\theequation{\theparentequation\Alph{equation}}}
    {}
    {\FAIL}

\def\p@equation#1{\expandafter\delete@trailing@dot\expanded{#1}.\@nil}
\def\delete@trailing@dot#1.#2.#3\@nil{\ifx\relax#2\relax#1\else#1.#2\fi}
\makeatother

\begin{document}

\begin{equation}
  (a+b)^2 = a^2 + 2 a b + b^2 \label{eq1}
\end{equation}

Some text... \ref{eq1} and \ref{eq2a}

\begin{subequations}
  \begin{align}
    f(x) = a x + b \label{eq2a}\\
    g(x) = q x + s \\
    h(x) = t x + b
  \end{align}
\end{subequations}

\end{document}

在此处输入图片描述

相关内容