
currfile
옵션 이 포함된 패키지는 abspath
현재 파일의 절대 경로를 얻을 수 있습니다. 그러나 이는 플래그를 pdflatex
사용한 실행에 의존합니다 -recorder
. 을 사용하여 동일한 목표를 달성할 수 있습니까 lualatex
?
에는 lualatex
와 동일한 명령줄 플래그 세트가 있으므로 pdlflatex
자연스럽게 에서 작동하는 것처럼 currfile
작동합니다 . 도전은 사용하는 것입니다lualatex
pdflatex
lua
텍스트 내에서 현재 폴더 정보를 추출하는 데 사용하는 것입니다.없이깃발 에 의지합니다 -recorder
.
답변1
다시 한 번 동료 압력.:)
IIRC, 순수 Lua에는 속임수에 의지하지 않고 현재 작업 디렉터리를 알아낼 수 있는 기본 제공 방법이 없습니다. 다행히 LuaTeX에는 놀라운 기능이 포함되어 있습니다.루아파일시스템, 이는"표준 Lua 배포판에서 제공하는 파일 시스템과 관련된 기능 세트를 보완하기 위해 개발된 라이브러리입니다."
그만큼참고 섹션LFS 매뉴얼에는 우리가 원하는 것을 달성하는 방법이 나와 있습니다.
lfs.currentdir ()
현재 작업 디렉터리 또는
nil
오류 문자열이 포함된 문자열을 반환합니다.
우리는 거기에 갈! 이제 .tex
이 아이디어를 바탕으로 파일을 작성해 보겠습니다 .
\documentclass{article}
\edef\workingdir{\unexpanded\expandafter{\directlua{tex.write(lfs.currentdir())}}}
\begin{document}
Hello, I'm in \workingdir
\texttt{\meaning\workingdir}
\end{document}
\edef
내 원래 접근 방식 대신 버전을 제공해준 egreg에게 감사드립니다 \newcommand
. 그렇게 하면 경로의 특수 문자 문제를 방지할 수 있으며, 주 문서의 프리앰블에 넣으면 파일 \workingdir
에서 사용될 때 값이 변경되지 않습니다 \input
.
내 컴퓨터의 샘플 출력은 다음과 같습니다.
우리는 거기에 갈!:)
업데이트:작업 디렉터리 값을 "고정"하지 않으려면 다음을 \newcommand
사용하는 대신 다음을 사용 하여 첫 번째 시도를 수행할 수 있다고 생각합니다 \edef
.
\newcommand{\actualworkingdir}{%
\unexpanded\expandafter{\directlua{tex.write(lfs.currentdir())}}}
이렇게 하면 lfs.currentdir()
항상 요청 시 발행됩니다. 두 접근 방식의 차이점은 상당히 크다는 점을 명심하세요.