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

时间:2015-09-28 01:15:48

标签: mathjax

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

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

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

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

1 个答案:

答案 0 :(得分:2)

一种方法是添加

<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本身的脚本标记之前。这标志着这封信&#34; e&#34;作为一个特殊字符,它会导致你的myConstant函数被调用(传递&#34; e&#34;,所以你可以将其他字母附加到myConstant以使它们成为罗马字母)。 myConstant函数创建一个<mi>元素,其中mathvariant="normal"包含给定的字符,并将其推送到TeX处理堆栈。