MathJaxでEulerフォントを使ったときの不具合

Last modified: 2019 年 01 月 21 日 13 時

当サイトは、MathJaxを利用して、ページ内にTeX数式を表示しています。MathMLLaTeX2HTMLなど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

[このページのトップへ]