如何在 ConTeXt 中获取当前目录名称?

如何在 ConTeXt 中获取当前目录名称?

假设文件source.tex被放置在 中/home/user/Birds/,并且用户键入context source.tex来编译文件。ConTeXt 是否有办法检索文件所在文件夹的名称(在此示例中为“Birds”),以用作变量?例如,这可以用于为文档添加标题,例如\title{\directoryname}

  • 这只会在Linux系统上使用,不需要与其他系统兼容。
  • 可能会出现带有空格的目录名,例如/home/user/Tropical\ Fish/

答案1

\starttext
  \cldcontext {lfs.currentdir ()}
\stoptext

答案2

在上下文中:

\starttext

\ctxlua{context(os.resultof("pwd"))}

\stoptext

答案3

下面的定义\SetMacroToShellOutput将给定的内容设置csname为提供给它的 shell 命令的输出。所以

\SetMacroToShellOutput{\DirectoryNameWithPath}{pwd}

将设置\DirectoryNameWithPath为当前文件名的完整 Unix 路径。您可以使用除 之外的任何 Unix 命令pwd来获取所需结果。例如

    \SetMacroToShellOutput{\FileNameWithoutPath}{basename `pwd`}

将设置\FileNameWithoutPath为当前文件名(不包含路径)。

参考:

代码:

\documentclass{article}

\makeatletter
\newcommand\SetMacroToShellOutput[2]{% 
  \begingroup\endlinechar=\m@ne\everyeof{\noexpand}%
  \edef\TempResult{\endgroup
    \expandafter\def\noexpand#1{%
      \@@input|"#2" }}%
  \TempResult}
\makeatother

\begin{document}
\SetMacroToShellOutput{\DirectoryNameWithPath}{pwd}%
DirectoryNameWithPath = \DirectoryNameWithPath
\end{document}

相关内容