\def\@sfornoop#1\@@#2#3{}<\br>
\long\def\@sfor#1:=#2\do#3{%<\br>
\expandafter\def\expandafter\@fortmp\expandafter{#2}%<\br>
\ifx\@fortmp\@empty<\br>
\else<\br>
\expandafter\@sforloop#2/\@nil/\@nil\@@#1{#3}<\br>
\fi}<\br>
\long\def\@sforloop#1/#2/#3\@@#4#5{%<\br>
\def#4{#1}<\br>
\ifx #4\@nnil<\br>
\else<\br>
#5<\br>
\def#4{#2}<\br>
\ifx #4\@nnil
\else #5\@siforloop #3\@@#4{#5}
\fi
\fi}
\long\def\@siforloop#1/#2\@@#3#4{%
\def#3{#1}
\ifx #3\@nnil
\expandafter\@sfornoop
\else
#4\relax\expandafter\@siforloop
\fi
#2\@@#3{#4}}
のような感じでよろしいでしょうか?
\@ifnextchar は、マクロの定義の中で、そのマクロの直後に置かれているものを
判別するコマンドです。例えば \test というマクロが
\def\test{\@ifnextchar A{:uppercase a:}{:something else:}}
と定義されている場合、
\test A
という形で \test を使うと「:uppercase a:」と表示され、
\test B
という形であれば「:something else:」と表示されます。
“\@ifnextchar [”という形で、マクロにオプション引数が指定されているか
どうかを判別するのが典型的な使い方です。
\@tempcnta は、スクラッチ・ユースのために用意されている
カウント・レジスター(整数変数)です。
\@tempcnta=2\relax
のようにして代入します。
(LaTeX のカウンターとは違うので、\setcounter は使えません)
\parshape は、段落の形状を指定するコマンドです。
\parshape n i1 l1 i2 l2 i3 l3 ... in ln
という形で指定します。ここで、n は行数、ik は k 行目の
インデント幅、lk は k 行目の行長を指定します。
n+1 行目以降のインデント幅・行長は、n 行目と同じになります。
例えば、
\parshape 4 10mm 60mm 20mm 50mm 30mm 40mm 40mm 30mm
\noindent いろはにほへとちりぬるをわかよたれそつねならむ
うゐのおくやまけふこえてあさきゆめみしゑひもせすん
いろはにほへとちりぬるをわかよたれそつねならむ
うゐのおくやまけふこえてあさきゆめみしゑひもせすん
のように使います。
マクロ作成に手を染められるなら、手始めに藤田眞作さんの
『LaTeX2e まくろの八衢』あたりを読まれるとよいかと思います。
下記の URL から PDF で入手できます。
http://xymtex.com/