访问可测试环境变量

访问可测试环境变量

我已经弄清楚了如何访问环境变量,我可以测试一个值。我无法测试环境变量的值。

我认为最好包含我的测试用例:

\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 语法,希望能够修复求值顺序,但到目前为止失败了。有什么想法吗?

提前致谢。

相关内容