我正在尝试将函数定义为约束优化问题,并且正在努力解决水平对齐和垂直间距问题。这是我所做的最好的事情:
\documentclass{report}
\usepackage{amsmath}
\begin{document}
\begin{subequations} \label{eq:f}
\begin{equation}
f(A, b, c, S, t) = \notag
\end{equation}
\begin{align}
\min~~& c^\top x \label{eq:obj} \\
\text{s.t.}~~
& Ax \le b \label{eq:con_le} \\
& Sx \ge t \label{eq:con_ge} \\
& x \ge 0 \label{eq:con_nonneg}
\end{align}
\end{subequations}
\end{document}
图片中的方程编号符合我的要求,这就是我使用子方程的原因。我试图让第一行和第二行之间的垂直空间与对齐环境中的行距一致。此外,我希望第一行向左移动更多,以便第二行上的“min”与第一行上的“f”进一步错开,最好是可自定义的距离。但是,我不希望错开影响对齐环境中的对齐点。我尝试使用各种环境组合来做到这一点,但无济于事。非常感谢您的帮助。
更新:从...开始@Celdor 的解决方案下面,我决定做以下几点:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{calc}
\begin{document}
\begin{subequations} \label{eq:f}
\begin{align}
\mathllap{f(A, b, c, S, t) =}
% the 2.5em below is the exact distance between the left side of the "f"
% on the first line and the left side of the "min" on the second line
\hspace{\widthof{$\min~~$} - \widthof{$f(A, b, c, S, t) =$} + 2.5em} & \notag \\
% and the additional 2.5em below ensures centering of all content
\hspace{2.5em}
\min~~ & c^\top x \label{eq:obj} \\
\textrm{s.t.}~~ & Ax \le b \label{eq:con_le} \\
& Sx \ge t \label{eq:con_ge} \\
& x \ge 0 \label{eq:con_nonneg}
\end{align}
\end{subequations}
\end{document}
答案1
不要拆分方程式并将所有内容保留在align
环境内。否则,每个额外的环境都会增加额外的垂直空间。
您可以通过全局更改来控制方程式内部行之间的间距,也可以通过在行\jot
后添加额外空格来控制每行之间的间距。\\
\\[3pt]
此外,前两个方程式可以以列分隔符为中心&
,具体取决于它放在哪一侧。宏\mathclap{}
特别方便。它将其参数的框缩小为 0,从而有效地在两侧均匀重叠周围的内容(居中)。前两行可以在列分隔符处以这种方式格式化,然后可以通过剩余的行(约束)确定整个表达式的大小。这将产生预期的效果,或者至少 ti 会接近它。如果可以通过额外的 来纠正居中\hspace{}
。
\documentclass{report}
\usepackage{mathtools}
\begin{document}
\begin{subequations} \label{eq:f}
\setlength\jot{0pt} % Vertical spacing between lines (default = 3pt)
\begin{align}
\mathclap{f(A, b, c, S, t) =}
\hspace{0.0em} & \notag \\[2pt]
\mathclap{\min\,c^\top\!x} & \label{eq:obj} \\
\textrm{s.t.\space} Ax & \le b \label{eq:con_le} \\
Sx & \ge t \label{eq:con_ge} \\
x & \ge 0 \label{eq:con_nonneg}
\end{align}
\end{subequations}
\end{document}