primitive

変換系

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

val embed-string : string -> inline-text

文字列をインラインに変換します。

val embed-math : context -> math -> inline-boxes

math 型を inline-boxes 型にして文章中に置くための唯一のプリミティブです。

val extract-string : inline-boxes -> string

inline-boxes を無理やり文字列に変換します。

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

read-inline ctx {text}のようにして使います。 文字やコマンド以外の情報がない inline-text inline-boxes 型に変換します。 この時に与える context 型によって出力される inline-boxes のフォントや色やフォントサイズを変更することができます。

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

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

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

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 inline-graphics : length -> length -> length -> (point -> (grahpics) list) -> inline-boxes

横幅・高さ・深さと、座標を元にグラフィックを返す関数を与えることで grahpics inline-boxes に変換できます。

val inline-graphics-outer : length -> length -> length -> (length -> point -> (grahpics) list) -> inline-boxes

詳細不明

val use-image-by-width : image -> length -> inline-boxes

PDFや画像のパスから作成した image 型と横幅を与えることで inline-boxes を作成します。

長さ・余白系

val inline-nil : inline-boxes

“何も起こさない” inline-boxes です。

val inline-fil : inline-boxes

周囲の要請に合わせてどこまでも伸びるが行分割されることのない空白です。

val inline-skip : length -> inline-boxes

指定した長さの分だけ改行されない空白を作ります。

val inline-glue : length -> length -> length -> inline-boxes

自然な長さ・周囲の要請に合わせて縮む時の長さ・伸びるときの長さを与えて空白を作ります。

val script-guard : script -> inline-boxes -> inline-boxes

文字体系を与えることで、前後のスペーシングをその文字体系に揃えられます。

val script-guard-both : script -> script -> inline-boxes -> inline-boxes

前後に違う文字体系が来るときに、そのスペーシングを調節できる。

val get-leftmost-script : inline-boxes -> (script) option

その inline-boxes がどの文字体系なのかを取得する

val get-leftmost-script : inline-boxes -> (script) option

その inline-boxes の左側がどの文字体系なのかを取得する

val get-leftmost-script : inline-boxes -> (script) option

その inline-boxes の右側がどの文字体系なのかを取得する

val discretionary : int -> inline-boxes -> inline-boxes -> inline-boxes -> inline-boxes

改行ペナルティ・「そこで行分割されなかったときの内容」・「そこで行分割されたときに直前の行末に入る内容」・「その直後の行頭に入る内容」を与えることで行分割候補位置を作成します。

val get-natural-metrics : inline-boxes -> (length * length * length)

その inline-boxes の横幅・高さ・深さをタプルで返します。

囲みわく

val inline-frame-outer : pads -> deco -> inline-boxes -> inline-boxes

余白指定、描画指定、内容をそれぞれ入れることで枠で囲まれた部分を作ります。

枠内で行分割されることはありませんが、内側の要請に合わせて内容に含まれるグルーが伸び縮みします。

val inline-frame-inner : pads -> deco -> inline-boxes -> inline-boxes

余白指定、描画指定、内容をそれぞれ入れることで枠で囲まれた部分を作ります。

枠内で行分割されることはありません。また、内容に含まれるグルーが伸び縮みすることはありません。

val inline-frame-fixed : length -> pads -> deco -> inline-boxes -> inline-boxes

枠の幅、余白指定、描画指定、内容をそれぞれ入れることで枠で囲まれた部分を作ります。

枠内で行分割されることはありませんが、最初に入れた枠の幅に合わせて内容に含まれるグルーが伸び縮みします。

val inline-frame-breakable : pads -> deco-set -> inline-boxes -> inline-boxes

余白、描画指定、内容をそれぞれ入れることで 途中で行分割可能な枠で囲まれた部分を作ります。内容のグルーは行分割に合わせて伸び縮みします。

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

その他

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

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

val hook-page-break : ((| page-number : int |) -> point -> unit) -> inline-boxes

ページ番号を元に何かを行う関数を行えることで副作用を起こします。返される inline-boxes inline-nilと同じ挙動をします。

val line-stack-top : (inline-boxes) list -> inline-boxes

詳細不明

val line-stack-bottom : (inline-boxes) list -> inline-boxes

詳細不明

val raise-inline : length -> inline-boxes -> inline-boxes

詳細不明