使用 alignat 环境取消匹配符号

使用 alignat 环境取消匹配符号

我有以下内容:

\documentclass{article}
\usepackage{amsmath} 
\begin{document}

\begin{alignat*}{2}
&|a-b| & < c\\
-c & < a-b & < c
\end{alignat*}

\end{document}

结果是:

在此处输入图片描述

我最初尝试了 align 环境,但它会产生大量空白,经过快速搜索,我发现可以使用 alignat 环境。但是,这里的方程式不匹配。如何修复?

答案1

使用 TABstacks,这是您想要的东西吗?

\documentclass{article}
\usepackage{tabstackengine} 
\TABstackMath
\setstacktabulargap{0pt}
\TABbinary
\begin{document}
\[
\tabularCenterstack{rcl}{
&\vert a-b\vert & < c\\
-c  <& a-b & < c
}
\]
\end{document}

在此处输入图片描述

在这种特殊情况下(但不是一般情况),\tabbedCenterstack也可以使用 a 来实现相同的结果:

\documentclass{article}
\usepackage{tabstackengine} 
\TABstackMath
\TABbinary
\begin{document}
\[
\tabbedCenterstack{
&\vert a-b\vert & < c\\
-c  <& a-b & < c
}
\]
\end{document}

楼主问amsmath环境是否可以单独使用。这里有个办法,但是用了鞋拔子,不太自然。

\documentclass{article}
\usepackage{amsmath} 
\begin{document}

\begin{alignat*}{3}
&|&a-b&| & {}< c\\
-c  <& &a-b& & {}< c
\end{alignat*}

\end{document}

在此处输入图片描述

答案2

本质上,您希望 的宽度|a-b|与 的宽度相匹配a-b。这可以通过以下方式实现eqparbox\eqmakebox[<tag>][<align>]{<stuff>},设置与所有 s 的最大宽度<stuff>相同。默认设置是:<tag><tag><align>c

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath,eqparbox}

\begin{document}

\begin{align*}
       \eqmakebox[abs]{$\lvert a - b \rvert$} & < c \\
  -c <        \eqmakebox[abs]{$a - b$}        & < c
\end{align*}

\end{document}

答案3

alignat以两组为一组的方式处理元素:l&r & l&r并且组间不留任何空格。由于第二个“组”的左侧没有数字,因此要解决这个问题,您需要将第二个数字翻倍&。您还需要在翻倍之后添加一个空组,&&因为在组的第一个元素的开头没有运算符或关系的自动识别,因此间距不正确。

我也不明白为什么align不适合——如果只使用一个对齐点,就不应该有任何大的空间。(我能想到的唯一原因是你想要一个没有完全描述的特殊对齐。)无论如何,我已经包含了一个例子align以及alignat

\documentclass{article}
\usepackage{amsmath} 
\begin{document}

\begin{alignat*}{2}
   & |a-b| && {} < c\\
-c & < a-b && {} < c
\end{alignat*}

\begin{align*}
   |a-b| & < c\\
-c < a-b & < c
\end{align*}

\end{document}

示例代码的输出

答案4

有类似问题已经回答过。请参阅例如。 看一个更复杂的例子这里。看起来解决方案\tabularCenterstack是最稳定的(但我没有测试\le标志周围的间距是否合适)。

但是,如果您坚持使用alignat*,请记住,在 中,每行\begin{alignat*}{2}应该有三个&符号。通常,在中,\begin{alignat*}{n}您应该有2n-1符号&,以便您有2n空格可以输入(包括开头、结尾和 s 之间的空格)。这些空格分别&对应于等式的左侧和右侧。n

问题是alignat*并不意味着在任何这些列中产生居中对齐(它们在右对齐和左对齐之间交替)。如果特定列中的所有项都相等,通常可以通过正确定位 s 来伪造居中对齐&。有时您需要{}在等号/不等号后使用 以获得正确的间距。在其他情况下,您可以尝试使用一些技巧,例如当\eqmakebox两个项具有相同的大小时,但除非您使用 Wener 的一些技巧,否则解决方案将无法很好地扩展。

相关内容