newcommand 中的相对 hspace

newcommand 中的相对 hspace

我正在尝试创建一个带有黑色边框的灰色三角形符号。我设法使用以下方法做到了这一点:

\newcommand{\factor}{{\color{gray} \blacktriangledown}\hspace{-1.6ex}\triangledown}

然而,当用作下标或上标时,两个三角形会不同步\factor。也就是说,空间变得太大,黑色三角形不再位于灰色三角形上方。

有没有办法让空间相对于当前字体,以便考虑它是否是上标/下标?

答案1

\mathrlap最简单的方法是使用数学工具

\usepackage{mathtools}
\newcommand{\factor}{\mathrlap{\color{gray}\blacktriangledown}\triangledown}

由于\mathrlap您获得“没有进步”,因此两个符号会一个叠在另一个之上。

一对额外的括号允许说$a_\factor$;另一方面,已经有许多命令不允许这样做(\notin例如)。在这种情况下,可以安全地添加它们:

\newcommand{\factor}{{\mathrlap{\color{gray}\blacktriangledown}\triangledown}}

但是,额外的一对括号将使该符号相对于周围空间而言成为一个普通符号(这就是为什么\notin它不是,因为它是一个关系符号)。因此,必须注意所请求符号的性质。

为了在数学模式下获得文本或下(上)标中自动变化的间距,您必须使用mu单位和\mspace;但在这种情况下这不是必需的。

相关内容