쉼표와 다른 구분 기호를 사용하여 목록을 반복합니다.

쉼표와 다른 구분 기호를 사용하여 목록을 반복합니다.

구분 기호가 쉼표가 아닌 목록을 반복하려고 합니다. 쉼표를 구분 기호로 사용하지 않는 이유는 쉼표가 페이로드의 일부이기 때문입니다. 구분 기호가 세미콜론(또는 다른 구분 기호)인 목록을 반복하는 방법이 있나요?

지금까지 나는 노력했다.

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

관련 정보