![将线性程序与数字对齐](https://linux22.com/image/300885/%E5%B0%86%E7%BA%BF%E6%80%A7%E7%A8%8B%E5%BA%8F%E4%B8%8E%E6%95%B0%E5%AD%97%E5%AF%B9%E9%BD%90.png)
我怎样才能使我的线性程序适合我的工作表但仍然让数字在右侧对齐?
\documentclass{article}
% page layout
\usepackage[paper=a4paper,left=50mm,right=20mm,top=20mm,bottom=10mm]{geometry}
% fancy math
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
\begin{alignat}{2}
&\textbf{Minimize} \\
&z =\sum\limits_{i \in I}\sum\limits_{t \in W_i^{work}} c^{period} * x_{i,t}^{work} + \sum\limits_{i \in I} c^{over} * o_i + \sum\limits_{i \in I} c^{staff} * v_i^{staff} + \sum\limits_{d \in D} c^{device} * v_d^{device} \\
&\textbf{subject to} \\
&\sum\limits_{i \in I_{q':q'=q}} (( \sum\limits{r=t}^{t+W_z^{demand}} x_{i,r}^{work} - y_{i,t}^{break} ) * v_i^{staff}) \geq b_{q,t,z}^{staff} && \forall q \in Q,t \in T, z \in Z \\
&H^{break} * \sum\limits{t \in W_i^{shift}} y_{i,t}^{shift} = \sum\limits{t \in W_i^{break}} y_{i,t}^{break} && \forall i \in I \\
&D_i^{min} \leq \sum\limits{t \in T} y_{i,t}^{shift} \leq D_i^{max} && \forall i \in I
\end{alignat}
\end{document}
这就是我目前所拥有的:
也许拆分一些公式是一种解决方案?我能将字体缩小到多小,直到无法阅读?
我跟着这个问题使用alignat
,遗憾的是没有编号并且它要小得多。
编辑#1:
\quad
帮助很大,但缺少一行。
答案1
我会做以下事情
&&
将之前的三个实例替换\forall
为\quad
。(可选)由于现在只剩下一个对齐点,因此可以将其替换{alignat}{2}
为align
。在仅包含文本的两行中添加
\notag
说明(“最小化”、“服从”)强制上标位置的所有单词以文本直立模式而不是数学斜体模式排版。即使这无助于使第一个方程式适合文本块(幸运的是,它确实适合),我也会这样做。如果您强烈希望上标位置的单词采用文本斜体模式而不是文本直立模式,请
\textnormal
在宏定义中将其替换\tn
为\textit
。\Bigl
使用和扩大第一行条件中的括号\Bigr
。为了使该行中的第一个和第二个求和符号紧密结合,请插入\!\!\!
-- 三个负数空格。要强制将第一个数学行中的两个求和表达式的求和限度设置为相同的深度,请用 替换
{i \in I}
。{i \in I^{\mathstrut}}
A\mathstrut
是一个不可见的对象,其高度和深度与括号 ((
) 相同。最后,我将删除所有
\limits
指令,因为它们是多余的,只会造成混乱。默认情况下,align
和alignat
环境中的材料是排版的\displaystyle
,这意味着所有求和符号都将设置为“大”形式,并且所有求和限制都将设置在求和符号下方(如果存在,则设置在上方),而不是设置在右侧。
\documentclass{article}
\usepackage[paper=a4paper,left=50mm,right=20mm,
top=20mm,bottom=10mm]{geometry}
\newcommand\tn[1]{\textnormal{#1}} % shortcut macro
\usepackage{amsmath}}
\begin{document}
\begin{align}
&\textbf{Minimize} \notag \\
&z =\sum_{i \in I^{\mathstrut}}\sum_{t \in W_i^{\tn{work}}} c^{\tn{period}} * x_{i,t}^{\tn{work}} + \sum_{i \in I} c^{\tn{over}} * o_i + \sum_{i \in I} c^{\tn{staff}} * v_i^{\tn{staff}} + \sum_{d \in D} c^{\tn{device}} * v_d^{\tn{device}} \\
&\textbf{subject to} \notag \\
&\sum_{i \in I_{q':q'=q}} \!\!\! \Bigl(\Bigl( \sum{r=t}^{t+W_z^{\tn{demand}}} x_{i,r}^{\tn{work}} - y_{i,t}^{\tn{break}} \Bigr) * v_i^{\tn{staff}}\Bigr) \geq b_{q,t,z}^{\tn{staff}} \quad \forall q \in Q,t \in T, z \in Z \\
&H^{\tn{break}} * \sum{t \in W_i^{\tn{shift}}} y_{i,t}^{\tn{shift}} = \sum{t \in W_i^{\tn{break}}} y_{i,t}^{\tn{break}} \quad \forall i \in I \\
&D_i^{\tn{min}} \leq \sum{t \in T} y_{i,t}^{\tn{shift}} \leq D_i^{\tn{max}} \quad \forall i \in I
\end{align}
\end{document}