在数学模式下减少与普通文本对齐的方程式的水平间距

在数学模式下减少与普通文本对齐的方程式的水平间距

在下面的例子中,我想知道如何“正确地”消除(或减少)“最小化”/“受制于”与相应方程式之间的水平间距,同时保持两个单词的首字母对齐,并在等号处保持对齐,此外,所有方程式都已编号。

所谓“正确”,我建议不要使用负水平间距\hspace{-...}

谢谢。

\documentclass{article} 
\usepackage{amsmath}
\begin{document}
    \begin{align}
        &\text{minimize} &S(f) &=\int_{-\infty}^{\infty} f^{\prime\prime}(x)^2 \, \text{d}x  \label{eq:min-energy} \\
        &\text{subject~to} &f(x_i) &= y_i, \enspace \text{for} \; i=1,\ldots,m  \label{eq:interp-cond} \\
        & &f^{\prime\prime}(x_1) &= f^{\prime\prime}(x_m)=0  \label{eq:natural-bc} \\
        & &f &\in C^2(-\infty,\infty).  \label{eq:C2-constraint}
    \end{align}
\end{document}

在此处输入图片描述

答案1

如果您不想插入自动间距align,您应该看看alignat。(其他人比我更好地解释了如何使用它,因此下面我将仅举一个我认为间距相对舒适的示例。)

\documentclass{article} 
\usepackage{amsmath}
\begin{document}
\begin{alignat}{10}
        &\text{minimize} &S(f) &=\int_{-\infty}^{\infty} f^{\prime\prime}(x)^2 \, \text{d}x  \label{eq:min-energy} \\
        &\text{subject~to}\; &f(x_i) &= y_i, \enspace \text{for} \; i=1,\ldots,m  \label{eq:interp-cond} \\
        & &f^{\prime\prime}(x_1) &= f^{\prime\prime}(x_m)=0  \label{eq:natural-bc} \\
        & &f &\in C^2(-\infty,\infty).  \label{eq:C2-constraint}
    \end{alignat}
\end{document}

笔记:

  1. \text{subject~to}在我插入之后\;。由于f''下一行有 ,我发现没有额外的空间看起来有点拥挤。你可以另作决定。
  2. 我指定10alignat 的强制参数因为我很懒;请参阅链接了解解释。

不过,我个人认为,在这种情况下,最好不要在等号处对齐。我认为

\begin{alignat}{10}
    &\text{minimize} &&S(f) =\int_{-\infty}^{\infty} f^{\prime\prime}(x)^2 \, \text{d}x  \label{eq:min-energy} \\
    & &&f(x_i) = y_i, \enspace \text{for} \; i=1,\ldots,m  \label{eq:interp-cond} \\
    &\text{subject to}\, \smash{\left\lbrace\vphantom{\begin{array}{l} f \\ f \\ f\end{array}} \right.} &&f^{\prime\prime}(x_1) = f^{\prime\prime}(x_m)=0  \label{eq:natural-bc} \\
    & &&f \in C^2(-\infty,\infty).  \label{eq:C2-constraint}
\end{alignat}

看起来更好。

在此处输入图片描述

(还有其他方法可以让大括号跨越多行alignat,上面给出的方法有点儿像 hack,但不需要任何额外的包。如果你不太懒,可以\vphantom{\begin{array}... \end{array}}用精心选择的高度替换\rule{0pt}{<height>};高度 5.5ex 似乎没问题。)

答案2

这会将文本左对齐,放置在对齐点左侧的等宽框中。 \mathllap重叠此空间的一部分,也使用对齐点。宽度的选择是一个美学问题。

\documentclass{article} 
\usepackage{mathtools}
\usepackage{showframe}% alignment tool
\begin{document}
    \begin{align}
        \makebox[1.25in][l]{minimize}\mathllap{S(f)} &=\int_{-\infty}^{\infty} f^{\prime\prime}(x)^2 \, \text{d}x  \label{eq:min-energy} \\
        \makebox[1.25in][l]{subject~to}\mathllap{f(x_i)} &= y_i, \enspace \text{for} \; i=1,\ldots,m  \label{eq:interp-cond} \\
        f^{\prime\prime}(x_1) &= f^{\prime\prime}(x_m)=0  \label{eq:natural-bc} \\
        f &\in C^2(-\infty,\infty).  \label{eq:C2-constraint}
    \end{align}
\end{document}

坦率地说,我更喜欢 flalign 解决方案:

\documentclass{article} 
\usepackage{mathtools}
\usepackage{showframe}% alignment tool
\begin{document}
    \begin{flalign}
        &\text{minimize} & S(f) &=\int_{-\infty}^{\infty} f^{\prime\prime}(x)^2 \, \text{d}x  \label{eq:min-energy} && \\
        &\text{subject~to} & f(x_i) &= y_i, \enspace \text{for} \; i=1,\ldots,m  \label{eq:interp-cond} && \\
        && f^{\prime\prime}(x_1) &= f^{\prime\prime}(x_m)=0  \label{eq:natural-bc} && \\ %actually, on needed in one line
        && f &\in C^2(-\infty,\infty).  \label{eq:C2-constraint}
    \end{flalign}
\end{document}

答案3

您可以使用optidef包来减少“最小化”/“受制于”与相应方程之间的水平间距。这里有一个例子。

\documentclass[a4paper,12pt]{article}
\usepackage{optidef}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{mini!}<b>
{}{S(f) =\int_{-\infty}^{\infty} f''^2(x) \, \textup{d}x  \label{eq:min-energy}}{}{}
\addConstraint {f(x_i)}{= y_i,}{ \textup{for} \; i=1,\ldots, m  \label{eq:interp-cond} }
\addConstraint { f''(x_1) }{= f''(x_m)=0  \label{eq:natural-bc}}{}
\addConstraint { f}{\in C^2(-\infty,\infty).  \label{eq:C2-constraint}}{}
\end{mini!}
\end{document}

在此处输入图片描述

相关内容