MathJaxでEulerフォントを使ったときの不具合
Last modified: 2019 年 01 月 21 日 13 時
当サイトは、MathJaxを利用して、ページ内にTeX数式を表示しています。MathMLやLaTeX2HTMLなどHTMLページで数式を表示する方法がありますが、MathJaxの良いところは、JavaScriptを利用してフォントのインストールを必要とすることなくTeX数式をきれいにレンダリングするところです(拡大表示してもきれい)。
\begin{align*}
d\omega=-\frac{1}{2}\left[\omega,\omega\right]
\end{align*}
とhtmlソースに書き込むと、
\begin{align*}
d\omega=-\frac{1}{2}\left[\omega,\omega\right]
\end{align*}
のようにEuler(オイラー)フォントで表示されるように設定しています(デフォルトはComputer Modernフォントです)。しかし、ひとつ不具合があって(Computer Modernフォントでは起こりません)、sinなどの関数や数式内のローマン体が斜体に変わってしまうようです(MathJax version 9.9.0現在)。たとえば、
$(\sin x)'=\cos x$
と書けば、$(\sin x)'=\cos x$ と残念な表示になります。そこで、HTMLヘッダに
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } });
MathJax.Hub.Config({
"HTML-CSS": {
availableFonts: [],
preferredFont: null,
webFont: "Neo-Euler",
mtextFontInherit: true
}
});
MathJax.Hub.Config({
TeX: {
Macros: {
cos: '\\mathop{\\text{cos}}\\nolimits',
sin: '\\mathop{\\text{sin}}\\nolimits',
abs: ['\\lvert #1 \\rvert', 1]
}
}
});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
と書き込むと、 $(\sinrm x)'=\cosrm x$ と表示されます。どうやら mtextFontInherit: "false" のオプションがあれば (2018/03/24 追記: mtextFontInherit: true の間違いでした。はんずかしい。。参考:ちょこっと MathJax: 基本的な数式表現)、\text でローマン体を数式中で使うことができます。上のマクロの意味は、\cos x を\mathop{\text{cos}}\nolimits x に置き換えるということです。当分はこれで我慢することにします。
\begin{align*}
\left\{
\begin{aligned}
d\varpi^1&=\varpi^3\wedge\varpi^4\\[1mm]
d\varpi^2&=\varpi^3\wedge\varpi^5 \\[1mm]
d\varpi^3&=\varpi^4\wedge\varpi^5
\end{aligned}
\right.
\end{align*}
やっぱり、Eulerフォントはいいですね! (2017/01/19 記)参考: Neo-Euler does not properly render text (uses math font instead). #1098 [このページのトップへ]