我正在尝试使用以下方法编写一个优化问题等式数组:
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
(用于主方程式)和gather
或align
(用于条件)环境。(组合这些环境的优点是,如果需要,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}