Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
xparse에 g-타입 인자지정자가 있습니다. 이걸 이용하면 예를 들어 한 개의 일반 인자와 두 개의 옵션 인자로 최대 3개의 인자가 올 수 있다고 할 때
이 방법은 가변 인자의 최대 개수가 정해져 있을 경우 적당합니다. 그런데 문제에서는 인자의 수를 제한하지 않았으니까, 꼬리 재귀 방식으로 다음번 (옵션)인자를 받아들이게 해봤습니다.
expl3를 쓰고자 할 때 제가 처음 생각한 것은 다음과 같은 것이었습니다. 위의 \foo_next:n 매크로를 다음과 같이 정의하는 것이었습니다.
\peek_catcode:NTF는 인자 다음에 오는 토큰의 catcode를 검사합니다. 위의 방법은 그것이 left brace인가 조사하여 재귀호출하게 한 것입니다.
위의 DohyunKim님의 답변을 읽고 꼭 중괄호로 인자를 주지 않더라도 처리할 수 있게 해봤습니다. peek_catcode로 space token을 검사하여 거짓이면 재귀호출하게 하였습니다.
이 마지막 경우에 \foo 12345 67과 같은 입력을 처리합니다.
아무튼 이 문제에 관한 한, xparse나 expl3의 편리함을 잘 볼 수 있는 케이스가 아닌가 싶습니다.