見出し画像

『数式組版』を組む技術:出力ルーティーン(2)

本稿において,“本書”とは木枝祐介著『数式組版』ラムダノート(2018)のことである.
>>> https://www.lambdanote.com/collections/mathtypo
また,本書はLuaLaTeXを用いて組まれた.したがって本稿ではLuaLaTeXの使用を前提としている.
本書が組まれた当時はTeX Live 2017が用いられたが,多くのコードはそれより後のTeX Live 2019まで共通して使用可能である.
本稿では,バージョンに強く依存する場合を除いて,各バージョンは明記されないことがある.

フロートの配置位置決定の原理

ここでは,次のことを仮定する.

▶ フロートはfigure環境のみで作成されている
▶ figure環境にオプション[t]が指定されている
▶ フロートは版面領域を越えない大きさである
▶ 版面領域内には本文およびフロートのみが存在する

ポイントはfigure環境を記述する位置である.
一般に,figure環境などのフロートは段落と段落との間に記述することが推奨される.
なお,この理由や是非についてはここでは触れないが,コード上はその様に記述されているとする.

◆1つのフロートの配置位置決定
フロートが配置されるページを見い出すには,段落単位で版面領域内に自然に仮配置し,その仮配置した状態でfigure環境が発行され配置要求がなされた段落間を基準に,フロートがどのページに配置可能かを検討する.
フロートの配置要求があった場合には,いったん版面領域内に挿入する候補のリストにフロートを登録する.
その登録されたリスト内の各フロートの高さを参照しながら,版面領域内での適当な位置を見い出すのである.

画像2

フロート配置要求がなされたタイミングである段落間の存在する版面領域において,当該ページに配置可能な状況とはつぎのものである.
すなわち,版面領域の高さからフロートの高さとフロートと本文の間のスペースを加えたものを減じた領域に,フロート配置を要求した箇所が版面領域内に依然として存在する状況である.
一方,そうでないときフロートは次ページの版面領域のなかで再度その配置を検討される.

画像2

この仕組みによって,フロートの配置要求がなされた段落間が存在する版面領域よりも前のページに,その要求されたフロートが配置されることはない.

:フロートのみの縦方向の大きさではなく,本文との間のスペースもフロートの配置には必要である.

:フロートとその本文間とのスペースが確保され本文が進行し,figure環境が発行された段落間の直前の段落がちょうど版面領域下端で終了したとき,フロートは次ページに送られず,当該版面領域内に配置される.

◆複数のフロートの配置位置決定
複数のフロートに対しては,それぞれ最初のものから順に処理されることによって,フロートが配置されるページは決定できる.

フロートの配置要求があったとき,リストに追加されるのは同様である.
最初にリストに追加されたフロートの高さを参照し,可能である版面領域に配置し,そのフロートが配置された版面領域に自然に組まれた本文中にまだフロート配置要求があれば,残りの版面領域に対して次のフロートの高さを参照して再び当該版面領域に配置可能かを検討していく.

なお,同一版面領域内でフロートが隣接する場合は,フロートと本文との間のスペース`\textloatsep`はいったん削除され,フロート間のスペース`\floatsep`が考慮されてフロートの連続の最後で本文との間のスペース`\textloatsep`が改めて追加されて配置可能な版面領域が検討される.

:実際の配置においては,その版面領域内における配置最大数である`topmargin`や`\topfraction`および`\textfraction`によるフロートが占有できる版面領域に対する割合も考慮される.

フロートが次ページに配置される状況で,配置すべきフロートが複数のこっている場合,新たな版面領域内で上端から順に配置される.
このとき,残っていたフロートが版面領域内に収まりきらない場合は,さらに次のページの上端に配置される.
本文が一切存在しない版面領域をもつページまで送られた場合は,フロートのみのページとして配置される.

この記事が気に入ったらサポートをしてみませんか?