str_if_eq 的问题

str_if_eq 的问题

这肯定是一个非常愚蠢的问题,但我在这里做错了什么?据我所知,字符串是相等的,因此测试应该成功,但我得到的却是不成功。

\documentclass{article}

\ExplSyntaxOn

\str_new:N \g_test_str

\NewDocumentCommand{\Test}{m}
 {
  \str_set:Nn \g_test_str { #1 }
  
  \noindent
  Input is #1 \newline
  String is \g_test_str \newline
  \str_if_eq:nnTF { \g_test_str }{test}{test successful}{test not successful}
 }
 
 \ExplSyntaxOff

 \begin{document}
 
 \Test{test}
 
 \end{document}

谢谢你的帮助

答案1

你需要V变体来接收变量:

\documentclass{article}

\ExplSyntaxOn

\str_new:N \l_test_str

\NewDocumentCommand {\Test} {m} {
  \str_set:Nn \l_test_str {#1}
  \noindent
  Input~ is~ #1 \newline
  String~ is~ \l_test_str \newline
  \str_if_eq:VnTF \l_test_str {test} {test~ successful} {test~ not~ successful}
}
\ExplSyntaxOff

\begin{document}
 
\Test{test}
 
\end{document}

在此处输入图片描述

否则未扩展的字符串“ \l_test_str”和“test ”,结果是不是平等的。

我还重命名了你的变量,因为它是本地变量,而不是全局变量。

相关内容