具有“显示数学”垂直尺寸的表格

具有“显示数学”垂直尺寸的表格

我正在尝试排版线性程序:

\usepackage{amsmath,amsthm,amssymb}
\usepackage{array}

\begin{document}

\begin{align*}
    \text{maximize}\quad   3x + 2y &+ 3x + 2y \\
    \text{subject to}\quad 2x + y  &\leq 18 \\
                           2x + 3y &\leq 42 \qquad\forall x\\
                           3x + y  &\leq 2 \qquad\forall y\\
                           x, y    &\geq 0
\end{align*}

\begin{center}
    \begin{tabular}{r>{\(\displaystyle}r<{\)}@{\(\;\)}>{\(\displaystyle}c<{\)}@{\(\;\)}>{\(\displaystyle}l<{\)}>{\(\displaystyle}l<{\)}}
        maximize  &\multicolumn{4}{>{\(\displaystyle}l<{\)}}{3x + 2y + 3x + 2y}\\
        subject to& 2x + y  & \leq & 18 \\
                  & 2x + 3y & \leq & 42 & \forall x\\
                  & 3x + y  & \leq & 2 & \forall y\\
                  & x, y    & \geq & 0  \\
    \end{tabular}
\end{center}

\end{document}

在此处输入图片描述

tabular更容易正确对齐,但正如您所见,它比更紧凑align

我希望获得与表格显示数学相同的垂直间距(或行间间距)。我找到了该\arraystretch属性,但我不知道需要设置什么值。

答案1

对齐会增加行距, 1\jot因此

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,amsthm,amssymb}
\usepackage{array}

\begin{document}

\begin{align*}
    \text{maximize}\quad   3x + 2y &+ 3x + 2y \\
    \text{subject to}\quad 2x + y  &\leq 18 \\
                           2x + 3y &\leq 42 \qquad\forall x\\
                           3x + y  &\leq 2 \qquad\forall y\\
                           x, y    &\geq 0
\end{align*}

\begin{center}

\openup\jot
\setbox\strutbox\hbox{\vrule height.7\baselineskip depth.3\baselineskip width 0pt}

    \begin{tabular}{r>{\(\displaystyle}r<{\)}@{\(\;\)}>{\(\displaystyle}c<{\)}@{\(\;\)}>{\(\displaystyle}l<{\)}>{\(\displaystyle}l<{\)}}
        maximize  &\multicolumn{4}{>{\(\displaystyle}l<{\)}}{3x + 2y + 3x + 2y}\\
        subject to& 2x + y  & \leq & 18 \\
                  & 2x + 3y & \leq & 42 & \forall x\\
                  & 3x + y  & \leq & 2 & \forall y\\
                  & x, y    & \geq & 0  \\
    \end{tabular}

\end{center}

\end{document}

答案2

我建议研究使用alignat**取消编号)。可以将其写为\begin{alignat*}{ncols},其中ncols是要对齐的列数。

请参阅amsmath文档您还可以在 TeX.SE 问题中阅读有关它的内容,例如在egreg这个问题

我远非专家,所以真的不能给出太多建议。我发现需要花点时间才能获得正确的对齐方式(右/左)和定位,但一旦正确,它看起来确实不错!也许更擅长使用 LaTeX 的人会发布一个类似但更精致的解决方案版本……

答案3

optidef您有一个专门用于优化问题的包 ( )。您还可以轻松地将其与alignat*环境对齐。以下是两种解决方案:

\documentclass{article}
\usepackage{amsmath}
\usepackage{optidef}

\begin{document}

\begin{alignat*}{3}
     & \text{maximize} & \quad 3x + 2y &+ 3x + 2y \\
    & \text{subject to} & 2x + y &\leq 18 \\
       & & 2x + 3y &\leq 42 & & \forall x\\
         & & 3x + y &\leq 2 & & \forall y\\
          & & x, y &\geq 0
\end{alignat*}

\begin{maxi*}
  {}{3x + 2y + 3x + 2y}{}{}
\addConstraint{2x + y }{\leq 18}
\addConstraint{2x +3y }{\leq 42}{\qquad\forall x}
\addConstraint{3x + y }{\leq 2}{\qquad\forall y}
\addConstraint{x, y }{\geq 0}
\end{maxi*}

\end{document} 

在此处输入图片描述

相关内容