背景
普段からLuaLaTeXで日本語文書を作ることが多いが、どこかのタイミングでなぜかコンパイルを失敗することが多くなった。スライドを作るときに用いるBeamerクラスでも同様の現象が起きる。
何回か試行するうちに成功することがあり、問題の解決を後回しにしていたが、いい加減時間の無駄だと思い、解決を目指すことにした。
原因の推定
以前、Dropboxを使用していたとき、同様の現象が起きていたことを思い出した。そのときはLuaLaTexではなくLaTeXだったが、問題の本質はLuaLaTeXでも変わらないだろうと思った。LuaLaTeXもLaTeXもコンパイルするときに割と多くの補助ファイルを吐き出すからである。
試しにSynology Drive Clientを終了してからLuaLaTeXソースファイルをコンパイルすると失敗が再現されなかった。同様にBeamerクラスでも失敗が再現されなかった。
補助ファイルへのアクセスでSynology Drive ClientとLuaLaTeXとが喧嘩して今回の問題を引き起こしたのだろうと推定した。
問題の解決方法
「Synology Drive LaTeX」などの検索ワードでググったが、これといった解決策は見つからなかった。
仮に補助ファイルへの同時アクセスなどの問題でコンパイルの失敗が起きているのだとすれば、本来的にはSynology Drive Clientのファイル同期とコンパイルのタイミングをずらす方法があればよいのだが、そういったことが可能となりそうな設定項目はSynology Drive Clientにはなかった。
そこで、ややウルトラC的ではあるが、補助ファイルをSynology Driveに上げない方法を考えた。それらの補助ファイルは.texから派生するファイルであって、たとえ間違って消されたとしても.texのファイルさえ残っていれば再度コンパイルすることで生成可能だから、そもそも不要なのではないかという発想の転換である。
LuaLaTeXソースファイルのコンパイルで生成される補助ファイルを同期しない方法は簡単である。Synology Drive Clientの「同期ルール」から「ファイルフィルタ」を選び、補助ファイルの拡張子を追加すればよい。例えば、.auxや.synctex、.logなどの拡張子である。この拡張子はコンパイルされるソースファイルによって異なるかもしれないのでご自身の環境で各々確認する必要がある。
解決方法に関するディスカッション
この解決方法はLuaLaTeXソースファイルをコンパイルするときに生成される補助ファイルをSynology Driveで同期させなくするという、極めてしょんない画期的な方法である。おそらくLuaLaTeXに限らず、コンパイル時に補助ファイルを生成するLaTeXでも、もし同様の問題が生じたときには試してみる価値があるかもしれない。また、Synology Driveに限らず、同期によって問題が生じていると考えられる場合には、補助ファイルなどの重要でないファイルを同期しないという選択肢も、場合によっては根本的な解決になりうることを視野に入れるとよいかもしれない。