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を一発で生成できる。
ちょっぴり惜しいけど、今日はこの辺で満足した。