交叉引用以对齐

交叉引用以对齐

我想要做的是对程序(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}

相关内容