上面的部分hrule
是我在对齐系数时所用到的。我现在想做的是写入\min
和\text{s.a.}
并添加最后一行,即x_i \geqslant 0, \forall i \in [7]
。我在这样做时遇到了一些麻烦,因为这样会弄乱系数的对齐。下面我留下了我的系统代码多于。提前hrule
感谢大家的帮助。
\documentclass[12pt]{report}
\usepackage{amsmath,systeme}
\begin{document}
\begin{equation*}
\sysdelim..\systeme{-10x_1+57x_2+9x_3+24x_4,
0.5x_1-5.5x_2-2.5x_3+9x_4+x_5=0,
0.5x_1-1.5x_2-0.5x_3+x_4+x_6=0,
x_1+x_7 = 1}
\end{equation*}
\end{document}
答案1
这是一个采用两种array
环境的解决方案。
\documentclass[12pt]{report}
\usepackage{amsmath,amssymb,array}
\newcolumntype{C}{>{{}}c<{{}}} % for binary/relational operators
\begin{document}
\begin{equation*}
\setlength\arraycolsep{0pt}
\renewcommand\arraystretch{1.25}
\begin{array}{@{}c@{}}
\min \\[0.5ex] \text{s.a.} \\ \\ \\ \\
\end{array}
\quad
\begin{array}{ r *{7}{Cr} }
-10x_1 &+& 57x_2 &+& 9x_3 &+& 24x_4 \\[0.5ex]
0.5x_1 &-& 5.5x_2 &-& 2.5x_3 &+& 9x_4 &+& x_5 & & & & &=& 0 \\
0.5x_1 &-& 1.5x_2 &-& 0.5x_3 &+& x_4 & & &+& x_6 & & &=& 0 \\
x_1 & & & & & & & & & & &+& x_7 &=& 1 \\
\multicolumn{15}{l}{\phantom{-10}x_i \geqslant 0 \ \forall i\in\{1,2,\dots,7\} }
\end{array}
\end{equation*}
\end{document}
答案2
我们可以欺骗自己systeme
,认为前两个等式中的第一个系数有字。
最后一个条件可以在 的单独一行中设置array
。
\documentclass[12pt]{report}
\usepackage{amsmath,systeme}
\begin{document}
\begin{equation*}
\setlength{\nulldelimiterspace}{0pt}
\sysdelim..
\newcommand{\FIRST}[1]{\makebox[5em][s]{$\min\hfill{#1}$}}
\newcommand{\SECOND}[1]{\makebox[5em][s]{s.a.\hfill${#1}$}}
\begin{array}{@{}l@{}}
\systeme{
{\FIRST{-10}}x_1 + 57x_2 + 9x_3 + 24x_4,
{\SECOND{0.5}}x_1 - 5.5x_2 - 2.5x_3 + 9x_4 + x_5 = 0,
0.5x_1 - 1.5x_2 - 0.5x_3 + x_4 + x_6 = 0,
x_1 + x_7 = 1
}\\
\hspace*{5em} x_i\ge0,\forall i\in[7]
\end{array}
\end{equation*}
\end{document}
不过,我不确定这种大量的对齐是否容易阅读。
答案3
仅使用amsmath
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{9}
\min\quad&& -10&x_1&{}+57&x_2&{}+9&x_3&{}+24&x_4&\\
\text{s.a}\quad&& 0.5&x_1&{}-5.5&x_2&{}-2.5&x_3&{}+9&x_4&{}+{}&x_5&&&&&&=0\\
&& 0.5&x_1&{}-1.5&x_2&{}-0.5&x_3&{}+{}&x_4&&&{}+{}&x_6&&&&=0\\
&& &x_1&&&&&&&&&&&{}+{}&x_7& &= 1\\
\rlap{$\displaystyle x_i \geq0, \forall i \in[7]$}
\end{alignat*}
\end{document}
答案4
systeme
我利用了解析器和数学运算符之间的友好关系,以便能够包括min
和萨。代码确实很难看,但如果你想使用systeme
,我想你很难找到比这更好的了。因此,我强烈建议使用此线程上的其他解决方案之一。
梅威瑟:
\documentclass[12pt]{report}
\usepackage{amsmath,systeme,amssymb}
\DeclareMathOperator{\sa}{\text{\textit{s.a.}}}
\sysaddeqsign{\geqslant}
\begin{document}
\begin{equation*}
\syssubstitute{{x_8}{x_i}}
\sysdelim..
\systeme{%
{\min\quad \-10}x_1+57x_2+9x_3+24x_4,
{\sa\quad \ 0.5}x_1-5.5x_2-2.5x_3+9x_4+x_5=0,
0.5x_1-1.5x_2-0.5x_3+x_4+x_6=0,
x_1+x_7 = 1,
x_8 \geqslant 0@{\forall i\in [7]}}
\end{equation*}
\end{document}