Как проверить, что двойное расширение чего-либо пусто?

Как проверить, что двойное расширение чего-либо пусто?

Я использую пакет 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}

Связанный контент