latexmk で directlua が使えない問題
latexmk によるタイプセットで directlua が未定義となってしまう問題の解決方法です. この記事は,rogy Advent Calendar 2019 8日目の記事となります.
LuaTex とは
LuaTex とは,文書内でプログラミング言語 Lua を使うことのできる TeX です. TeX Wiki によれば,
LuaTeX は パワフル・高速・軽量で組み込み可能なスクリプト言語 Lua が使える TeX です.pdfTeX の後継として期待されています。
と説明されています.
また日本語文書のために,luatexja
というパッケージが用意されています.
環境変更で生じる謎のエラー
表題の通り,Luaを直接叩くためのコマンド directlua
が未定義だというものでした.
Windows 10でのエラーですがUbuntu 18.04 では動いていたものだったため,OSによるものかと疑いました.
しかしこの問題がOSによるものなのか,バージョンによるものかは現在も不明です.
環境
エラーの詳細
- エラーが起きた箇所
\usepackage{luatexja}
- エラーメッセージ(切り抜き)
c:/texlive/2019/texmf-dist/tex/luatex/luatexja/luatexja.sty:46: Undefined control sequence. l.46 \directlua {require('ltj-unicode-ccfix.lua')}% catcode of ideographs No pages of output.
- latexmkrc
$latex = 'platex -synctex=1 -halt-on-error %O %S'; $latex_silent = 'platex -synctex=1 -halt-on-error -interaction=batchmode %O %S'; $pdflatex = 'lualatex --synctex=1 --halt-on-error --interaction=batchmode %O %S';
解決方法
latexmkrc のタイプセットを次のように指定します.
$latex = 'lualatex -synctex=1 -halt-on-error %O %S'; $latex_silent = 'lualatex -synctex=1 -halt-on-error -interaction=batchmode %O %S'; $pdflatex = 'lualatex --synctex=1 --halt-on-error --interaction=batchmode %O %S';
(u)platex
が LuaTeX のコマンドを読んでくれないことがあるらしいです.
(よく考えれば当然なのかもしれません)
原因について何か情報があれば教えていただけると幸いです.