Wie kann man überprüfen, ob die doppelte Erweiterung von etwas leer ist?

Wie kann man überprüfen, ob die doppelte Erweiterung von etwas leer ist?

Ich verwende das Paket listofitems, das eine Liste erzeugt, deren Elemente zugänglich sind durch

\LIST[n]

aber in der Anleitung habe ich gelesen, dass ich eine doppelte Erweiterung brauche.

Insbesondere, wie überprüfe ich, ob (die doppelte Erweiterung von) \LIST[n]leer ist?

Antwort1

Sie können Dinge zweimal erweitern, indem Sie verwenden \expandafter\expandafter\expandafter(das erste \expandafterübergeht das zweite, das dritte erweitert das Argument nach {einmal, das erste und dritte werden entfernt, das zweite erweitert das Argument nach {dem zweiten Mal). Wenn Sie das Argument eines Makros erweitern müssen, müssen Sie auch drei \expandafterdavor setzen (dies ist für nicht notwendig, \detokenizeda es alles erweitert, bis es eine öffnende Klammer findet; und es ist auch für nicht notwendig \if, da es alles erweitert, bis es zwei nicht erweiterbare Token findet).

\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}

verwandte Informationen