对齐环境中的分隔符不足

对齐环境中的分隔符不足

你能解释一下为什么\delimitershortfall不能在环境内修改吗align

这是一个 MWE:

\documentclass{article}

\usepackage{amsmath}

\begin{document}

\begin{equation}
    \delimitershortfall -1pt     \left(\left((x)\right)\right)
\end{equation}

\begin{align}
    \delimitershortfall = -1pt     \left(\left((x)\right)\right)
\end{align}

\end{document}

输出如下:

例子

在第一种情况下,外括号更大,正如预期的那样。但在第二种情况下,新的值\delimitershortfall似乎被忽略了。

答案1

中发生的情况align是,每个单元格都在一个组中,例如{<formula>},因此当公式最终排版时,对的更改\delimiterfactor已被遗忘。如何摆脱这个问题?一种解决方法是在组结束后执行更改。

\documentclass{article}
\usepackage{amsmath}

\newcommand{\dsf}{\delimitershortfall=-1pt }

\begin{document}
\begin{align}
\aftergroup\dsf \left(\left((x)\right)\right)
\end{align}

\end{document}

在此处输入图片描述

amsmath.sty该组在 的定义中的第 2074-2086 行中可见\align@preamble;基本上,每个单元格都使用

$\m@th\displaystyle{##}$

其中\m@th用于中\mathsurround和可能的设置,##代表对齐单元的实际内容。在我们的例子中,输入\aftergroup\dsf相当于使用

$\m@th\displaystyle{\left(\left((x)\right)\right)}\dsf$

这会导致 TeX 使用所需的值。

请注意,TeX 仅使用一个值\delimitershortfall,即退出数学模式并将数学列表转换为水平列表时的值。

例如,参见

\documentclass{article}

\newcommand{\test}{\left(\left((x)\right)\right)}
\newcommand{\testa}{\delimitershortfall=-1pt \test}

\begin{document}

$\displaystyle\test$

$\displaystyle\testa$

$\displaystyle\test\testa$

$\displaystyle\test{\testa}$

\end{document}

在此处输入图片描述

如您所见,在第三行和第四行中,仅使用了一个值\delimitershortfall:在第三行中两个测试都使用 -1pt,在第四行中两个测试都使用默认值 5pt。

因此,您将无法更改\delimitershortfall同一个等式或对齐单元的两个部分。

答案2

使用

\begin{align}
    \global\delimitershortfall=-1pt     
    \left(\left((x)\right)\right)
\end{align}

或者

{\delimitershortfall=-1pt
\begin{align} 
    \left(\left((x)\right)\right)
\end{align}}

的内容align设置在组内

相关内容