为什么我的 \mathrlap 不能保持重叠?

为什么我的 \mathrlap 不能保持重叠?

我定义了一个\boxstar命令如下:

\newcommand{\boxstar}{\mathrlap{\boxplus}\boxtimes}

它本身看起来就很不错。

在此处输入图片描述

但是,当我有一排星星和其他符号时,星星就会停止正常重叠。

$$\boxstar \boxstar \boxtimes \boxtimes \boxtimes \boxtimes \boxtimes $$

在此处输入图片描述

这里发生了什么?

(使用amssymbmathtools。)

答案1

切勿$$在 LaTeX 中使用

当你这样做时,\boxstar \boxstar \boxtimes \boxtimes你会得到以下原子序列,因为你的\boxstar是由一个普通符号(O)后面跟着一个二进制运算(B)组成的:

O (米) B (米) O (米) B (米) B (0) B

TeX 将在指定的位置插入一个中等空格(m),但在最后两个 B 之间插入零空格,因为它们与二进制运算不兼容,所以它们被视为 O。

您如何解决这个问题?通过说明新符号的行为方式并使用括号\boxtimes使其有效地变成普通符号:

\newcommand{\boxstar}{\mathbin{\mathrlap{\boxplus}{\boxtimes}}}

这里实际上不需要括号,因为由 OB 组成的子公式将变成 OO(根据上面提到的相同规则),但从概念上讲,最好有括号。

这是因为\boxplus\boxtimes的宽度相同。为了叠加不同宽度的符号,最简单的方法是利用\ooalign,参见https://tex.stackexchange.com/a/22375/4427进行快速学习。

你的例子

\[
\boxstar \boxstar \boxtimes \boxtimes \boxtimes \boxtimes \boxtimes
\]

现在将成为

大嘴巴

转化为

O (米) B (米) O (米) B (米) O (米) B (米) O

因为 BB 序列不兼容。

答案2

您必须将两个符号组合在一起。在这里我使用 来\mathbin向 TeX 表明这\boxstar是一个二元运算符。如果您没有这样做,周围的间距\boxtimes会受到其后跟随着的符号的影响,从而导致\boxplus偏离中心。

\documentclass{article}
\usepackage{mathtools}
\usepackage{amssymb}
\newcommand{\boxstar}{\mathbin{\mathrlap{\boxplus}\boxtimes}}
\begin{document}
\[ \boxstar \boxstar \boxtimes \boxtimes \boxtimes \boxtimes \boxtimes \]
\end{document}

在此处输入图片描述

我建议使用 来覆盖符号\ooalign,因为这会相对于中心覆盖它们(\mathrlap相对于左边界覆盖)。

\documentclass{article}
\usepackage{mathtools}
\usepackage{amssymb}
\makeatletter
\newcommand*\boxstar{\mathpalette\@boxstar\relax}
\newcommand*\@boxstar[2]{%
  \mathbin{%
    \ooalign{%
      $\m@th#1\boxplus$\cr
      \hidewidth$\m@th#1\boxtimes$\hidewidth\cr
    }%
  }%
}
\makeatother

\begin{document}
\[ \boxstar \boxstar \boxtimes \boxtimes \boxtimes \boxtimes \boxtimes \]
\end{document}

相关内容