我想要做的是对程序(P)进行交叉引用,并且仍然能够对对齐中的每一行进行交叉引用。
\begin{align}
(P)\quad \min &cx\label{objective}\\
s.t.: & Ax\geq b\label{firstConst}\\
& Dx\geq d\label{secondConst}\\
& x\in\{0,1\}\label{binary}
\end{aling}
我知道我可以使用 gather-aligned 来引用程序,但我无法引用单独的行。有什么建议吗?
答案1
您可以使用subequations
来对各个约束进行编号,并使用 来标记整个程序P
。至少这是我在一些书中看到的内容:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
a = b
\end{equation}
\renewcommand{\theequation}{P}
\begin{subequations}\label{ip}
\renewcommand{\theequation}{\theparentequation.\arabic{equation}}
\begin{align}
\min &\ cx\label{objective}\\
\text{s.t.}\qquad Ax & \geq b\label{firstConst}\\
Dx & \geq d\label{secondConst}\\
x & \in\{0,1\}\label{binary}
\end{align}
\end{subequations}
\renewcommand{\theequation}{\arabic{equation}}
The binary program~\eqref{ip}, the objective~\eqref{objective}, the constraint~\eqref{firstConst}.
\begin{equation}
c = d
\end{equation}
\end{document}
答案2
我建议使用一个subequations
环境,在这个环境中,你可以有一个标签(放置在环境之外align
)来引用整个二进制线性程序。这种方法允许你为程序的每一行都有一个标签。
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\diag}{diag}
\begin{document}
\begin{subequations}
\label{myILP}
\begin{align}
\text{minimize} \quad & cx \label{objective} \\
\text{subject to} \quad & Ax \geq b \label{firstConst}\\
& Dx \geq d \label{secondConst}\\
& x \in \{0,1\} \label{binary}
\end{align}
\end{subequations}
\noindent In binary linear program~\ref{myILP},
\eqref{objective} correponds to the (linear) objective,
\eqref{firstConst} and \eqref{secondConst} correspond to
(linear) inequality constraints,
and \eqref{binary} correspond to the binary constraint.
\end{document}