有时在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应该是罗马。
答案 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处理堆栈。