
Estoy usando el paquete listofitems, que produce una lista cuyos elementos son accesibles mediante
\LIST[n]
pero en el manual leo que necesito una doble expansión.
En particular, ¿cómo compruebo que (la doble expansión de) \LIST[n]
esté vacía?
Respuesta1
Puede expandir las cosas dos veces usando \expandafter\expandafter\expandafter
(el primer \expandafter
paso sobre el segundo, el tercero expande el argumento después {
de una vez, el primero y el tercero se eliminan, el segundo expande el argumento después de {
la segunda vez). Si necesita expandir el argumento de una macro, también deberá anteponer tres \expandafter
(esto no es necesario porque \detokenize
expande todo hasta que encuentra una llave de apertura; y tampoco es necesario porque expande todo hasta que encuentra una llave de apertura; y tampoco es necesario \if
porque expande todo hasta que encuentra dos fichas no expandibles).
\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}