カンマ以外の区切り文字を持つリストをループする

カンマ以外の区切り文字を持つリストをループする

区切り文字がカンマではないリストを反復処理しようとしています。区切り文字としてカンマを使用しない理由は、カンマがペイロードの一部であるためです。区切り文字がセミコロン (またはその他の区切り文字) であるリストを反復処理する方法はありますか?

これまで私は

\documentclass{article}

\makeatletter
\newcommand{\ls}[1]{\@for\tmp:=#1 \do{\tmp}}
\makeatother

\begin{document}

\ls{(a,b);(c,d)}

\end{document}

したがって、セミコロンで区切られたタプル、つまり (a,b) と (c,d) をループしたいと思います。

編集: に関するドキュメントも探しました\@forが、見つかりませんでした。

答え1

には、リスト パーサーの作成など、多くの興味深い機能がありますetoolbox。星なしバージョンも参照してください。

\documentclass[a4paper]{memoir}
\usepackage{etoolbox}
\begin{document}
\newcommand\handler[1]{item: #1\par}
\DeclareListParser*\forsemicolonlist{;}
\forsemicolonlist\handler{(a,b);(c,d);(e,f)}
\end{document}

答え2

たとえば、次のコードを使用できます。

\def\ls#1{\lsA#1;;}
\def\lsA#1;{\ifx;#1;\else \dosomething{#1}\expandafter\lsA\fi}
\def\dosomething#1{\message{I am doing something with #1}}

\ls{(a,b);(c,d);(e,f)}

関連情報