
Я использую пакет listofitems, который создает список, элементы которого доступны по
\LIST[n]
но в инструкции я прочитал, что мне нужно двойное расширение.
В частности, как мне проверить, что (двойное расширение) \LIST[n]
пусто?
решение1
Вы можете расширить что-то дважды, используя \expandafter\expandafter\expandafter
(первый \expandafter
шаг поверх второго, третий расширяет аргумент после {
одного раза, первый и третий удаляются, второй расширяет аргумент после {
второго раза). Если вам нужно расширить аргумент макроса, вам также нужно будет поставить три \expandafter
перед ним (это не обязательно для , \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}