很多语言都提供了获取absolute path
文件内容的函数,不知道Tex/LaTex 有没有这样的宏。
以下示例中,给定一个文件名,测试此文件是否确实存在。如果存在,则输出其绝对路径(包括文件名),from root
如/home/foo/bar/myfile
或/c/Program Files/foo/bar/myfile.tex
。
例子:
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand\getabsolutepath{m}{
\file_if_exist:nTF {#1}
{
% output the absolute path of the file name #1
}
{do some other things}
}
\ExplSyntaxOff
\begin{document}
% Given that the current path names "cp". A file named "a.tex" locates in its subdirectory "sub".
% The typesets of the following invokations of \getabsolutepath should be absolutely the same when file "a" really exists because they refer to the same file.
\getabsolutepath{sub/a}
\getabsolutepath{./sub/a}
\getabsolutepath{./sub/a.tex}
\getabsolutepath{../cp/sub/a}
\end{document}
答案1
您可以使用kpsewhich
although 来查找相对于工作目录的文件,但您可能希望在路径中使用$PWD
而不是 ,以便报告完整路径。在 texlive 的默认配置中允许不使用这个命令(我认为 miktex 也是如此).
--shell-escape
\documentclass{article}
\def\getabsolutepath#1{\input{|kpsewhich "#1"}}
\begin{document}
\getabsolutepath{article.cls}
\getabsolutepath{plain.tex}
\getabsolutepath{\jobname}
\end{document}
调用者:
TEXINPUTS=$PWD: pdflatex cc434