如何从序列生成变量名

如何从序列生成变量名

在我的代码中,我需要从序列生成变量。例如,我有变量\g__test_bool。对于空序列,它应该是相同的。对于带有a_项目的序列,它应该是\g__test_a_bool,对于带有a_,b_项目的序列,它应该是\g__test_a_b_bool,等等。但是当我尝试这样做时,我收到一个错误:

! Undefined control sequence.
<argument> \g__
\documentclass{article}
\ExplSyntaxOn
\seq_new:N\g__vars_seq
\bool_gset_true:N\g__test_bool
\bool_if:NTF\g__\seq_use:Nn\g__vars_seq{}test_bool{}{}
\ExplSyntaxOff
\begin{document}

\end{document}

答案1

由于您要从一串字符构建控制序列名称,因此您需要使用c变体,,\bool_if:cTF否则控制序列就是\g__,它不存在。

\documentclass{article}
\ExplSyntaxOn
\seq_new:N \g__kozlovskiy_vars_seq
\bool_gset_true:N \g__kozlovskiy_test_bool

\bool_if:cTF
  { g__kozlovskiy_ \seq_use:Nn \g__kozlovskiy_vars_seq { } test_bool }
  { \typeout{TRUE} }
  { \typeout{FALSE} }

\ExplSyntaxOff
\begin{document}
\end{document}

相关内容