假设文件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
为当前文件名(不包含路径)。
参考:
- 宏基
\SetMacroToShellOutput
于通过 \@@input 指定文件名 shell 访问。
代码:
\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}