ページ作成
ソースリスト
数式 MathJax
CSS
|
WEB数式 MathJaxweb上で数式を記述する場合,MathJaxが便利です.これを使うと,HTML文書で直接 LaTeXコマンドが使え,美しい数式が表示されます.MathJax の使い方は,とても簡単です. 目次はじめに自然科学や技術系の HTML ドキュメントを記述する場合,数式の表示が問題でした.これまで,私は数式を別に LaTeX で作成し,画像情報 (png, svg) に変換し,それを HTML ドキュメントに埋め込んでいました.自動化しても,とても面倒な作業です.MathJax はこれを解決します.HTML ドキュメント内の LaTeX 表現の数式が,LaTeX でのコンパイルと同じようにブラウザで表示されます. ウィキペディアでは,「MathJax はMathML、LaTeX、ASCIIMathML(英語版)で記述された数式をウェブブラウザ上で表示するクロスブラウザ(英語版)のJavaScriptライブラリである」と書かれています.詳しいことは分かりませんが,TeXの数式を JavaScript ライブラリーを使って表示するようです.数式が多い web ページには大変便利です.これまで,私はTeXで数式を作り,pngやsvgに変換して表示していました.結構な手間です.MathJaxを使うとその手間が省けます.ブラウザで表示する数式の仕上がりもきれいで,満足できます. 日本語の説明は,東北大学の黒木玄先生の「MathJaxの使い方」が大変詳しいです.このページもこの黒木先生のページを参考にして作成しています.MathJaxのホームページには,詳細な説明があります. [注意] これまで使われていた MathJax CDN 2017年4月30日にシャットダウンするようです.ただし,これへの対応は簡単です.HTML ファイルの <head> — </head> を書き換えるだけです.詳細は,MathJax の WEB サイトの Alternative CDN providers を確認ください. まず使ってみようここは,これから始める人や初心者向けの説明です.ほとんどの人は,ここの例をコピー/ペーストするだけで,十分です.御託を並べるよりも,まず使ってみましょう.ここの HTML ソースをコピー/ペーストするだけで,MathJax を使うことができます. 最もシンプル最も簡単な例は,以下のとおりです. 001 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 002 <html lang="ja"> 003 004 <head> 005 <script type="text/javascript" async 006 src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"> 007 </script> 008 </head> 009 010 <body> 011 <p>フーリエ変換は次のように定義されます.</p> 012 013 \begin{align} 014 F(\omega) = \cfrac{1}{\sqrt{2\pi}}\int_{-\infty}^{+\infty}f(t)e^{i\omega t}dt 015 \end{align} 016 017 </body> 018 </html> HTML文書のタグ <head> 内の 005 – 007行目で MathJax を読み込みます.そして本文中で,LaTeX の数式コマンドを記述します.の HTML ドキュメントは,ブラウザで以下のように表示されます. 簡単でしょう.たった3行 (リスト1の 005 – 007 行) を追加することで,HTML 文書で LaTeX の数式コマンドが使えます. 実用に耐える先の簡単な例でもかなり使えます.さらに,数式番号が使えるとぐっと実用的になります. 001 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 002 <html lang="ja"> 003 004 <head> 005 <script type="text/x-mathjax-config"> 006 MathJax.Hub.Config({TeX:{equationNumbers:{autoNumber:"AMS"}}}); 007 </script> 008 <script type="text/javascript" async 009 src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML,/www_func/MathJax/MyConfig.js"> 010 </script> 011 </head> 012 013 <body> 014 <p>\eqref{sin}は正弦関数,\eqref{cos}は余弦関数の定義です.</p> 015 016 \begin{align} 017 \sin x = x-\frac{x^3}{3!}+\frac{x^5}{5!}+\cdots \label{sin} \\ 018 \cos x = 1-\frac{x^2}{2!}+\frac{x^4}{4!}+\cdots \label{cos} 019 \end{align} 020 </body> 021 </html> 先な例 (リスト1) との違いは,005 – 007 行目です.これを付け加えるだけで,式番号が使えます. 式番号を呼び出すコマンドは「\eqref(ラベル)」です. 設定ここからは,中級者向けの説明です.もう少し本格的に使うためには,ある程度の設定が必要です. MathJax の JavaScript の設定MathJax の JavaScript は,WEB サイトのリモートファイルを使う方法と,それをダウンロードしローカルファイルとして使う方法があります.詳細はドキュメント「MathJax Documentation」を参照ください. リモートファイルWEB サイトのサーバー「cdnjs.cloudflare.com」にある MathJax を使う方法で,これは設定がとても簡単です.HTML ファイルの <head> – </head> に以下を記述するだけです. <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"> </script> これは,web プラットフォームの設定を読み込んでいるようです.問題なく読み込まれると,HTML 文書で\(\LaTeX\)のコマンドを使った数式の表示が可能になります. ローカルファイル自分のサーバーに MathJax のファイルを保管することで,「cdnjs.cloudflare.com」が変わってしまった場合でも安心です.少し設定が面倒ですが,私はローカルファイルを使っています.設定方法は,以下のとおりです.
以上で,サーバー側の設定は完了です. このローカルファイルを HTMLドキュメントに反映させるためには,<head> — </head>に,以下を記述します. <script type="text/javascript"
src="パス/MathJax-2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
パスは,サーバーの環境に合わせてください. 筆者流の設定先に示した簡単な設定だと不便なことがあります.そこで,筆者は <head> – </head> に以下を記述します.最初の <script> で数式番号の自動割り付けの指定,二番目でローカルファイルと設定ファイル (local.js) を読み込みます. <script type="text/x-mathjax-config"> MathJax.Hub.Config({ TeX: { equationNumbers: { autoNumber: "AMS" } }}); </script> <script type="text/javascript" src="相対パス/js/MathJax-2.7.1/MathJax.js?config=TeX-MML-AM_CHTML,local/local"> </script> この場合,設定ファイルのパスは「パス/js/MathJax-2.7.1/config/local/local.js」です. このユーザー設定ファイル (local.js) はインストール時に同時に保管させる「local.js」を修正し,作成します.筆者の場合は,以下のようにしました.こうすることにより,どのページからでも同じマクロを使うことができて,便利です. 筆者の MathJax の設定ファイル(local.js) MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { var TEX = MathJax.InputJax.TeX; TEX.Macro("unit","{\\,[\\mathrm{#1}]\\,}", 1); TEX.Macro("diff","{\\mathrm{d}}"); TEX.Macro("vm","{\\boldsymbol{#1}}", 1); TEX.Macro("grad","{\\nabla #1}", 1); TEX.Macro("div","{\\nabla\\cdot #1}", 1); TEX.Macro("rot","{\\nabla\\times #1}", 1); TEX.Macro("pdiffA","{\\frac{\\partial #1}{\\partial #2}}", 2); TEX.Macro("pdiffB","{\\frac{\\partial^{#1} #2}{\\partial #3^{#1}}}", 3); TEX.Macro("ddiffA","{\\frac{\\diff #1}{\\diff #2}}", 2); TEX.Macro("ddiffB","{\\frac{\\diff^{#1} #2}{\\diff #3^{#1}}}", 3); }); MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], processEscapes: true }, TeX: { extensions: ["[Contrib]/siunitx/unpacked/siunitx.js"] } }); MathJax.Ajax.loadComplete("[MathJax]/config/local/local.js"); マクロの書き方は非常に簡単です.\(\LaTeX\)のコマンド「\newcommad」とそっくりです.ただ,引数をともなう場合は,その個数が必要です.また,バックスラッシュ(or 円マーク)を使う場合はエスケープする必要があり,二つ重ねます. 使い方インラインの数式\( と \) で数式を囲んむと,インライン表示できます. 入力 有名なオイラーの公式は,\(e^{i\theta}=\cos\theta+i\sin\theta\) です.
出力 有名なオイラーの公式は,\(e^{i\theta}=\cos\theta+i\sin\theta\)です.
別行立ての数式別行立ての数式も可能です.\begin{align} 数式 \end{align} が使えます.式番号が不要なときには,\begin{align*} 数式 \end{align*}とします.これらは大変便利です. 入力
二階の反対称テンソル
\begin{align*}
f_{\mu\lambda}=
\begin{bmatrix}
0 & cB_z & -cB_y & -iE_x \\
-cB_z & 0 & cB_x & -iE_y \\
cB_y & -cB_x & 0 & -iE_z \\
iE_x & iE_y & iE_z & 0
\end{bmatrix}
\end{align*}
になる.
出力
二階の反対称テンソル
\begin{align*}
f_{\mu\lambda}=
\begin{bmatrix}
0 & cB_z & -cB_y & -iE_x \\
-cB_z & 0 & cB_x & -iE_y \\
cB_y & -cB_x & 0 & -iE_z \\
iE_x & iE_y & iE_z & 0
\end{bmatrix}
\end{align*}
になる.
数式番号とその参照手入力\tag{式番号} で式番号が手入力できます.式には \label{ラベル名} でラベルを付けることができ,\eqref{ラベル名} で参照可能です. 入力 ガウスの発散定理は, \begin{align} \int_V \nabla\cdot AdV=\int_S A\cdot n dS \tag{1} \label{eq:gauss} \end{align} です.式\eqref{eq:gauss}は,微分の体積分はものの関数の面積分になる,と言っています. 出力 ガウスの発散定理は,
\begin{align}
\int_V \nabla\cdot AdV=\int_S A\cdot n dS
\tag{1}
\label{eq:gauss}
\end{align}
です.式\eqref{eq:gauss}は,微分の体積分はものの関数の面積分になる,と言っています.
自動割り付けHTML ファイルの <head> と </head> の間に以下を入れると,数式番号は自動的に割り付けられます.これもまた,式には\label{ラベル名} でラベルを付けることができ,\eqref{ラベル名} で参照可能です. 数式番号の自動割り付けのためには,htmlのヘッダー部に以下を記述 <script type="text/x-mathjax-config"> MathJax.Hub.Config({ TeX: { equationNumbers: { autoNumber: "AMS" } } }); </script> ヘッダー部の設定を行うと,\begin{align} 数式 \end{align} のような別行立ての数式に,式番号が割り付けられます. 入力 式\eqref{eq:Cauchy-Riemann}はコーシー・リーマンの関係式です. \begin{align} &\frac{\partial u}{\partial x}=\frac{\partial v}{\partial y}& &\frac{\partial u}{\partial y}=-\frac{\partial v}{\partial x}& \label{eq:Cauchy-Riemann} \end{align} そして,式\eqref{eq:Cauchy-int}はコーシーの積分公式です. \begin{align} \oint_C \frac{f(z)}{z-z_0}=2\pi i f(z_0) \label{eq:Cauchy-int}\end{align} \end{align} 出力
式\eqref{eq:Cauchy-Riemann}はコーシー・リーマンの関係式です.
\begin{align}
&\frac{\partial u}{\partial x}=\frac{\partial v}{\partial y}&
&\frac{\partial u}{\partial y}=-\frac{\partial v}{\partial x}&
\label{eq:Cauchy-Riemann}
\end{align}
そして,式\eqref{eq:Cauchy-int}はコーシーの積分公式です.
\begin{align}
\oint_C \frac{f(z)}{z-z_0}=2\pi i f(z_0)
\label{eq:Cauchy-int}
\end{align}
式番号が不要なときは,\begin{align*} 数式 \end{align*} のように,アスタリスクを付けます.あるいは,\nonumber を使います.\(\LaTeX\)と同じです. マクロ設定ファイルにマクロの定義を書くと,マクロを使うことができます.LaTeX の \newcommand のようなことができます.ただし,\if — \else は使えないようです.マクロに関しては,オンラインドキュメントの Defining TeX macros に詳しい説明が有ります. マクロを使うと複雑な式も簡単に記述できます.以下にその例を示します. 入力 マクスウェルの方程式は次の4組の微分方程式,
\begin{align*}
&\div{\vm{D}}=\rho\\
&\rot{\vm{E}}=-\pdiffA{\vm{B}}{t}\\
&\div{\vm{B}}=0\\
&\rot{\vm{H}}=j+\pdiffA{\vm{D}}{t}
\end{align*}
のことです.
出力
マクスウェルの方程式は次の4組の微分方程式,
\begin{align*}
&\div{\vm{D}}=\rho\\
&\rot{\vm{E}}=-\pdiffA{\vm{B}}{t}\\
&\div{\vm{B}}=0\\
&\rot{\vm{H}}=j+\pdiffA{\vm{D}}{t}
\end{align*}
のことです.
ページ作成情報参考資料
更新履歴
|