KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당

\def\foo{\futurelet\next\fooo}
  % 다음 토큰을 \next로 복사하고 \fooo 실행
\def\fooo{\ifx\next\bgroup\expandafter\foooo\fi}
  % \next가 '{'이면 \fi를 읽은 후 \foooo 실행
\def\foooo#1{\fbox{#1}\foo}
  % fbox 수행 후 \foo로 되돌아감.


빈 칸(스페이스)이나 개행이 오면 인자 전달이 종료된다,는 주문사항을 존중한다면 두번째 매크로를

\makeatletter
\def\fooo{%
  \ifx\next\par\else % \next가 \par도 아니고
    \ifx\next\@sptoken\else % 스페이스도 아니면
      \expandafter\expandafter\expandafter\foooo
        % 아래 \fi 두 개를 읽은 후 \foooo 실행
    \fi
  \fi
}
\makeatother


이렇게 하면 대체로 무난할 거 같네요. 이 코드의 장점(혹은 단점)은 \foo 123456 789 처럼 중괄호를 매번 입력하지 않아도 된다는 것입니다.


이번에도 루아를 이용한 코드, expl3를 이용한 코드를 볼 수 있기를 희망합니다.

KTUG 한국 텍 사용자 그룹