我如何检查是否\myList
为空?以下(我的尝试)打印“NOT empty”,而实际上列表为空。
\documentclass{standalone}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\clist_new:N\myList
\clist_set:Nn\myList{}
\cs_if_eq:NNTF\myList{}{EMPTY}{NOT empty}
\ExplSyntaxOff
\end{document}
编辑:我找到了一种方法来做到这一点(如下),但希望您分享另一种方法(看看还有什么其他方法可以做到这一点很有趣):
\clist_new:N\myList
\clist_new:N\emptyList
\clist_set:Nn\myList{} % assign "emptiness" to the list (although it had already been empty to begin with)
\cs_if_eq:NNTF\myList\emptyList{EMPTY}{NOT empty}
答案1
\documentclass{standalone}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\clist_new:N\myList
\clist_set:Nn\myList{}
\clist_if_empty:NTF \myList{ EMPTY }{ NOT EMPTY }
\ExplSyntaxOff
\end{document}
跑步texdoc l3clist
答案2
您想要的测试是\clist_if_empty:N(TF)
:每种数据类型都有适当的空性或类似测试。这些测试的定义使得它们“知道”数据类型的内部性质(例如,prop
在宏观层面上,空并不完全是空的)。
你的\cs_if_empty:NN(TF)
测试是错误的因为您给出的第二个参数不是N
类型(单个标记),而是n
-type(在本例中为空标记列表)。在这种情况下,您可以进行低级测试,例如
\cs_if_eq:NN(TF) \myList \c_empty_clist { <true> } { <false> }
或者将列表扩展为“原始”标记列表
\tl_if_blank:V(TF) \c_empty_clist { <true> } { <false> }