\IfStrEqCase 重新定义 #1

\IfStrEqCase 重新定义 #1

的可选参数中的#1、 、 等含义是什么?#2\IfStrEqCase

在此处输入图片描述

这要求我使用我没有想到的 ##1而不是#1within 。\pgfplotsinvokeforeach

我本来以为#1它会是未定义的,因为它在 之外\IfStrEqCase。我添加了一个更复杂的测试,其输出是

在此处输入图片描述

调用宏时可以使用这个宏,这对我来说似乎有点奇怪?还有其他可以调用的宏具有类似的行为吗?如果我在宏中#1使用,行为似乎会有所不同。\IfStrEqCase

代码:

\documentclass{article}
\usepackage{xstring}

\begin{document}
    \IfStrEqCase{5}{
        {1}{}%
        {2}{}%
    }[{
        param 1 = #1,\par
        param 2 = #2,
    }]
\end{document}

代码:更精细的测试用例

\documentclass{article}
\usepackage{xstring}

\newcommand*{\PrintFirstParamaterIfNotOneOrTwo}[1]{%
    \IfStrEqCase{#1}{
        {1}{x}%
        {2}{y}%
    }[{
        param 1 = #1,\par
    }]
}

\begin{document}
    \IfStrEqCase{xxxx}{
        {1}{x}%
        {2}{y}%
    }[{
        param 1 = #1,\par
    }]

    \PrintFirstParamaterIfNotOneOrTwo{xxxx}
\end{document}

答案1

如果你改为

    {1}{x}%
    {2}{y}%

您会看到 #1 是 2 而 #2 是 y,您说这不是您所期望的,但是您没有说出您所期望的是什么?

相关内容