MathTeXをLuaLaTeXのjlreqで動かそう

MathTeXをLuaLaTeXで動かそう

こどもが算数ドリルがほしいということなので、MathTeX工房さんが作ってくださっているMathTeXを使ってみた。 小学生から高校生までの計算ドリルを自動で生成してくれる。100マス計算、25マス計算も作れる。これ、かなりいいツールだ。

ただ、僕の環境ではpLaTeX環境がない。そこで、LuaLaTeXに対応させてみた。

ポイントは次の3点。

  • ドキュメントクラスが違う
  • 文字コードがSJIS
  • 全角文字の幅指定が違う

以下、順次対応する。

Linuxとかwslなら、sedとnkf使えば簡単なんだけど、僕の手元にあるのは純粋はWindows。 パワーシェルでなんとかしよう。

ドキュメントクラス

オプションでドキュメントクラスは変えられるのだが、ここにjlreqがない。

そこで、オプションの「一行目」に「\documentclass{jlreq}」を入れる。

文字コード

生成される文字コードがSJISなので、これをUTF-8に変換しなければならない。

パワーシェルのスクリプトを使う。

$file_contents = $(Get-Content -Encoding SHIFT_JIS $filepath)
$file_contents | Set-Content -Encoding UTF8 $outfile

全角幅の指定方法

jlreqでは、一文字分が\zw、一行分が\zhなので、それぞれzw, zhから変換する。

変換は、パワーシェルで、-replaceすればよい。

成果物

以上をまとめると、以下のようなバッチファイル(パワーシェルのスクリプトファイル)になる。

ついでにLuaLaTeXでコンパイルしてpdfをビューアに表示させるまでやってみた。

latexファイルをLuaLaTeXに関連付けているなら、1つ目のStart-ProcessのFilePathに直接outfileを指定しても動くはず。

$outfile = $filepath -replace ".tex", "U.tex" -replace ".\\", ""
$pdffile = $outfile -replace ".tex", ".pdf"
$file_contents = $(Get-Content -Encoding SHIFT_JIS $filepath) -replace "zh", "\zh" -replace "zw", "\zw"
$file_contents | Set-Content -Encoding UTF8 $outfile
Start-Process -FilePath "<LuaLaTeXのパス>lualatex.exe" -ArgumentList $outfile
Start-Process -FilePath $pdffile

以上を、「コマンド名.ps1」というファイル名にしておいて、MathTeXで生成したtexファイルを呼び出せば、pdfが生成されて、ビューアに表示される。

コマンド名.ps1 texファイル

なお、ps2exeというツールはこのps1ファイルをexeにしてくれるそうだが、うちではうまく動かなかった。

このコマンドが動いて、exeファイルを作れたら、MathTeXのTeXコマンドの欄にコマンド名を入力できる。 そうしたら、MathTeXの「TeXで処理する」コマンドでpdfを一発で生成できる。

ちょっぴり惜しいけど、今日はこの辺で満足した。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。