![操作符名称宏前的空格](https://linux22.com/image/405091/%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%90%8D%E7%A7%B0%E5%AE%8F%E5%89%8D%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
当我写出时$2 \operatorname{Re} z$
,我得到了预期的输出,即:
$\Re$
但是,当我在 MathJax 中将其定义为宏时
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
...
TeX: {
Macros: {
Re: ["{\\operatorname{Re}{#1}}",1]
}
}
});
</script>
并写入$2 \Re z$
,渲染的输出是
间距后 Re
按预期呈现,但间距前 Re
不是(即2
离 太近了Re
)。
我如何获得之前的预期间距Re
?(我不认为这是 MathJax 的问题;配置只是为了以防万一而包含在内。)
答案1
问题在于牙套。
尝试编译以下文档
\documentclass{article}
\usepackage{amsmath}
\begin{document}
$ 2 \operatorname{Re} z $
$ 2 {\operatorname{Re} z} $
\end{document}
后者是您在 MathJax 配置中包含的内容。通过声明,\operatorname{Re}
您表明它应该像这样间隔\mathop
(参见这篇文章有更多解释),但只有当它前面有另一个正确类型的对象时,才会遵守间距规则。通过添加额外的括号,您可以抑制这种额外的间距。
在 TeX 文档中,我通常也不会将新宏定义为\operatorname{Re}
,而是使用\DeclareMathOperator
;我不知道在 MathJax 的配置中是否可以这样做。无论如何,请尝试删除配置文件中最外层的括号,看看是否能解决问题。
此外,\operatorname
接受一个参数。我不确定是否需要定义您的\Re
命令,以便它有效地接受一个额外的参数。我可能会写
Re: "\\operatorname{Re}"
作为 MathJax 中的宏定义。