
구분 기호가 쉼표가 아닌 목록을 반복하려고 합니다. 쉼표를 구분 기호로 사용하지 않는 이유는 쉼표가 페이로드의 일부이기 때문입니다. 구분 기호가 세미콜론(또는 다른 구분 기호)인 목록을 반복하는 방법이 있나요?
지금까지 나는 노력했다.
\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)}