在二元运算之前放置数学宏时出现奇怪的间距

在二元运算之前放置数学宏时出现奇怪的间距

我发现在二进制运算之前使用数学宏时会出现非常奇怪的间距。这是一个最简单的例子:

\documentclass[11pt]{article}
\usepackage{amsmath}
\DeclareMathOperator{\id}{id}
\begin{document}

$x\otimes \id$

$\id \otimes x$

\end{document}

生产

在此处输入图片描述

我知道有时宏会“吃掉”它后面的空格,需要我们把它放在括号里,或者在\它后面放一个,但我没想到这个空格操作会受到影响。有人能解释一下发生了什么吗?我该如何进行不同的设置,才能让间距正确?

答案1

这些是 TeX 的规则。你定义\id操作原子(数学运算符),\otimes垃圾桶(二元运算)并且x奥德(普通符号)。因此$\id\otimes x$可以解释为

宾·奥德

但这是规则所不允许的,所以垃圾桶原子变成奥德(想想$\sin -x$,这不是通常打印的内容,但如果它是“正弦减 x”肯定是错误的)。

因此,数学原子的最终序列是

操作命令

插入的空格是

操作(稀薄空间)奥德(没有空间)奥德

如果您的\id宏用于表示身份映射,它不应该是一个数学运算符,而是一个普通符号:

\newcommand{\id}{\mathrm{id}}

这样$\id\otimes x$就可以

奥德(中等空间)垃圾桶(中等空间)奥德

答案2

为了在二元运算符周围正确留出空间\otimes,我会确保运算符\id类似于序数符号,方法是将其包装在一个组内{}

在此处输入图片描述

\documentclass[11pt]{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\DeclareMathOperator{\id}{id}
\begin{document}

$x \otimes {\id}$

${\id} \otimes x$

\end{document}

相关内容