如何获取文件的绝对路径

如何获取文件的绝对路径

很多语言都提供了获取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

您可以使用kpsewhichalthough 来查找相对于工作目录的文件,但您可能希望在路径中使用$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

相关内容