Open main menu

Extension:Math/高度な設定

< Extension:Math
This page is a translated version of the page Extension:Math/advancedSettings and the translation is 100% complete.

Other languages:
English • ‎polski • ‎português do Brasil • ‎日本語

数式拡張機能はtexvcその他のバックエンドを利用し、数式のレンダリングをサポートします。 この拡張機能で現在、何ができるかについては数式の表示にまとめてあります。

Contents

texvc のインストール

サーバ側で LaTeX から PNG に変換するには、以下のステップに従います。

texvc について

TeXバリデーター兼コンバーターtexvc は数式を入力するとフォーマットし、HTMLやMathML、PNG画像として出力します。入力データは安全のため解析して精査します。

シェルアクセスが制限された共有ホスト

共有ホストでコマンドラインからのアクセスに制限がある場合 (たとえばjailshell 配下) すべての依拠関係を使ったコンパイルは不可能です。回避策としてtexvcのコンパイルはオフラインで行う必要があるはずです。uname -aを使用して共有ホストのOSを識別し、オフラインで同様にインストールします。実行には好みにより USB ブートドライブかライブ CD あるいはデスクトップコンピュータの仮想マシンを使用します。その後、たとえば Ubuntu では依存関係のあるインストールを次の手順で行います。

sudo apt-get install build-essential dvipng ocaml texlive-fonts-recommended texlive-lang-greek texlive-latex-recommended

Math 拡張機能を入手し texvc その他を作成:

wget https://extdist.wmflabs.org/dist/extensions/Math-REL1_23-d0e998f.tar.gz
tar zxvf Math-REL1_23-d0e998f.tar.gz
rm Math-REL1_23-d0e998f.tar.gz
cd Math
make
rm math/*.o
cd ..
tar -pczf texvc-files.tar.gz Math/ # アップロードを簡略化するため、ファイルをアーカイブ

texvc-files.tar.gzアーカイブをホストにアップロードし、必要なファイルを$IP/extensions/Math フォルダに抽出します。

texvc が稼動しているかどうか試験する方法の例 (texvc 利用を参照):

texvc /home/wiki/tmp /home/wiki/math "y=x+2" iso-8859-1 "rgb 1.0 1.0 1.0"


シェルアクセスが無制限の共有ホスト

texvctexvccheckを変換:

cd $IP/extensions/Math/
# install the dependencies listed in the Math subfolder README file e.g.:
sudo apt-get install build-essential ocaml
make


(仮想) プライベートサーバの場合

Linux の配布によってはMediaWiki Mathパッケージにtexvctexvccheckが同梱されています。

配布に含まれる拡張機能の比較

たとえば Debian や Ubuntu ではこれとともに依存関係のあるパッケージをインストールします:

sudo apt-get install mediawiki-math

(MediaWikiMath、texvcとtexvccheck) もしくは

sudo apt-get install mediawiki-math-texvc

(texvc限定)

設定

設定は必ずrequire_once "$IP/extensions/Math/Math.php";の後に置き、MW_MATH_XXX 定数が未定義になるのを防ぎます。

クライアント側で MathJax を使用して変換

MediaWiki 1.26 (REL1_26) 以降、MathJax はレンダリングサービスとしてのサポートを終了しています。詳細はTask 99369 (Gerrit:212270) を参照してください。必要な場合は、(共有ホスティングを利用する場合など) この拡張機能の旧版をインストールします。あるいは代わりに SimpleMathJax 拡張機能を使います。

Math拡張機能は1.19/1.20以降、クライアント側の JavaScript ライブラリである MathJax を使う処理をサポートし、によるレンダリングをサポートします。 ブラウザのHTML + CSS、MathML、またはSVGのネイティブサポートを使用してラテックスコードまたはmathmlコードを解析し、ブラウザ内で数式を生成します。

これは数式をより鮮明に(サブピクセルレンダリングを使用して)レンダリングしたりより大きく (ズーム、印刷と高解像度画面用に拡大) できます。

$wgUseMathJaxを設定して MathJax レンダリングモードを有効にします。ただ現状ではまだ実験段階といえます。利用者は個人設定ページのチェックボックスで MathJax を有効にしたり、以下のように既定モードに設定できます。

設定 (MW 1.19 - 1.22)
$wgUseMathJax = true; // enabling MathJax as rendering option
$wgDefaultUserOptions['math'] = MW_MATH_MATHJAX; // setting MathJax as default rendering option (optional)
/**
* The default parser for MathJax is 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML'
* If you don't want to or can't use the default and your run your own locally
* replace the below url with something like:
* $wgMathJaxUrl = '/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
*/
$wgMathJaxUrl = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML';
設定 (MW 1.23 - 1.25)
$wgMathValidModes[] = MW_MATH_MATHJAX; // Define MathJax as one of the valid math rendering modes
$wgUseMathJax = true; // Enable MathJax as a math rendering option for users to pick
$wgDefaultUserOptions['math'] = MW_MATH_MATHJAX; // Set MathJax as the default rendering option for all users (optional)
$wgDefaultUserOptions['mathJax'] = true; // Enable the MathJax preference option by default (optional)
$wgMathDisableTexFilter = true; // or compile "texvccheck"

