自前の漢文組版ルーチンのための準備。ルビや送り仮名の文字数に応じて印字の位置などを微妙に変えるために、文字数を数えるマクロが役に立つ。幸い、LaTeXには組み込みのループ処理マクロがある。
\@tfor
というのがそれである。
\@tfor 変数 :=トークンリスト \do{処理の内容}
の様に使う。例えば、次のように \WordCount を定義しておくと、\WordCount{長い文字列} は 5 となる。
\def\WordCount#1{%
\@tempcnta\z@
\@tfor \@tempa:=#1\do{\advance\@tempcnta\@ne}%
\the\@tempcnta
}
僕が持っている版のLaTeX Companionには、こういう内部マクロの情報がなかった。今回参考にしたのは、
LaTeX2e マクロ&クラス プログラミング基礎講座
LaTeXだけでなくTeXの内部構造から丁寧に解説してある。素晴らしい本だと思うが、リンク先を見ると在庫無しとのこと。残念である。こういう需要は少ないのかなあ。