多列更改方程编号缩进

多列更改方程编号缩进

我想在 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}

pdf 的结果

问题在于方程编号。最后一行的方程编号没有与其余部分垂直对齐(尽管“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之外使用指令的必要性(或成功的机会) 。以下内容可能就是您要找的内容:请注意第一个方程的环境使用和其余三个方程的环境使用。我不会使用arraytabularequationalign粗体顺便说一句;良好的布局和材料组织足以传达信息。(我还必须猜测宏是如何\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}

相关内容