MathJaxのコンテキストメニューを変更する方法How to modify the MathJax contextual menuも参照してください。

MathJax を強制的に唯一の画像生成オプションとする (MW 1.23以降)

もしご利用のウィキで MathJax が唯一の画像生成モードである場合、これを強制的に有効にするには上記の処理の代わりに、LocalSettings.php に下記を追加してください。

$wgMathValidModes = array(MW_MATH_MATHJAX); // Define MathJax as the only valid math rendering mode
$wgUseMathJax = true; // Enable MathJax
$wgDefaultUserOptions['math'] = MW_MATH_MATHJAX; // Set MathJax as the default rendering option
$wgDefaultUserOptions['mathJax'] = true; // Enable the MathJax checkbox option
$wgHiddenPrefs[] = 'math'; // Hide math preference
$wgHiddenPrefs[] = 'mathJax'; // Hide MathJax checkbox
$wgMathDisableTexFilter = true; // or compile "texvccheck"

これにより既定で匿名利用者全員とMath拡張機能用に保存された設定のない利用者に対し MathJax を有効にします。 注記として、登録利用者が別の画像生成モードを選択してあった場合には、各自で[個人設定] > [表示] と選択し、強制的な設定を選択してから[保存] を押し、有効にします。 数式を表示するには JavaScript を有効にする必要があることは、記事において利用者に助言する必要があります (たとえば TeX 数式を含む記事のテンプレートを使う)。

サーバ側で MathJax を使用して変換

MW 1.23以降は Mathoid サーバで MathJax を使いサーバ側の texvc 入力を MathML+SVG 画像生成に変換できます。 Mathoid は将来的にウィキペディアで用いられる画像生成モードです。 それに関して、以下の設定が推奨されます。

// ensure 'mathml'; is added to the $wgMathValidModes array;
$wgMathValidModes[] = 'mathml';

// Set Mathoid as default rendering option;
$wgDefaultUserOptions['math'] = 'mathml';

Mathoid を確認し、自分専用の Mathoid サーバ上で実行する手順を探します。MathML 画像生成モードを有効に設定後、データベース更新スクリプトをもう一度実行し、必要なテーブルを作成します。

サーバ側で LaTeXML を使用して変換

LaTeX 画像生成の便利なオプションとして LaTeXML ウェブサービスを利用します。このサービスは LaTeX を高画質 MathML に変換します。

設定 (MW 1.22) 1.23以降のほぼすべての設定が有効です
// Enable LaTeXML as rendering option
$wgUseLaTeXML = true; // this became an unused setting around 1.23
設定 (MW 1.23 以降)
$wgMathValidModes[] = 'latexml'; // adding LaTeXML as rendering option
// Set LaTeXML as default rendering option;
$wgDefaultUserOptions['math'] = 'latexml';
// Specify the path to your LaTeXML instance that converts the \TeX commands to MathML (optional)
$wgLaTeXMLUrl = 'http://example.com/';

LaTeXML を自分戦丁野サーバにインストールする短いガイドはこちらを参照してください: Install LaTeXML

LaTeXML 画像生成モードを有効に設定後、データベース更新スクリプトを毛一度実行し、必要なテーブルを作成します。

サーバ側で LaTeX を使用して変換

ローカルのウェブサーバーを使い texvc 入力を PNG 画像に変換するとき、ローカルの LaTeX インストールと OCAML に基づく texvc から LaTeX への変換を行うには、texvcの導入が必要です。手順は上記を参照してください。

LocalSettings.phpの設定には、必ずlatex画像生成エンジンを参照します:

// ensure 'latex'; is added to the $wgMathValidModes array;
$wgMathValidModes[] = 'latex';

// Set texvc as default rendering option;
$wgDefaultUserOptions['math'] = 'latex';

すべての環境設定一覧

require_once "$IP/extensions/Math/Math.php";を呼び出した後、LocalSettings.phpに以下の変数を定義します。

