* 这些命令的作用是什么以及如何复制?

* 这些命令的作用是什么以及如何复制?

我正在尝试获取项目的根文件夹路径,以便稍后在序言中使用。我对乳胶的了解有限……但我找到了一个使用 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}

在此处输入图片描述

相关内容