Повторное использование номера текущего аргумента с помощью xparse

Повторное использование номера текущего аргумента с помощью xparse

Я прочитал в документации xparse, что \l__xparse_current_arg_intупоминается "номер текущего устанавливаемого аргумента". Однако у меня возникли проблемы с пониманием того, как получить к нему доступ и использовать его. Например, как бы вы полагались на эту переменную для создания упорядоченных списков (т. е. что именно даст замена itemizeна enumerate) в следующем примере?

\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand\mylist{>{\SplitList{;}}m}
    {
    \begin{itemize}
        \ProcessList{#1}{ \insertitem }
    \end{itemize}
    }
\newcommand\insertitem[1]{\item #1}

\begin{document}

Here's a list: \mylist{a;b;c;d;e;f;g}

\end{document}

Я надеялся, что \item[\l__xparse_current_arg_int]сработает что-то простое, но этого не произошло.

решение1

С битами, разделенными на , не связано целое число \SplitList: начинается рекурсия, которая заканчивается списком.

Вы можете определить счетчик самостоятельно:

\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\int_new:N \l_anthony_list_int
\NewDocumentCommand\mylist{>{\SplitList{;}}m}
 {
  \begin{itemize}
  \int_zero:N \l_anthony_list_int
  \ProcessList{#1}{ \insertitem }
  \end{itemize}
 }
\NewDocumentCommand\insertitem{m}
 {
  \int_incr:N \l_anthony_list_int
  \item[\int_to_arabic:n {\l_anthony_list_int}] #1
 }
\ExplSyntaxOff

\begin{document}

Here's a list: \mylist{a;b;c;d;e;f;g}

\end{document}

Также можно использовать счетчик LaTeX.

\documentclass{article}
\usepackage{xparse}

\newcounter{anthonylist}
\NewDocumentCommand\mylist{>{\SplitList{;}}m}
 {
  \begin{itemize}
  \setcounter{anthonylist}{0}
  \ProcessList{#1}{ \insertitem }
  \end{itemize}
 }
\NewDocumentCommand\insertitem{m}
 {
  \stepcounter{anthonylist}
  \item[\theanthonylist}] #1
 }

\begin{document}

Here's a list: \mylist{a;b;c;d;e;f;g}

\end{document}

Конечно, было бы проще использовать enumerateвместо itemize.

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