名前: しっぽ愛好家 日時: 2003-01-29 21:02:49 IPアドレス: 211.4.33.*
>>15887 >htbp を優先順位の順に並べるのが正しい使い方 (ごく最近に float の配置アルゴリズムが変更されたというのでなければ,) 実は,そうではありません. figure 環境などの位置指定は,配置可能な箇所を列挙しているだけです. %%% tbp でも btp でも同じですし,LaTeX が配置を試みる順序は決まっています. [補足] \@float の処理の中で,float の配置指定を読み取る部分は次のようになっています. %%% \@tfor のループの中では,\reserved@a が `t',`b' などの位置指定を表す %%% 個々の文字になります. \@tempcnta \sixt@@n \expandafter \@tfor \expandafter \reserved@a \expandafter :\expandafter =\@fps \do {% \if \reserved@a h% \ifodd \@tempcnta \else \advance \@tempcnta \@ne \fi \fi \if \reserved@a t% \@setfpsbit \tw@ \fi \if \reserved@a b% \@setfpsbit 4% \fi \if \reserved@a p% \@setfpsbit 8% \fi \if \reserved@a !% \ifnum \@tempcnta>15 \advance\@tempcnta -\sixt@@n\relax \fi \fi }% これは,位置指定に応じて \@tempcnta の適当なビットを立てているだけですので, 少なくとも `t',`b' などを記述した順序は無視されるということが 見てとれることと思います. なお,\@setfpsbot は次のように定義されています. \def \@setfpsbit #1{% %%% #1: 2 のべき(\@tempcnta の #1 に対応するビットを立てるマクロ) \@tempcntb \@tempcnta \divide \@tempcntb #1\relax \ifodd \@tempcntb \else \advance \@tempcnta #1\relax \fi } %%% 一方,実際に float の配置を試みる順序については,一言では %%% 説明できません.
この書き込みへの返事: