
私は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}