\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
.