latexmkでコンパイルしたときのluatexja.styのエラーの解決法

<!-- latexmkでコンパイルしたときのluatexja.styのエラーの解決法 -->

# 0. はじめに

* .tex files を latexmk コマンドを使ってコンパイルしたかった．
* LuaLaTeX を使う．
* Visual Studio Code を使って .tex files を書いたりプレビューしたりしている．
* しかし致命的なエラーが出て .tex files のコンパイルと PDF の生成ができなかった．
* その後，.latexmkrc ファイルに pdflatex コマンドを追加することで問題を解決した．
<!-- * I would have liked to compile .tex files using the latexmk command.
* I use LuaLaTeX.
* I use Visual Studio Code to write and preview .tex files 
* But a fatal error prevented me from compiling .tex files and generating PDFs.
* Then the problem is solved by adding the pdflatex command to my .latexmkrc file. -->


**Keywords**

    LaTeX, latexmk, VSCode, LuaLaTeX

→ [English version!](https://krypf.hatenablog.com/entry/2023/05/13/170613)

# 1. LaTeX Problems

<!-- I'll show you the error messages, which have been very annoying for long time.  -->
まずはエラーメッセージをお見せしよう．長い間，とても悩まされていた．

    TeX luatexja.sty /usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty
        ❌ Undefined control sequence. LaTeX [Ln 42, Col 1] ^
        ❌ ==> Fatal error occurred, no output PDF file produced! LaTeX [Ln 42, Col 1] ^
        Transcript written on "(absolute path)".
        === TeX engine is 'pdfTeX'
        Latexmk: Errors, so I did not complete making targets

<details>
<summary> all messages </summary>
<div>

```
[{
	"resource": "/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty",
	"owner": "LaTeX",
	"severity": 8,
	"message": "Undefined control sequence.",
	"source": "LaTeX",
	"startLineNumber": 42,
	"startColumn": 1,
	"endLineNumber": 42,
	"endColumn": 65536
},{
	"resource": "/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty",
	"owner": "LaTeX",
	"severity": 8,
	"message": " ==> Fatal error occurred, no output PDF file produced!\nTranscript written on \"(absolute path)\".\n=== TeX engine is 'pdfTeX'\nLatexmk: Errors, so I did not complete making targets\n",
	"source": "LaTeX",
	"startLineNumber": 42,
	"startColumn": 1,
	"endLineNumber": 42,
	"endColumn": 65536
}]
```

</div>
</details>


<details>
<summary> Undefined control sequence. </summary>
<div>

```
[{
	"resource": "/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty",
	"owner": "LaTeX",
	"severity": 8,
	"message": "Undefined control sequence.",
	"source": "LaTeX",
	"startLineNumber": 42,
	"startColumn": 1,
	"endLineNumber": 42,
	"endColumn": 65536
}]
```

</div>
</details>

<details>
<summary> Fatal error occurred, </summary>
<div>

```
[{
	"resource": "/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty",
	"owner": "LaTeX",
	"severity": 8,
	"message": " ==> Fatal error occurred, no output PDF file produced!\nTranscript written on \"(absolute path)\".\n=== TeX engine is 'pdfTeX'\nLatexmk: Errors, so I did not complete making targets\n",
	"source": "LaTeX",
	"startLineNumber": 42,
	"startColumn": 1,
	"endLineNumber": 42,
	"endColumn": 65536
}]
```

</div>
</details>

# 2. 1番目のメッセージ

最初のメッセージを見ると，ソースコードのこの行が問題だとわかる．
これはよくエラーを引き起こすものらしい．

```
\directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs
```

このメッセージの内容を調べても解決には至らなかったが，このエラーが何かデフォルト言語の選択の困難に起因するものであることが分かった．

# 3. 2番目のメッセージ

<!-- The second message shows that the error which fatally disturbs the execution must be pdfTeX. -->
2番目のメッセージを見ると，致命的に実行を妨げているエラーは pdfTeX である事が分かる．

        === TeX engine is 'pdfTeX'

<!-- So I added the below sentence and changed a command for pdflatex so that I can confirm the cause of the error. -->
そこで下の文を加えてエラーの原因が確認できるように `pdflatex` のコマンドを変えた．


```
$pdflatex = 'lualatex --synctex=1 --halt-on-error --interaction=nonstopmode %O %S';
```

<!-- The result was clear. No error occured. -->
結果は明白だった．エラーは発生しなかった．

<!-- I add that my latex command is lualatex. -->
付け加えておくと，`latex` コマンド  は `lualatex` である．

<details>
<summary> latex command </summary>
<div>

```
$latex = 'lualatex -synctex=1 -interaction=nonstopmode -file-line-error -halt-on-error %O %S';
```

</div>
</details>


# n. おわりに

`pdflatex` コマンドの変更によって `luatexja.sty` における "`\directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs`" のエラーを解消した．