¿Cómo comprobar que la doble expansión de algo está vacía?

¿Cómo comprobar que la doble expansión de algo está vacía?

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 \expandafterpaso 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 \detokenizeexpande 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 \ifporque 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}

información relacionada