Windows環境で\directluaを使って正しい絶対パスを取得する方法
質問 LuaLaTeX + luatexja-fontspec: 利用されるフォントを、直接プロジェクトフォルダから利用出来ますか?において、プロジェクト内からフォントを取得するには、下記の解決が提案されました:
\edef\currfileabsdir{\directlua{tex.sprint(lfs.currentdir())}/}
残念ながら、これはエラーを起こします:
! Undefined control sequence.
l.1 C:\Users
\i\Documents\TeX\LuaLaTeX_Development
l.6 ...sdir{\directlua{tex.sprint(lfs.currentdir())}
/}
色々調べて、不明コントロールシーケンスは\Users
での\
だと分かりました。解決するには、下記の解決が提案されました:
\edef\currfileabsdir{\directlua{tex.sprint(-2, lfs.currentdir())}/}
でも、この解決は正しいパス区切りに差し替える事ではなく、これを削除する事をしています。このように、
C:Users/i/Documents/TeX/LuaLaTeX_Development/fonts/HGS_Mincho/HGRMB.ttc
は
C:UsersiDocumentsTeXLuaLaTeX_Development/fonts/HGS_Mincho/HGRMB.ttc
になります。どうすればよろしいでしょうか。
再現
\documentclass[a4paper, twoside]{ltjsarticle}
\usepackage{luatexja-fontspec}
# 以前解決
# \edef\currfileabsdir{\directlua{tex.sprint(lfs.currentdir())}/}
\edef\currfileabsdir{\directlua{tex.sprint(lfs.currentdir():gsub('\string\\', '/'))}/}
\setmainjfont[
Path = \currfileabsdir,
UprightFont = fonts/HGS_Mincho/HGRMB.ttc,
BoldFont = fonts/HGS_Mincho/HGRME.ttc
]{HGS Mincho}
\setsansjfont[
Path = \currfileabsdir,
UprightFont = fonts/HGS_Gothic/HGRGM.ttc,
BoldFont = fonts/HGS_Gothic/HGRGE.ttc,
]{HGS Gothic}
\begin{document}
日本語 Latin letters Кириллица
\end{document}