我正在尝试获取项目的根文件夹路径,以便稍后在序言中使用。我对乳胶的了解有限……但我找到了一个使用 currfile 和 xstring 包组合的解决方案。不幸的是,我不明白*
对函数做了什么才能使该函数正常工作。
我的 MWEExample.tex
位于 内/Users/Me/Tutorials/Example1/
。我使用 currfile 包获取其根目录的路径,然后使用 xstring:\StrBefore*
剪切出我知道存在的文件夹 ( /Tutorials/Example1/
)。
据我所知,这是一种扩展技巧——据我所知,它使第一个参数被正确扩展并使用正确的字符代码处理。但这到底是什么意思?如果这是一个扩展问题,那么为什么它在没有字符串语法的\StrBefore*
情况下也能工作?*
\UnExpectedResult
理想情况下,我希望了解如何使用显式扩展命令来实现相同的结果。不是因为我认为这会让事情变得更容易,而是因为这些知识肯定会派上用场。这个网站上有各种相关的帖子,但我找不到任何我能理解的答案。这可能是由于缺乏乳胶词汇。
MWE 命名Example.tex
:
\documentclass{minimal}
\usepackage[parents,abspath]{currfile}
\usepackage{xstring}
%%% Get the MWE root location.
\getabspath{Example.tex}
% \theabsdir contains /Users/Me/Tutorials/Example1/
\newcommand{\WithStar}{\StrBefore*{\theabsdir}{Tutorials/}}
\newcommand{\WithoutStar}{\StrBefore{\theabsdir}{Tutorials/}}
%%% Create an example string
\newcommand{\ExampleRoot}{/Users/Me/Tutorials/Example1/Example.tex}
\newcommand{\UnExpectedResult}{\StrBefore{\ExampleRoot}{Tutorials/}}
\begin{document}
MWE:\\
theabspath: \theabspath\\
theabsdir: \theabsdir
WithStar: \WithStar\\
WithoutStar: \WithoutStar\\
UnExpectedResult: \UnExpectedResult
\end{document}