我想在 LaTeX 中显示数学问题定义。我知道有几种方法可以做到这一点,但我仍然希望这种方法可行。这是一个最小的例子。实际方程要长得多:
\documentclass{article}
\begin{subequations}\label{lp}
\begin{align}
\multicolumn{2}{l}{\textbf{min:} \qquad $\displaystyle\sum\limits_{k=1}^{n} A_k$} \\
\multicolumn{2}{l}{\textbf{subject to:}}\nonumber\\
2 + 2 A_k &< B_k & \forall k \\
A_k &> C_k & \forall k\\
\multicolumn{2}{$F(A_k = B_k + C_k)$} & \forall k \noindent
\end{align}
\end{subequations}
\end{document}
问题在于方程编号。最后一行的方程编号没有与其余部分垂直对齐(尽管“for all”符号是对齐的)。这似乎是由于语句造成的multicolumn
。(第一行没有显示此问题,因为它没有额外的 & 符号)。我使用该multicolumn
语句是因为我希望“<”和“>”垂直对齐。有人知道更多关于对齐不正确的原因以及如何纠正它吗?提前谢谢您!
答案1
有点棘手。你必须检查最后一行是否与“for all k”部分重叠。
\documentclass{article}
\usepackage{amsmath,mathtools}
\newcommand{\Xa}[1]{#1_k}
\begin{document}
\begin{subequations}\label{problem}
\begin{alignat}{3}
&\mathrlap{\textbf{minimize:} \qquad\sum_{k=1}^{n} \Xa{A}} \\
&\rlap{\textbf{subject to:}} \nonumber\\
&&\Xa{A} &< \Xa{B} &\qquad& \forall k \\ % <- change \qquad if overlap happens
&&\Xa{A} &> \Xa{C} && \forall k\\
&\mathrlap{F(\Xa{A})=0} &&&& \forall k
\end{alignat}
\end{subequations}
\end{document}
解释。初始&
设置左对齐点;我们不希望在列宽计算中被计算的对象在\mathrlap
。
我们alignat
负责间距;\qquad
如果最后一个术语与“对于所有 k”重叠,则更改为其他内容。
不太棘手:放弃关系符号中的对齐。
\documentclass{article}
\usepackage{amsmath,mathtools}
\newcommand{\Xa}[1]{#1_k}
\begin{document}
\begin{subequations}\label{problem}
\begin{alignat}{2}
&\mathrlap{\textbf{minimize:} \qquad\sum_{k=1}^{n} \Xa{A}} \\
&\rlap{\textbf{subject to:}} \nonumber\\
&\Xa{A}<\Xa{B} &\qquad& \forall k \\
&\Xa{A}>\Xa{C} && \forall k\\
&F(\Xa{A})=0 && \forall k
\end{alignat}
\end{subequations}
\end{document}
第一行将不考虑大小;如果您愿意,只需添加一些备份(通过眼睛计算):
\documentclass{article}
\usepackage{amsmath,mathtools}
\newcommand{\Xa}[1]{#1_k}
\begin{document}
\begin{subequations}\label{problem}
\begin{alignat}{2}
\hspace{-2em}
&\mathrlap{\textbf{minimize:} \qquad\sum_{k=1}^{n} \Xa{A}} \\
&\rlap{\textbf{subject to:}} \nonumber\\
&\Xa{A}<\Xa{B} &\qquad& \forall k \\
&\Xa{A}>\Xa{C} && \forall k\\
&F(\Xa{A})=0 && \forall k
\end{alignat}
\end{subequations}
\end{document}
答案2
也许我遗漏了什么,但我看不出在和类似环境\multicolumn
之外使用指令的必要性(或成功的机会) 。以下内容可能就是您要找的内容:请注意第一个方程的环境使用和其余三个方程的环境使用。我不会使用array
tabular
equation
align
粗体顺便说一句;良好的布局和材料组织足以传达信息。(我还必须猜测宏是如何\Xa
定义的。)
\documentclass{article}
\usepackage{amsmath} % for 'align' and 'subequations' environments
\newcommand\Xa[1]{#1_k} % is this right?
\begin{document}
\begin{subequations}
\begin{equation}\label{problem}
\text{minimize} \quad \sum_{k=1}^{n} \Xa{A}
\end{equation}
subject to
\begin{align}
\Xa{A} < \Xa{B} &\qquad\forall k \\
\Xa{A} > \Xa{C} &\qquad\forall k \\
F(\Xa{A})=0 &\qquad\forall k
\end{align}
\end{subequations}
\end{document}