作ってみたものの、あまり役に立たなそうなコマンドです。\@whilenumを使ってみたかった、というのがいちばんの理由です。
TeXには「\parshape」というコマンドがあって、TeX Bookの例を見たりするとなんだか便利に使えそうな気がします。ところが実際に指定しようとすると、必要な行数だけ引数を指定しなければならず面倒です。
\parboxの使い方は
\parbox n i_1 l_1 i_2 l_2 ... i_k l_k ... i_n l_n n:整形に必要な行数 i_k:k行目の字下げ幅 l_k:k行目の文字数 n行目以降は最後のi_nとl_nの値が続く
これを必要な行数分引数として渡すのはとても面倒なので、引数を文字列として作って\parboxに渡すためのコマンドを作ってみました。TeX Bookの例よりずっと単純で、右端の一部を開けるだけですの機能です。
図版を回り込ませるならwrapfig.styのようなマクロを使ったほうが便利ですね。
実行例
\newcommand{\Parshape}[3][0]{% \@tempcnta=#1\advance\@tempcnta by 1 % 全体の行数が入る \@tempcntb=1 \def\STR{}% % #1 != 0なら、#1行分は普通に出力するための引数の文字列 \@whilenum\@tempcntb<\@tempcnta\do{\edef\STR{ \STR 0pt \the\linewidth }% \advance\@tempcntb by 1}% \advance\@tempcnta #2 % 整形するための引数の文字列 \@whilenum\@tempcntb<\@tempcnta\do{\edef\STR{ \STR 0pt #3 }% \advance\@tempcntb by 1}% % 最終行以降、段落の終わりまでは通常の指定 \edef\STR{\STR 0pt \the\linewidth}% % 作った文字列を引数として渡す \parshape \@arabic\@tempcnta \STR} ..... \begin{document} % 2行は通常、3行分右明け、2+3+1行からは通常 \Parshape[2]{3}{15zw} □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
コメント