我有以下方法来获取字符串中的空格数
\ExplSyntaxOn
\NewDocumentCommand{\HowManySpaces}{ m }{
\seq_set_split:Nnn \l_tmpa_seq { } { #1 }
\int_eval:n {(\seq_count:N \l_tmpa_seq) - 1 }
}
\ExplSyntaxOff
现在我想将此命令的输出用作其他地方的输入,例如aaa \kern{\HowManySpaces{a b c}pt bbb
。输出的这种使用可能不限于kern
,我想根据字符串中的空格数定义 if-else 命令(我已经有了)(我知道如何使用\ifnum\value{}
)。
答案1
您需要命令是可扩展的,因此您不能在定义内执行赋值。请注意,可扩展命令在 中用星号标记interface3
。
以下应该有效(它还可以修剪前导和尾随空格):
\ExplSyntaxOn
\cs_generate_variant:Nn \str_count_spaces:n { e }
\NewExpandableDocumentCommand \HowManySpaces { m } {
\str_count_spaces:e { \tl_trim_spaces:n { #1 } }
}
\ExplSyntaxOff
aaa\kern\HowManySpaces{a b c}pt bbb
\ifnum\HowManySpaces{a b c}=2 correct \else incorrect \fi