![如何使用`\phantom` 沿着求和运算符对齐方程式?](https://linux22.com/image/321775/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%60%5Cphantom%60%20%E6%B2%BF%E7%9D%80%E6%B1%82%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%E5%AF%B9%E9%BD%90%E6%96%B9%E7%A8%8B%E5%BC%8F%EF%BC%9F.png)
以下 MWE 显示了具有目标和约束的以下伪优化问题。我试图在第 2 行和第 3 行中实现约束的视觉对齐。但是,\phantom
使用\sum_{...}
作为参数的简单方法不会创建相等的空间。我尝试添加{}
左和右,但这似乎也不是解决方案。所以问题是这样的:
我怎样才能协调对其操作员的限制?
(顺便说一句:如果有办法直接使用设施&
来align
实现这一点,我很高兴看到这是一个解决方案。但我不知道该怎么做。)
图像
M-不是-WE
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
\min_{x,y}\ & c_1 x_1 + c_2 x_2 + c_3 y \\
\mathrm{s.t.}\, &
\sum_{i\in \{1,2\}} x_i \geq d \\
& \phantom{\sum_{i\in \{1,2\}}} % what to add here?
x_i \leq y \ \forall i\in\{1, 2\}
\end{align*}
\end{document}
答案1
答案2
这是一种在顶线下方堆叠 TABstack 的方法。
\documentclass{article}
\usepackage{tabstackengine}
\stackMath
\begin{document}
\[
\setstackgap{S}{5pt}
\def\stackalignment{l}
\stackunder{\displaystyle\min_{x,y}\ c_1 x_1 + c_2 x_2 + c_3 y}{%
\alignShortstack{%
\,\mathrm{s.t.}\, \displaystyle\sum_{i\in \{1,2\}} x_i \geq& d \\
x_i \leq& y \ \forall i\in\{1, 2\}
}}
\]
\end{document}
答案3
如果您要使用\phantom
,可以按如下方式操作:
\begin{align*}
\min_{x,y}\ & c_1 x_1 + c_2 x_2 + c_3 y \\
\mathrm{s.t.}\, &
\sum_{i\in \{1,2\}} x_i \geq d \\
& \phantom{{}\sum_{i\in \{1,2\}}{}} % what to add here?
x_i \leq y \ \forall i\in\{1, 2\}
\end{align*}
原因是和的周围有一些空间,将和与其相邻的元素分开。如果\sum
没有直接的邻居,因为它在其\phantom
组中是“单独的”,那么这个空间就会消失。如果在和的前后添加空括号,则空间会重新插入。
答案4
我建议对@Harish Kumar 的解决方案做一个小小的改进,使用mathtools
,和两个变体来布局这个等式:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{align*}
& \min_{x,y}\{ c_1 x_1 + c_2 x_2 + c_3 y\} \\
& \,\mathrm{s. t.}\enspace \begin{aligned}[t]
\sum_{\mathclap{i\in \{1,2\}}} x_i & \geq d \\
x_i & \leq y \ \forall i\in\{1, 2\}
\end{aligned}
\end{align*}
\begin{align*}
& \min_{x,y}\{ c_1 x_1 + c_2 x_2 + c_3 y\} \\
& \,\mathrm{s. t.}\enspace \begin{aligned}[t]
x_1 + x_2 & \geq d \\
x_1,x_2 & \leq y
\end{aligned}
\end{align*}
\begin{align*}
& \min_{x,y}\{ c_1 x_1 + c_2 x_2 + c_3 y\} \\
& \,\mathrm{s. t.}\enspace \begin{array}[t]{|l}
x_1 + x_2 \geq d \\
x_1,x_2\leq y
\end{array}
\end{align*}
\end{document}