线性程序的具体格式

线性程序的具体格式

我正在尝试在 LaTeX 中格式化线性规划问题。我希望目标函数“max”和约束“sc”左对齐。但是,我希望在“sc”右侧有一条垂直线,与实际数学约束对齐并将它们分开。以下是我想要的文本表示:

[P] max x1 -2x2 +x3
s.c.   | -2x1 +x2 +3x3 = 1
       | 2x1 +3x2 +4x3 ≤ 6
       | x1 +x2 +x3 ≥ 1
       | x1, x2, x3 ≥ 0

因此,理想情况下,垂直线应位于 max 下方(在 a 下方或 max 的 x 末端)。有人可以指导我如何在 LaTeX 中实现这一点吗?以下是我的尝试:

  \begin{align*} 
[\text{P}]: & \quad \text{max }  x_1 - 2x_2 + x_3 \\
\text{s.c.} & \begin{array}{|rl}
    & -2x_1 + x_2 + 3x_3 = 1 \\
    & 2x_1 + 3x_2 + 4x_3 \leq 6 \\
    & x_1 + x_2 + x_3 \geq 1 \\
    & x_1, x_2, x_3 \geq 0
\end{array}
\end{align*}

谢谢。

答案1

您可以使用t操作锚定alignedat构造进行约束,并进行一些其他框操作以使元素水平排列。

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\begin{document}

\begin{align*} 
  [\text{P}]: \quad \text{max } & \hspace{.4pt}\phantom{-0}x_1 - 2x_2 + \phantom{0}x_3 \\
  \mathrlap{\text{s.c.}}\phantom{[\text{P}]: \quad \text{max }} & \hspace{-1.2em}\vrule\hspace{1.2em} 
  \begin{alignedat}[t]{3}
    -2x_1 & {}+{} &  x_2 & {}+{} & 3x_3 & = 1    \\
     2x_1 & {}+{} & 3x_2 & {}+{} & 4x_3 & \leq 6 \\
      x_1 & {}+{} &  x_2 & {}+{} &  x_3 & \geq 1 \\
      x_1\mathrlap{,} && x_2\mathrlap{,} && x_3 & \geq 0
  \end{alignedat}
\end{align*}

\end{document}

相关内容