![访问可测试环境变量](https://linux22.com/image/390422/%E8%AE%BF%E9%97%AE%E5%8F%AF%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
我已经弄清楚了如何访问环境变量,我可以测试一个值。我无法测试环境变量的值。
我认为最好包含我的测试用例:
\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 语法,希望能够修复求值顺序,但到目前为止失败了。有什么想法吗?
提前致谢。