
私は を利用してlualatex
PDF の一部の生成を自動化しようとしています。最小限の動作例のディレクトリ ツリーは次のようになります。
│ lua_escaping_issue.tex
│
└───a_folder
first_file.tex
fourth_file.tex
second_file.tex
third_file.tex
a_folder/first_file.tex
「Hello」というテキストが含まれていますa_folder/second_file
「世界」というテキストが含まれていますa_folder/third_file
「!. お元気ですか?」というテキストが含まれていますa_folder/fourth_file
「あなた?」というテキストが含まれています
を使用してlua
、「HelloWorld!.How areyou?」というテキストを生成したいと思います。そこで、lua_escaping_issue.tex
次の内容を含む を作成しました。
\documentclass{article}
\begin{document}
\directlua
{
require 'lfs'
for file in lfs.dir("a\_folder") do
if file ~= "." and file ~= ".." then
tex.print("\\input\{" .. "a\_folder/" .. file .. "\}")
end
end
}
\end{document}
残念ながら、コンパイルするとlatexmk -lualatex lua_escaping_issue.tex
エラーが発生します:
[\directlua]:1: '"a\p' 付近に無効なエスケープ シーケンスがあります
の考え方は\directlua
、すべてが展開されるので、LaTeX によって認識される可能性のあるコマンドはエスケープする必要があるということだと思います。私はすでにこれを実行しており、ファイルを pure でテストしたところlua
、機能しているようです。したがって、ここで何を間違っているのかわかりません。
答え1
\\
およびが拡張されるのを防ぐ必要があります~
。 wih をプレフィックスとして付けても、\
これは実現されません。
\documentclass{article}
\begin{document}
\directlua{
% no require 'lfs'
for file in lfs.dir("a_folder") do
if file \string~= "." and file \string~= ".." then
tex.sprint( "\string\\input{a_folder/" .. file .. "}" )
end
end
}
\end{document}