Ich habe in der Dokumentation von xparse gelesen, dass \l__xparse_current_arg_int
von „der Nummer des aktuell eingerichteten Arguments“ die Rede ist. Ich habe jedoch Probleme zu verstehen, wie ich darauf zugreifen und es verwenden kann. Wie würden Sie sich beispielsweise im folgenden Beispiel auf diese Variable verlassen, um geordnete Listen zu erstellen (d. h. genau das, was das Ersetzen itemize
durch ergeben würde)?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}
Ich hatte gehofft, dass eine einfache Lösung \item[\l__xparse_current_arg_int]
funktionieren würde, aber das tut sie nicht.
Antwort1
Den durch geteilten Bits ist keine Ganzzahl zugeordnet \SplitList
: Es wird eine Rekursion gestartet, die mit der Liste endet.
Sie können selbst einen Zähler definieren:
\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}
Ein LaTeX-Zähler könnte ebenfalls verwendet werden.
\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}
Natürlich wäre es einfacher, enumerate
anstelle von zu verwenden itemize
.