これらの設定について個別のページでは非推奨になったと表示されます。原因はバージョン1.18でこの拡張機能がコアのmediawikiから分離されたことですが、もしこの拡張機能をインストール済の場合、左記に関わらずこれらの設定は有効です。
設定名 既定値 説明
$wgUseTeX true 後方互換性グローバル; もう何も実行しません。
$wgTexvc dirname( __FILE__ ) . '/math/texvc' texvc バイナリの場所
$wgTexvcBackgroundColor 'transparent' Texvc 背景色; \special 関数に用いられる LaTeX 色彩フォーマットを使います。背景色を透明にするには 'Transparent' 値をアルファ透明に、または 'transparent'をバイナリ透明に設定します。
$wgMathCheckFiles true 通常、数式画像を作成するには書き込み先のディレクトリが存在すること、生成されたファイルがそれらを再度起動する必要があるときにまだ存在していることを、二重に確認します。

こうすると、パーミッションの問題が発生したときに使えるエラーメッセージの表示と、失われた画像を自動的に再構成することができます。

大型のサイトで NFS 流量が多い場合、この方法では遅く断片化する可能性があるため、場合によって、これを false に設定して短絡したいと感じます。

$wgMathPath false 数式ディレクトリの URL パス。既定では以下のとおり。 "{$wgUploadPath }/math".
$wgMathDirectory false 数式ディレクトリのファイルシステムのパス。既定では以下のとおり。 "{$wgUploadDirectory }/math".
$wgUseMathJax false MathJax を画像生成のオプションとして有効化。
$wgMathJaxUrl '$IP/extensions/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML' もし既定のパーサをhttp://cdn.mathjax.org/で使用しない場合の、MathJax のURL。
$wgMathValidModes array( 'png', 'source' ) サーバで許可されたモードを定義。
$wgMathMathMLUrl 'http://mathoid.testme.wmflabs.org' mathoid サーバのURL。
$wgMathMathMLTimeout 20 数式をレンダリングするために MathML に送信した HTTP リクエストのタイムアウト (秒単位)。
$wgMathLaTeXMLUrl 'http://gw125.iu.xsede.org:8888' LaTeXML の使用。

自分専用のサーバを使いたい、あるいは使う必要がある場合は、インストール手順に従い$wgMathLaTeXMLUrlをオーバーライドします : [1]

負荷が重いと予想される場合は、複数のサーバを指定してください。その場合、画像生成のプロセスごとにどれかひとつのサーバが選択されます。配列内にサーバの一覧を次の例のように指定します。$wgMathLaTeXMLUrl = array ( 'http://latexml.example.com/convert', 'http://latexml2.example.com/convert');

$wgMathLaTeXMLTimeout 240 数式をレンダリングするために LaTeXML に送信した HTTP リクエストのタイムアウト (秒単位)。
$wgMathDefaultLaTeXMLSetting
array(
	'format' => 'xhtml',
	'whatsin' => 'math',
	'whatsout' => 'math',
	'pmml',
	'cmml',
	'nodefaultresources',
	'preload' => array( 
                'LaTeX.pool',
		'article.cls',
		'amsmath.sty',
		'amsthm.sty',
		'amstext.sty',
		'amssymb.sty',
		'eucal.sty',
		'[dvipsnames]xcolor.sty',
		'url.sty',
		'hyperref.sty',
		'[ids]latexml.sty',
		'texvc' ),
)
LaTeXML レンダラー設定の詳細。
$wgMathDisableTexFilter false Texフィルタを無効にするオプションについて。「true」に設定した状態でLaTeX表示があると、セキュリティ上の弱点になる可能性があります。「false」に設定すると、TeXコマンドのサブセットのみ有効になります。 詳細はヘルプ:数式の書き方を参照してください。
$wgMathEnableExperimentalInputFormats false 実験的な MathML および AsciiMath 用入力フォーマットのサポートを有効にする


CSS で MathML に SVG フォールバックモードを設定

MathML は既定ではアクセシビリティのツールからしか見えない設定です。しかしながら以下のスタイルを指定し、強制的にレンダリングを視覚化できます。

 .mwe-math-mathml-a11y {
     clip: auto !important;
     overflow: visible !important;
     position: static !important;
     width: auto !important;
     height: auto !important;
     opacity: 1 !important;
 }
 .mwe-math-fallback-image-inline, .mwe-math-fallback-image-display {
     display: none !important;
 }

すると MathML 数式の書式も自由に変更可能で、たとえば数式用フォントの設定ができます。

 .mw-body, mtext {
     font-family: Latin Modern Roman;
 }
 math {
     font-family: Latin Modern Math;
 }
本文のフォントもすべて統一するには.mw-body,の設定を追加します。 もし本文フォントを変更したくない場合は、この.mw-body,の部分は変更しません。 もちろん忘れずにカンマを除去してください。