Mathjax 版本的 \DeclareMathSymbol - 如何使某个字符使用不同的字体变体?

Mathjax version of \DeclareMathSymbol - How to make a certain character use a different font variant?

有时在 LaTeX 中我会用 e 来写一堆东西作为欧拉常数,而不是使用 \mathrm{e} 或为它制作一个宏,但我希望它显示在罗马字体中作为常量应该,所以在 LaTeX 中我会做类似的事情:

\DeclareSymbolFont{constants}{OT1}{cmr}{m}{n}
\DeclareMathSymbol{e}{\mathalpha}{constants}{`e}

这使得任何 e 在数学模式下显示为常量(这很好,因为我通常不调用任何变量 e)。

我的问题是:如何在 MathJax 中执行此操作?我不想遍历我写的所有东西并将所有 e 更改为某个宏;我想将 MathJax 配置为自动以罗马字体显示该字符。因此,例如 $abcde$ 应该以 abcd 斜体显示,但 e 应该是罗马体。

一种方法是添加

<script type="text/x-mathjax-config">
(function () {
  var MML;
  MathJax.Hub.Register.StartupHook("mml Jax Ready",function () {
    MML = MathJax.ElementJax.mml;
  });
  MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
    var TEX = MathJax.InputJax.TeX;
    TEX.Definitions.special["e"] = "myConstant";
    TEX.Parse.Augment({
      myConstant: function (c) {
        this.Push(this.mmlToken(MML.mi(c).With({mathvariant:MML.VARIANT.NORMAL})));
      }
    });
  });
})();
</script>

就在加载 MathJax.js 本身的脚本标记之前。这将字母 "e" 标记为特殊字符,导致调用 myConstant 函数(传递给 "e",因此您可以将其他字母附加到 myConstant 以获取它们罗马)。 myConstant 函数创建一个 <mi> 元素,其中 mathvariant="normal" 包含给定的字符,并将其推送到 TeX 处理堆栈上。