\l__xparse_current_arg_int
xparse のドキュメントで、「現在設定されている引数の数」について言及されているのを読みました。しかし、その変数にアクセスして使用する方法が理解できません。たとえば、次の例では、その変数を使用して順序付きリスト (つまり、置換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
。