的可选参数中的#1
、 、 等含义是什么?#2
\IfStrEqCase
这要求我使用我没有想到的 ##1
而不是#1
within 。\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,您说这不是您所期望的,但是您没有说出您所期望的是什么?