根据实际方程编号对方程进行子编号

根据实际方程编号对方程进行子编号

我正在尝试使用以下方法编写一个优化问题等式数组

Max   z =a + b   (1)
s.t   a > 1     
      b < 4     

但我想将子方程的数字写成如下(1.a)所示(1.b)的形式:

Max   z =a + b   (1)
s.t   a > 1      (1.a)
      b < 4      (1.b)

我该怎么写?请帮忙。

答案1

使用 很容易alignat,用于\tag抑制编号的进展并设置引用的方程编号。

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

\begin{subequations}\label{eq:foo}
\begin{alignat}{2}
\max        &\quad& z &= a + b   \tag{\ref{eq:foo}} \\
\text{s.t.} &     & a &> 1 \\
            &     & b &< 4
\end{alignat}
\end{subequations}

\end{document}

当然,您也可以为这两个条件添加标签。

在此处输入图片描述

答案2

首先:不要使用 eqnarray。它已被严重弃用。请使用包中的多行方程环境之一amsmath来代替。

如果您的格式化需求是一次性的,那么设置单独的环境可能不值得。相反,只需使用\tag\ref指令即可。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{gather}
\max   z =a + b   \label{eq:1} \\
\text{s.t.}\quad           a > 1     \tag{\ref{eq:1}a} \\
\phantom{\text{s.t.}}\quad b < 4     \tag{\ref{eq:1}b} 
\end{gather}
\end{document}

如果需要多次使用,您可能希望使用组合equation(用于主方程式)和gatheralign(用于条件)环境。(组合这些环境的优点是,如果需要,LaTeX 会找到一个好的分页符。)例如,

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\newcommand\ajustspaceandequationnumber{%
   \vspace{-\belowdisplayskip}
   \vspace{-\abovedisplayskip}
   \addtocounter{equation}{-1}}
\begin{document}
\begin{equation}
\max   z =a + b  
\end{equation}
\ajustspaceandequationnumber
\begin{subequations}
\begin{align}
\text{s.t.}\quad  &a > 1   \\
 & b < 4     
\end{align}
\end{subequations}
\end{document}

相关内容