1#ifndef TYPESET_BLOCK_BLOCK_HPP
2#define TYPESET_BLOCK_BLOCK_HPP
81 std::vector<inl::Paragraph>
body;
108 std::shared_ptr<const dl::Image>
image;
129 std::map<std::string, std::string>
params;
238 bool numbered =
false) {
240 h.
para = std::move(p);
243 if (style) h.
block = *style;
244 blocks.push_back(std::move(h));
252 b.
label = std::move(label);
253 b.
body.push_back(std::move(body));
256 b.
block = std::move(style);
257 blocks.push_back(std::move(b));
261 r.thickness = thickness;
263 r.block = std::move(style);
264 blocks.push_back(std::move(r));
270 std::map<std::string, std::string> params = {},
bool numbered =
false,
273 o.handler = std::move(handler);
274 o.source = std::move(source);
275 o.params = std::move(params);
276 o.textStyle = std::move(textStyle);
277 o.numbered = numbered;
278 o.block = std::move(style);
279 blocks.push_back(std::move(o));
285 blocks.push_back(std::move(s));
290 blocks.push_back(std::move(s));
block — ブロック(段落・見出し・罫線・ラベル付き段落・アキ・セクション)
std::variant< ParagraphBlock, HeadingBlock, RuleBlock, SpacerBlock, LabeledBlock, SectionBlock, ImageBlock, TableBlock, ListBlock, TocBlock, ObjectBlock, IndexBlock > Block
@ FloatEnd
行末側に寄せて本文を回り込ませる
@ FloatStart
行頭側に寄せて本文を回り込ませる(横組み: 左、縦組み: 上)
@ Block
本文の流れに置く(行送り方向に高さぶん消費する)
Pt spaceBefore
ブロック前のアキ(行送り方向、pt)
bool keepTogether
ブロックを段の境で分けない(段より大きければ分ける)
bool keepWithNext
次のブロックと同じ段に置く(見出し)
std::string label
相互参照のラベル。本文の {ref:ラベル} が番号(見出し・図・表)、{page:ラベル} がページ番号になる
bool spanColumns
段抜き(全幅に置く。段組のときだけ意味がある)
std::optional< Color > background
背景(段落・コードブロック用)。padding は背景の内側の余白(行送り方向)
void addObject(std::string handler, std::u16string source, TextStyle textStyle, std::map< std::string, std::string > params={}, bool numbered=false, BlockStyle style={})
void addTable(TableBlock table)
void addParagraph(inl::Paragraph p, BlockStyle style={})
void addIndex(IndexBlock idx)
void addRule(Pt thickness=0.5f, Color color=Color{0, 0, 0, 255}, BlockStyle style={})
std::vector< Block > blocks
void addObject(ObjectBlock obj)
void addList(ListBlock list)
void addImage(ImageBlock img)
void addToc(TocBlock toc)
void addLabeled(inl::Paragraph label, inl::Paragraph body, Pt labelWidth, Pt gap=0.0f, BlockStyle style={})
void addHeading(inl::Paragraph p, int level=1, std::optional< BlockStyle > style=std::nullopt, bool numbered=false)
bool numbered
自動採番(レベル 1: "1."、レベル 2 以降: "1.1")を見出しの前に付ける
bool bookmark
PDF のしおりに入れる
std::optional< inl::Paragraph > caption
画像の下(行送り方向の後)に置く。テキストの {fig} は図番号になる
Align align
Block のときの行方向の揃え
std::shared_ptr< const dl::Image > image
索引。本文中の {index:用語} / {index:よみ|用語} を集め、読みの順(かな: 五十音、欧文: A–Z)に 用語とページ番号を並べる。目次と同じく前のパスで集めた情報を使う(2〜3 パス...
std::u16string pageSeparator
bool grouped
行(あ・か・さ…)ごとに見出しを入れる
std::optional< TextStyle > groupStyle
見出し文字(あ・か・さ… / A・B…)。無ければ style
ラベル付き段落 — 台本の「名前欄+本文」、箇条書き、用語集
std::vector< inl::Paragraph > body
std::u16string numberSuffix
Numbered のとき "1." の "."
Pt labelWidth
0 なら 1.5em(本文サイズ基準)
std::vector< inl::Paragraph > items
外部ハンドラで生成するオブジェクトのブロック(別行立ての数式・グラフなど)
std::optional< inl::Paragraph > caption
std::map< std::string, std::string > params
罫線(行送り方向に thickness を占め、行の方向いっぱいに引く)
以降の段数を切り替える。段の途中なら次のページから効く
std::optional< int > columns
std::optional< Pt > columnGap
std::vector< TableColumn > columns
空なら行のセル数から自動列数(全部自動幅)
bool fullWidth
段の幅いっぱいに広げる(false なら自然幅で align)
std::optional< inl::Paragraph > caption
表の上に置くキャプション。テキストの {table} は表番号になる
std::vector< TableRow > rows
bool horizontal
横罫(行の境)を引く
std::vector< inl::Paragraph > paras
int rowspan
下の行へまたぐ。またいだ行はページをまたがない(まとめて次の段へ)
表 — TeX の tabular 水準(列幅指定/自動、罫線、colspan、ヘッダ行の繰り返し、ページまたぎ)
Align align
セル内の揃え(段落の align を上書き)
Pt width
0 = 自動(内容の自然幅から配分)
bool header
ヘッダ行(ページをまたぐときに繰り返す)
std::vector< TableCell > cells
目次。前のパスで集めた見出し(番号付き)とページ番号を並べる
Pt indentPerLevel
0 なら 1em
std::optional< TextStyle > subStyle
level 2 以降(無ければ style)
TextStyle style
項目の文字(level 1)