如何将一个命令中的整数应用到另一个命令中?

如何将一个命令中的整数应用到另一个命令中?

我有以下方法来获取字符串中的空格数

\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

相关内容