TeX数式で日本語が文字化けする

TeX数式で日本語が文字化けする

- 勝 土屋 の投稿
返信数: 3

さくらインターネットのスタンダードコースにmoodle-2.6.2をインストールしたのですが、TeX数式中で日本語が化けてしまいます。

 

環境

FreeBSD 9.1-RELEASE-p9

Apache 2.2.25

PHP Version 5.4.22

MySQL 5.5.32

Moodle 2.6.2

文字コード:UTF-8

 

TeX表記法をOnにして、下記コマンドを書き込みました。

 

$$\text{周波数}f[\mathrm{Hz}]=\frac{1}{\textmc{周期}T[\textgt{秒}]}$$

 

コースからこのページを見ると「周波数」「周期」「秒」の文字が[?]と化けています。

このソースをlatexファイルに書き込み、pdfplatexでタイプセットすれば正常に表示されます。

latex.phpに$doc =  "\\documentclass[{$fontsize}pt]{article}\n";となっているのが原因で、ここをjsarticleにすれば良いのかと

思いましたが、そもそもmoodleフォルダ内にarticle.clsがないのでjsarticle.clsを指定しても意味が無いようです(文字化けのまま)。

どうすれば文字化けせずに表示されるのでしょうか。

 

添付 moodle_equation.png
勝 土屋 への返信

Re: TeX数式で日本語が文字化けする

- udagawa mitsuru の投稿

TeXフィルタで使っているmimeTeXの問題なのでしょう。問題が解決すれば良いのであれば、TeXフィルタの代わりにMathJaxを使ってみてはいかがでしょうか。

[サイト管理] - [アピアランス] - [追加HTML] でHEAD内に以下を追記すればMathJaxを有効に出来ます。

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    MMLorHTML: { prefer: "HTML" },
    tex2jax: {
        displayMath: \[', '\\]'">'\\[', '\\]',
        inlineMath:  \(', '\\)'">'\\(', '\\)',
        processEscapes: true
    },
    TeX: { extensions: ['enclose.js'] }
});
</script>
<script type="text/javascript" src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>

これだとTeXの開始タグが"\["と"\("だけになりますので、"$$"を有効にする場合は上記スクリプト内のオプションを変更する必要があります。

添付 mathjax.PNG
udagawa mitsuru への返信

Re: TeX数式で日本語が文字化けする

- 勝 土屋 の投稿

udagawa mitsuruさん どうもありがとうございます

MatJaxを設定したら日本語を含む数式がちゃんと表示されました。ただ、掲示していただいたコードではうまく動かず、他のサイトを

探して取ってきた

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({ tex2jax: { inlineMath: \(","\\)"">'$','$'], ["\\(","\\)" } });
</script>
<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
<meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />

というのを使っています。

勝 土屋 への返信

Re: TeX数式で日本語が文字化けする

- udagawa mitsuru の投稿

inlineMathオプションはインライン表示させる開始・終了タグの組み合わせを指定し、
displayMathオプションはブロック表示させる開始・終了タグの組み合わせを指定します。

        displayMath: $$', '$$'], ['\\[', '\\]'">'$$', '$$'], ['\\[', '\\]',
        inlineMath:  \(', '\\)'">'$',  '$' ], ['\\(', '\\)',

のように設定しておくと、$$TeX text$$ および \[TeX text\] は行内に表示され、
$TeX text$ および \(TeX text\) は独立した行に表示されるようになります。

ただし、単独の$を開始・終了タグに設定しておくと、 「1$=360円から、1$=100円になりました」みたいな文章が出たときにフィルタしてしまうため、あまりお勧めはしません。