Re: {}を使わずに繰り返し処理

名前: .
日時: 2009-09-28 13:17:19
IPアドレス: 59.134.169.*

>>53759 \def\x#1{[#1]\x} とでもすれば, \x ABCDE → [A]\x BCDE → [A][B] \x CDE …… となることはおわかりでしょうから, 問題は「終端の判定」をどうやるかということになりますね. 例えば,「\futurelet を用いて直後のトークンを調べる」という方法を 用いると次の例のようなことが可能でしょう. \documentclass{jarticle} \makeatletter %%% 空白文字あるいは改段落箇所を終端とする例 \def\myloop{\futurelet\mylooptemp\@myloop} \def\@myloop{% \let\myloopnext\relax \ifx\mylooptemp\@sptoken \else%%% \@sptoken は空白トークンのコピー \ifx\mylooptemp\par \else \ifx\mylooptemp\egroup \else%%% (*)のような場合への対処 \let\myloopnext\@@myloop \fi \fi \fi \myloopnext} \def\@@myloop#1{[#1]\myloop} \makeatother \begin{document} \myloop ABCDE XYZ \myloop 愛猫家連盟 {\bfseries\myloop abcde}%%% (*) \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)