TeXの記憶(19) — 文字列を分解する(\@tfor)

引数の文字列を一つずつ取り出して、何か加工したいときなどに使えます。
たまたま使う機会があったので簡単にまとめておきます。

\newcommand{\foo}[1]{\@tfor\bar:=#1\do{..\bar..}}

のように使います。引数の文字列から1文字つず取り出して\doの中で
取り出した1文字を処理できます。\chは任意の定義です。

文字列をブラケットで囲む簡単な例です。

\newcommand{\mkBra}[1]{\@tfor\ch:=#1\do{[\ch]}}

\mkBra{12345}とすると

[0][1][2][3][4][5]

という文字列になります。

私の場合は、強引に半角数字を全角にするために利用しました。
全部の数字とアルファベットをこのやり方で作ったら
クラクラするマクロができてしまいました。これはその一部です。

\newcommand{\mkZen}[1]{\@tfor\han:=#1\do{\@zen{\han}}}
\newcommand{\@zen}[1]{%
  \if#10{0}%
  \else\if#11{1}%
  \else#1\fi\fi
}

コメント