smashoperator 将大括号与限制重叠

smashoperator 将大括号与限制重叠

\smashoperator将大括号拉得太近,导致它们与限制重叠。有什么解决方法吗?

编辑:一个临时解决方案是使用\, \quad等在左/右括号的右侧/左侧强制留出适当数量的空白。但这些“技巧”显然破坏了使用 LaTeX 的全部意义。

例子:

\documentclass[american]{article}
\usepackage{amsmath,amssymb,amsthm,mathtools}
\usepackage{babel}

\begin{document}

$\lambda\left(\smashoperator{\bigcup_{x=lowerlimit}^{upperlimit}} f(x) \right)$

\end{document}

答案1

正如评论中所述,定义一个\smashoperator处理所有可能涉及长限制的情况的命令非常困难。要理解为什么这很困难,您需要对 中的框有所了解TeX。粗略地说,水平粉碎的框(本例中的限制)被认为具有零宽度,并且没有简单的方法可以说

小物体要考虑极限才可以砸,大物体则不用。

这正是您所需要的。

以下代码似乎适用于您的情况,但在我未考虑的其他情况下可能会失败。在我看来,最好避免使用长限制,因为它们很怪异(也许这就是为什么作者没有提供mathtools构建它们的简单方法的原因)。

\documentclass{minimal}
\usepackage{mathtools}
\newcommand{\test}[4]{ %
  %
  \newbox\bigbox
  \newbox\smallbox
  \newbox\argbox
  \newdimen\smallwidth
  \newdimen\offsetwidth
  \newdimen\argwidth
  %
  %Store the unsmashed operator in \bigbox. 
  \sbox\bigbox{\ensuremath{\displaystyle #1_{#2}^{#3}}}
  %Now store the smashed operator in \smallbox. 
  \sbox\smallbox{\ensuremath{\smashoperator{#1_{#2}^{#3}}}}
  %Finally, store the argument in \argbox
  \sbox\argbox{\ensuremath{\displaystyle \,#4}}
  %Calculate the width of the argument
  \argwidth=\wd\argbox
  %
  %Calculate the width by which the limits protrude. Note:
  %this will evaluate to zero if the limits do not protrude.
  \offsetwidth=\wd\bigbox
  \smallwidth=\wd\smallbox
  \multiply\smallwidth by -1
  \advance\offsetwidth by \smallwidth
  \divide\offsetwidth by 2
  %
  %Place the unsmashed operator and the argument on the page, 
  %pulling back the argument by the appropriate distance.
  \usebox\bigbox\hspace{-\offsetwidth}\usebox\argbox
  %
  %If the width of the argument is less than the width of
  %the protrusion, we now need to add some more space.
  \ifnum\offsetwidth>\argwidth \hspace{\offsetwidth}\hspace{-\argwidth} \fi
  %
}
\begin{document}
\begin{equation*}
\left[\test{\bigcup}{longlimit}{longlimit}{f(x)} \right]
\quad
\left[\test{\bigcup}{veryverylonglimit}{veryverylonglimit}{f(x)} \right]
\quad
\left[\test{\bigcup}{x}{y}{f(x)} \right]
\end{equation*}
\end{document}

相关内容