透過 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

相關內容