对一组水平分布的方程进行编号

对一组水平分布的方程进行编号

在一个环境内有不同的水平分布方程align,只有行被编号,但没有单独的方程。

如何使用对左边的方程进行编号subequations?另请参阅问题并列的方程式,每个方程式都有编号

\documentclass{article}
\usepackage{amsmath}
\begin{document}
  \begin{subequations}
    \begin{align} 
      %\label{a}
        a &= a ,&
      \label{b}
        b &= b ,\\
      %\label{c}
        c &= c ,&
      \label{d}
      d &= d .
    \end{align}
  \end{subequations}
\end{document}

在此处输入图片描述

该解决方案应该能够:

  • 给左边的方程式贴上标签,或者
  • 修改右侧的标签为 (1a,b) 和 (1c,d)

amsmath我在或其他包的文档中找不到任何东西。

答案1

您可以定义自定义nbytwosubequations环境,逐行对子方程进行两个两个的编号。

注意:此解决方案假设每行包含两个子方程;如果一行只包含一个子方程,则编号将是错误的。

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\makeatletter
\newenvironment{nbytwosubequations}{%
  \refstepcounter{equation}%
  \protected@edef\theparentequation{\theequation}%
  \setcounter{parentequation}{\value{equation}}%
  \setcounter{equation}{0}%
  \def\theequation{%
    \theparentequation\alph{equation}%
    \addtocounter{equation}{1},\alph{equation}%
  }%
  \ignorespaces
}{%
  \setcounter{equation}{\value{parentequation}}%
  \ignorespacesafterend
}
\makeatother

\begin{document}

  \begin{nbytwosubequations}
    \begin{align} 
      a &= a,  &
      b &= b   \label{ab} \\
      c &= c,  &
      d &= d. \label{cd}
    \end{align}
  \end{nbytwosubequations}

\end{document}

答案2

您可以使用minipage

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\noindent\begin{subequations}
\begin{minipage}{.5\textwidth}
    \begin{align} 
      \label{a}
        a &= a, \\
      \label{c}
        c &= c ,
    \end{align}
\end{minipage}%
\begin{minipage}{.5\textwidth}
    \begin{align} 
      \label{b}
        b &= b ,\\
      \label{d}
      d &= d .
    \end{align}
\end{minipage}
\end{subequations}

\end{document}

在此处输入图片描述

这是另一个选项,改编自中的示例mathmode;编号现在遵循所需的顺序:

\documentclass{article}
\usepackage{amsmath}

\newcounter{mySubCounter}
\newcommand{\foureqn}[8]{%
\setcounter{mySubCounter}{0}
\let\OldTheEquation\theequation%
\renewcommand{\theequation}{\OldTheEquation\alph{mySubCounter}}%
\noindent%
\begin{minipage}{.5\textwidth}
\begin{align}
\refstepcounter{mySubCounter}
#1 &= #2 \label{sub\theequation}\\
\addtocounter{equation}{-1}
\addtocounter{mySubCounter}{2}
 #5 &= #6 \label{sub\theequation}
\end{align}
\end{minipage}%
\addtocounter{equation}{-1}%
\addtocounter{mySubCounter}{-1}%
\begin{minipage}{.49\textwidth}
\begin{align}
#3 &= #4 \label{sub\theequation} \\
\addtocounter{equation}{-1} 
\addtocounter{mySubCounter}{2}
#7 &= #8 \label{sub\theequation}
\end{align}
\end{minipage}\par\medskip%
\let\theequation\OldTheEquation}

\begin{document}

Some references: \eqref{sub1a}, \eqref{sub1b}, \eqref{sub1c}, and~\eqref{sub1d}

\foureqn{a}{a+b,}{b+c}{b,}{d+c+e}{c,}{d}{d.}

Some other references: \eqref{sub2a}, \eqref{sub2b}, \eqref{sub2c}, and~\eqref{sub2d}

\foureqn{p+q}{r,}{s+t+u}{v+w,}{x}{y+z,}{z}{z.}

\end{document}

在此处输入图片描述

每个子方程都有一个自动分配的标签,用于交叉引用;标签的形式为sub<number>,其中<number>是用于编号子方程的字符串。

答案3

这不是简单的输入,但似乎有效;在图像中我添加了垂直线以显示页面的中间。也不完美,但在我看来这不是一个好主意。

\documentclass{article}
\usepackage{amsmath,lipsum}

\makeatletter
\newcommand{\leftlabel}[1]{&&
  \refstepcounter{equation}\ltx@label{#1}%
  \tagform@{\theequation}&&}
\makeatletter

\begin{document}
\lipsum[2]
\begin{subequations}
\begin{flalign}
&&a &= a,\leftlabel{a} & b &= b \label{b} &&\\
&&c &= c,\leftlabel{c} & d &= d \label{d} &&
\end{flalign}
\end{subequations}

\end{document}

在此处输入图片描述

相关内容