我正在使用 listofitems 包,它生成一个列表,其中的元素可以通过
\LIST[n]
但我在手册中看到我需要双重扩展。
具体来说,我如何检查(的双重扩展)\LIST[n]
是否为空?
答案1
您可以使用将内容扩展两次\expandafter\expandafter\expandafter
(第一次\expandafter
覆盖第二次,第三次在一次后扩展参数{
,第一次和第三次被删除,第二次在{
第二次后扩展参数)。如果您需要扩展宏的参数,您还需要\expandafter
在它前面放置三个(这对于 来说不是必需的,\detokenize
因为它会扩展所有内容,直到找到一个左括号;对于 来说也不是必需的\if
,因为它会扩展所有内容,直到找到两个不可扩展的标记)。
\documentclass{article}
\usepackage{listofitems}
\readlist\foo{12,abc,3,4,,}
\makeatletter
\providecommand\@secondofthree[3]{#2}
\newcommand\iflistitememptyTF[2]
{%
\if\relax\detokenize\expandafter\expandafter\expandafter{#1[#2]}\relax
\expandafter\@secondofthree
\fi
\@secondoftwo
}
\makeatother
\begin{document}
\iflistitememptyTF\foo{5}{empty}{not empty}
\end{document}