何かの二重展開が空であることをどうやって確認するのでしょうか?

何かの二重展開が空であることをどうやって確認するのでしょうか?

私はlistofitemsパッケージを使用しています。これは、要素にアクセスできるリストを生成します。

\LIST[n]

しかし、マニュアルには二重拡張が必要であると書いてありました。

特に、(の二重展開)が\LIST[n]空であることをどうやって確認するのでしょうか?

答え1

を使用すると、引数を 2 回展開することができます\expandafter\expandafter\expandafter(最初の\expandafter引数は 2 番目の引数を通り、3 番目の引数は{1 回目以降に引数を展開し、最初の引数と 3 番目の引数は削除され、2 番目の引数は{2 回目以降に引数を展開します)。マクロの引数を展開する必要がある場合は、\expandafterその前に 3 を置く必要もあります ( の場合は開き中括弧が見つかるまですべてを展開するため、これは必要ありません。また、 の場合は展開できないトークンが 2 つ見つかるまですべてを展開するため、\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}

関連情報