2015-09-28 16 views
0

有時候在LaTeX中,我會寫一些東西用歐拉常數寫成e,而不是使用\mathrm{e}或爲它製作一個宏,但是我希望它以羅馬字體的形式顯示爲常量,所以在LaTeX I中倒是這樣做: DeclareMathSymbol的Mathjax版本 - 如何使某個字符使用不同的字體變體?

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

這使得任何e在數學模式顯示爲一個常數(這是很好的,因爲我通常不調用任何變量E)。

我的問題是:我如何在MathJax中做到這一點?我不想完成所有我寫的東西,並將所有的e改爲一些宏;我想配置MathJax以羅馬字體自動顯示該字符。因此,例如$abcde$應該以abcd斜體顯示,但e應該是羅馬。

回答

2

一種方法是隻加載MathJax.js本身script標籤之前添加

<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> 

。這將字母「e」標記爲導致您的myConstant函數被調用的特殊字符(通過「e」,因此您可以將其他字母附加到myConstant以使它們成爲羅馬字母)。 myConstant函數創建一個<mi>元素,mathvariant="normal"包含給定的字符,並將其推送到TeX處理堆棧。