primitive

変換系

他の型から変換したり他の型へ変換する系のプリミティブです。

val line-break : bool -> bool -> context -> inline-text -> inline-boxes

inline-boxes 型を block-boxes 型に変換します。

最初に与える2つの真偽値は、それぞれ「そのブロックの直前での改行を許可するか」と「直後での改行を許可するか」です。

val read-block : context -> block-text -> block-boxes

block-text block-boxes 型に変換します。 この時に与える context 型によって出力される block-boxes の行送りや分割位置などを変更することができます。

val embed-block-breakable : context -> block-boxes -> inline-boxes

block-boxes 型を一時的に inline-boxes 型に擬態させる役割を持ちます。

val add-footnote : block-boxes -> inline-boxes

脚注を作成します。

val embed-block-top : context -> length -> (context -> block-boxes) -> inline-boxes

block-boxes 型を指定した横幅の inline-boxes 型に変換します。この時、一番上の行が他の行と同じ高さになるように変換されます。

val embed-block-bottom : context -> length -> (context -> block-boxes) -> inline-boxes

block-boxes 型を指定した横幅の inline-boxes 型に変換します。この時、一番下の行が他の行と同じ高さになるように変換されます。

val page-break : page -> ((| page-number : int |) -> (| text-height : length; text-origin : point |)) -> ((| page-number : int |) -> (| header-context : block-boxes; header-origin : point; footer-content : block-boxes; footer-origin : point |)) -> block-boxes -> document

ページ番号を元にテキストの位置を返す関数とヘッダーとフッターの位置を返す関数と一緒に本文となる block-boxes を渡すことでPDF出力モードの時に最終的に作らなければいけない document 型を得られます。

val page-break-two-column : page -> length -> (unit -> block-boxes) -> ((| page-number : int |) -> (| text-height : length; text-origin : point |)) -> ((| page-number : int |) -> (| header-context : block-boxes; header-origin : point; footer-content : block-boxes; footer-origin : point |)) -> block-boxes -> document

page-breakの2段組用のプリミティブです。

枠組み

val block-frame-breakable : context -> pads -> deco-set -> (context -> block-boxes) -> block-boxes

context、余白、描画指定、中身をそれぞれ入れることで 途中でページ分割可能な枠で囲まれた部分を作ります。

block-frame-breakableに与えられるdeco-setはそれぞれ「口」形・「冂」形・「||」形・「凵」形のグラフィックスを返すような関数です。

その他

val (+++) : block-boxes -> block-boxes -> block-boxes

block-boxes 同士を横に繋げます。

val block-nil : block-boxes

何もない block-boxes を作ります。

val clear-page : block-boxes

改行する block-boxes を作ります。

val block-skip : length -> block-boxes

指定した長さの分だけ縦の空白を作ります。

val get-natural-length : block-boxes -> length

block-boxes の横幅を取得します。