在一个环境内有不同的水平分布方程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}