我已经弄清楚了如何访问环境变量,我可以测试一个值。我无法测试环境变量的值。
我认为最好包含我的测试用例:
\documentclass{article}
\usepackage{catchfile}
\usepackage{xparse}
\def\apar{\par}
\newcommand{\getenva}[1][]{%
\CatchFileEdef{\temp}{"|kpsewhich --var-value DEV "}{}%
\ifx\temp\apar\def\temp{UNDEFINED}\fi
\if\relax\detokenize{#1}\relax\temp\else\let#1\temp\fi
}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\fred}{m}
{
\str_case:nnF { #1 } {
{BIG}{Scary.}
{Massive}{Run!}
}
{ERROR fred: Invalid case selected in LaTeX doc #1}
}
\ExplSyntaxOff
\begin{document}
test \getenva
second \fred{BIG}
third \fred{Massive}
fourth \fred{\getenva}
\end{document}
如果你:
export DEV=BIG
pdflatex test_doc.tex
然后你会得到:
test BIG
second Scary.
third Run!
fourth ERRORfred:InvalidcaseselectedinLaTeXdocBIG
对我来说,这意味着 getenva 的宏扩展/解析发生在 str_case 求值之后。我试图想出一种方法将 genenva 命令转换为 latex3 语法,希望能够修复求值顺序,但到目前为止失败了。有什么想法吗?
提前致谢。