我想插入一个字符,使其具有不宽度。
作为一个玩具示例,考虑\rightarrow\leftarrow
在中间我想插入一个(比如说)\bullet
,但是不水平空间。
我知道这\rightarrow\!\!\!\bullet\!\!\!\leftarrow
大致能完成工作,但只针对这个特定的角色。
在一般情况下,如何进行这种构造?
答案1
一般的解决方案是使用可选的宽度参数makebox
。
\makebox[0pt]{\textbullet}
但是如果你这样做
\(\leftarrow\makebox[0pt]{\textbullet}\rightarrow\)
你仍然会在箭头末端得到一些小空间(因为这是你通常想要的)。所以你可能仍然需要一些负空间,除非你想调整数学原子本身的类型,就像这样
\(\mathord{\leftarrow}\makebox[0pt]{\textbullet}\mathord{\rightarrow}\)
如果你想把整个事情变成一个二元运算符,你可以这样做
\newcommand\spaceship{\ensuremath
\mathbin{\mathord{\leftarrow}\makebox[0pt]{\textbullet}\mathord{\rightarrow}}}
\(a\spaceship b\)
请注意,这些符号实际上重叠,而不是相邻。如果您像示例中最初那样旋转箭头,这一点会更加明显。
\newcommand\spider{\ensuremath
\mathbin{{\rightarrow}\makebox[0pt]{\textbullet}{\leftarrow}}}
\( a\spaceship b\) and \( c\spider d\)
正如评论中指出的那样,该\mathord
命令也不是严格必要的;您只需用括号括住子公式即可达到相同的效果,如第二个示例所示。
makebox
还要注意,即使 a 的内容位于数学公式的中间,它的内容也是以水平模式设置的,因此使用\textbullet
而不是\bullet
。
答案2
这主要取决于它应该放在哪里。如果需要像你给出的例子那样的数学符号,那么
\[
\leftarrow\joinrel\mathrel{\bullet}\joinrel\rightarrow
\]
就足够了。我利用了 TeX 在连续的相对原子;\joinrel
是一个小的退格被认为是相对原子(用于构建长箭头,用减号连接箭头)。整个构造(可能您想将其打包在宏中)就其周围的间距而言被视为关系符号。如果您需要它作为垃圾桶原子,然后使用它作为的参数\mathbin
。
指向相反方向的箭头也是一样的:
\[
\rightarrow\joinrel\mathrel{\bullet}\joinrel\leftarrow
\]
在某些情况下,需要判断备份量。 的定义\joinrel
是
\mathrel{\mkern -3mu}
并且很容易根据此调整金额。例如
\[
\rightarrow\mathrel{\mkern -2mu}\mathrel{\bullet}\mathrel{\mkern -2mu}\leftarrow
\]
会给
必须考虑相对形状,因此无法给出一般规则。