循環使用不同於逗號的分隔符號的列表

循環使用不同於逗號的分隔符號的列表

我正在嘗試迭代一個列表,其分隔符號不是逗號。不使用逗號作為分隔符號的原因是它們是有效負載的一部分。有沒有辦法迭代分隔符號為分號(或任何其他分隔符號)的清單?

到目前為止,我已經嘗試過

\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)}

相關內容