# Sandbox：テンプレートページ

> ページ上で編集するページテンプレートと枠、枠スタイルのライブラリ、すべての版でのテンプレートページの検査、テキストのMarkdownへの移行、ワンクリックでの枠の修正

- HTML版: https://postext.dev/ja/docs/sandbox-composed-pages
- 最終更新: 2026-10-17
- 読了時間: 13分
- 他の言語: [en](https://postext.dev/en/docs/sandbox-composed-pages.md), [es](https://postext.dev/es/docs/sandbox-composed-pages.md), [ca](https://postext.dev/ca/docs/sandbox-composed-pages.md), [de](https://postext.dev/de/docs/sandbox-composed-pages.md), [fr](https://postext.dev/fr/docs/sandbox-composed-pages.md), [it](https://postext.dev/it/docs/sandbox-composed-pages.md), [pt](https://postext.dev/pt/docs/sandbox-composed-pages.md), [zh](https://postext.dev/zh/docs/sandbox-composed-pages.md), [ar](https://postext.dev/ar/docs/sandbox-composed-pages.md)

## かんたんな説明

このページでは、Sandboxがテンプレートページのために用意している機能をまとめます。テンプレートページは、ページテンプレートが並べた枠にテキストを流し込むページです。テンプレートの枠は、ページの上で直接描いたり動かしたりでき、枠のスタイルはライブラリにまとまっています。検査パネルは、本のどの言語で、どのテンプレートページのテキストが枠に収まっていないかを知らせ、枠を直すボタンも出します。テンプレートページができる前に作った本は、各ページのテキストを一度にMarkdownへ移せます。

このページは、デザインパネルと検査パネルのうち、テンプレートページ（`::::page` で書き、ページテンプレートの枠に内容を流し込むページ）に関わる部分をまとめたものです。両パネルのそのほかの部分は[Sandbox：デザインパネルと検査パネル](https://postext.dev/ja/docs/sandbox-design-checks.md)に、テンプレートページの書き方は[テンプレートページ](https://postext.dev/ja/docs/composed-pages.md)にあります。

## ページテンプレート

**デザイン › ページと段組み › ページテンプレート**では、組ページ（`::::page{template="…"}`）が内容を流し込むレイアウト `pageTemplates` を、設定ファイルを開かずに編集する。

- **一覧**には、テンプレートごとに枠の図、id、それを使う本のページ数（見開きは 2 ページと数える）、**ベース**のテンプレートが並ぶ。**新規**は、ページのスロット指定のない本文を受け取る枠を一つ持つテンプレートを作る。**複製**は開いているテンプレートをコピーする。**レイアウトをテンプレートとして保存**は、選んだ組ページ（なければ最初に組まれた組ページ）を新しいテンプレートにする。枠は組み上がった位置に、ミリ単位の固定サイズで置かれ、スタイルとほかのフィールドはそのまま残る。
- **編集対象**で、フィールドの変更先を選ぶ：*全ページ*（テンプレート自体）、*奇数ページ*、*偶数ページ*（`variants.recto`、`variants.verso`）。その対象で設定していないフィールドは継承した値を淡く表示し、リセットで継承値に戻る。**見開き**テンプレートは**ノド**とともに 2 ページで 1 枚のシートとして描かれ、綴じ側の帯が示される。見開きには奇数・偶数のバリアントはない。右から左へ組む本と縦組みの本では、紙面はページの組み方向で読みます。見開きの最初のページは右ページで、向かい合うページの領域と綴じ代の帯は、エンジンが置いた側に描かれます（postext 1.40以降）。
- **テンプレート**：id（名前を変えると、本の中でそれを指定しているページブロックもすべて書き換わる）、名前、**ベース**（`extends`）、見開きのスイッチ、**枠の基準**（`area`）、**追加ページのテンプレート**（`overflowTemplate`：枠の内容が続く追加ページのテンプレート。[文章が追加ページに続くとき](https://postext.dev/ja/docs/composed-pages.md#文章が追加ページに続くとき)を参照）、グリッド、**テンプレートを削除**（指定しているページ数を示す。これをベースにしたテンプレートは継承した内容を保つ）。
- **枠**：枠ごとのボタン、**枠を追加**、選んだ枠のプロパティ。名前（スロット）と**空でもよい**、位置（テンプレート領域・仕上がりページ・裁ち落とし・ほかの枠やグループへのアンカー、基準の辺、オフセット）またはグリッドのセル、幅と高さ（*固定*、*領域の割合*、*内容に合わせる*、*端まで*）とその限度、囲みのスタイル、レイヤー、回転、内容の位置、段数、辺ごとの内側の余白、**ページの本文を受け取る**（`flow`）、**最初の見出しを受け取る**（`takes`）、**あふれた文字の続き先**（`next`）、**ほかの枠の文字が回り込む**（`exclude: "push"`）、有効なときの**押しのける形**（*外枠*か*輪郭*、`wrap`。中の画像の形で押しのけます）、収め方（`fit`）、グループ内の伸長・縮小・優先度・固定、続き（`overflow.continueIn`、`overflow.mark`、`overflow.fromMark`）。**入りきらない内容の行き先** では、続けない、次のページ、別の枠、別のテンプレート、そして本の中で `id` を持つすべてのページフェンス（`page:<id>`）を選べます。*後のページをidで指定…* では `{attr.sigue}` や `p47#resto` のような値を入力できます。どのフィールドにも説明とリセットがある。
- **グループ**：名前、縦に積むか横に並べるか、枠の間隔、余ったスペースの置き場所、ページ順に並ぶグループの枠。**グループ自身のボックス**があるグループは余ったスペースを分け、枠はその中でスペースを返す。ないときは、グループは枠のボックスを合わせたものになる。
- **柱とノンブル**（*本と同じ*、*表示しない*、*独自*）と**装飾**は、本のヘッダー・フッターと同じように編集する。装飾のテキストはページの属性を読める（`{attr.名前}`）。

**ページ上で：デザインモード。** プレビュー上のスイッチを**デザイン**にする（またはこの節の**ページ上で枠を編集**をオンにする）と、組ページにマージン、グリッド、見開きのノド、連結ごとの矢印が表示される。枠を押すと選択されてプロパティが開き、ドラッグで移動、選んだ枠の 8 つのハンドルでサイズ変更、何もない所をドラッグすると新しい枠を描く。枠はマージン、グリッド、ほかの枠の辺と中心にスナップする（Alt を押しながらなら自由に置け、Esc でドラッグを取り消す）。位置はミリ単位で書き戻され、ほかの枠につながる枠はアンカーを保ったままオフセットだけが変わる。同じテンプレートをほかのページも使っている場合は、変更の保存先を尋ねる：**テンプレートを変更**（ページ数を表示）か、**このページだけ**。後者は元のテンプレートをベースにしたこのページ用のテンプレートを作り、ページブロックがそれを指定するように書き換える。回転した枠はページ上で移動でき、サイズはフィールドで指定する。ドラッグでできることは、すべてフィールドからキーボードでも行える。

## 枠のスタイル

**デザイン › 囲み › 枠のスタイル**は、囲みスタイル（`calloutStyles`）をライブラリとして見せる。ページテンプレートの枠も同じスタイルをまとう（`frames[].style`）ので、一つのスタイルが本文の`:::callout`の囲みにも、テンプレートページの枠にも使える。

- **各スタイル**は、エンジンが見本の段落を入れて描く。スタイルにラベルタブがあれば見本のタブも描く。描き方は枠がまとうときと同じで、幅は 80 mm（内側の余白で版面が 40 mm を切るときはもっと広く）、本文の流れの中に置き、囲みスタイルが箱に与えうる固定位置は使わない。別のスタイルをベースにしたスタイル（`extends`）は、ページが描くのと同じように、ベースから受け継いだ見た目で描かれる（postext 1.40以降）。名前の下には、本のどこで使われているかが出る。テンプレートの枠、そのテンプレートで組んだテンプレートページ、本文の囲みである。開くと、すべての枠（**開く**でページテンプレートのその枠へ移る）と、章ごとの囲み（**表示**で「テキスト」パネルの次のブロックを選ぶ。`type`のないブロックは最初のスタイルに数える。エンジンがそのスタイルを当てるからだ）が並び、**スタイルを編集**で囲みスタイルの編集画面がその場に開く。**表示**で一覧を絞り込める。*テンプレート*（テンプレートがスタイルを使っていれば最初にこれが出る）、*本文*、*未使用*、*すべて*。
- **統合の提案**は、ほぼ同じスタイルを、いちばん多く使われているスタイルのもとにまとめる。「この 3 個のスタイルは内側の余白だけが違います。統合しますか？」。比べるのはエンジンが解決した値で、設定ごとに比べ、id と名前は数えない。0.5 mm 以内の長さと ΔE 2 以内の色は同じとみなし、内側の余白の上下左右はまとめて一つの設定と数える。**違ってよい設定の数**（既定は 2）で、いくつまで違ってよいかを決める。
- 本文の`:::callout`の囲みの置き場所（配置、固定位置、またがる幅、上下のアキ）は一致していなければならない。そうでないと統合で囲みが動いてしまう。**見た目だけを比べる**をオンにすると置き場所は比べず、確認画面に動く囲みの数が出る。オフのあいだは、オンにすればさらにいくつ統合できるかをセクションが示す。テンプレートの枠だけが使うスタイルは、常に見た目で比べる。枠の位置はテンプレートが決めるからだ。
- **囲みを今の場所に残す**（**見た目だけを比べる** と一緒に表示、既定でオン）：残すスタイルと囲みの置き場所が違うスタイルは、完全には統合しません。置き場所（配置、固定位置、またがる幅、上下のアキ）だけを持ち、残すスタイルを元にして（`extends`）残るので、その囲みは残すスタイルの見た目になり、動きません。確認画面に、こうして残るスタイルの数が出ます。
- **確認**には、消えるスタイルごとに何が違うか、書き換わる章と枠が並ぶ。**… に統合**（または**すべての提案を統合**）は、テンプレートの枠（バリアントを含む）の`style`と、すべての章のブロックの`type`を残すスタイルに書き換え、ほかのスタイルを削除し、残すスタイルをそのグループの先頭のスタイルがあった位置に置く。こうして`type`のないブロックの見た目は変わらない。統合は Sandbox の取り消し履歴に、書き換えた章ごとに一つ、スタイルとテンプレートに一つのステップとして入る。統合のあとに何も変えていなければ、セクションの**取り消し**で統合全体を戻せる。Cmd/Ctrl+Z では一ステップずつ、まずスタイルから戻るので、途中のどの状態でも存在するスタイルだけを指す。
- *囲みスタイル*でスタイルの名前を変えると、すべてのブロックとテンプレートの枠でも名前が変わる。

統合が書き換えるのは、開いている版の章だけだ。本のほかの言語の版は下書きや別のプロジェクトとして保存され、それぞれのスタイルを保つ。エージェントは`sandbox_frame_styles`と`sandbox_merge_styles`で同じライブラリを使える（[WebMCP](https://postext.dev/ja/docs/webmcp.md)を参照）。

## すべての版のテンプレートページ

ページテンプレート（`pageTemplates`）のある本では、パネルの先頭に**テンプレートページ**が表示されます。本に含まれるすべての版について、各章のテンプレートページのチェックをまとめたものです。スペイン語・英語・カタルーニャ語のバンドルなら、そのうち一つを表示していても三つの版すべてを確認します。表示していない版はバックグラウンドで組版し、開いたときと同じように読み込みます。編集した版はその下書きを、それ以外はバンドルのその言語のテキストを使います。操作部の下の一行に、組版中の版と、すべて終わったあとは確認済みの版が表示されます。

このセクションに並ぶもの：

- **枠に収まらないテキスト**（`frameOverflow`）。収めるための手順で試したことと、枠に収まるようにする変更を添えて示します。
- **追加したページでも収まらないテキスト**（`frameContinuationLimit`）。枠の内容が、テンプレートページが追加できる上限のページまで続いても収まりません。
- **記事の続き先のページが後ろにありません**（`continueTargetMissing`）。枠の`continueIn`が指すidを持つページフェンスが、後ろにありません。
- **存在しないアンカーのラベル**と**ラベルのないアンカー**（`labelAnchorUnknown`、`anchorUnlabelled`）。図を組んでいる枠の項目として示します。
- **ラベルが幅に収まっていません**と**ラベル同士が重なっています**（`labelOverflow`、`labelOverlap`）。同じ枠の項目として示します。ラベルは版ごとにその版の言葉で測るので、語の長い言語では、ほかの言語で収まる場所で溢れることがあります。
- **枠のないスロット**、**空の枠**、**不明なページテンプレート**、**コロン3つのテンプレートページ**、**見開きの指定がテンプレートと一致しません**（`slotUnknown`、`slotEmpty`、`templateUnknown`、`pageFenceLength`、`spreadMismatch`）。
- **段をまたいで分かれた目次のまとまり**（`tocGroupSplit`）。
- ページテンプレート自体の警告（存在しない枠のスタイルやアンカー、矛盾する寸法、循環するチェーン）と、本の内容を抱えたデザインのテキスト（`contentInConfig`）。

これらの項目は、下のグループには重ねて表示しません。

**ページ**・**枠**・**言語**で、テンプレートページごと（各版で番号が違っても同じページ）、枠ごと、版ごとにまとめます。その下の三つのメニューで、言語・ページ・枠を一つに絞れます。各項目には版の略号（*CA*）、その版でのページ番号、枠の名前が付きます。

項目をクリックすると、その版のその枠へ移動します。別の版を表示していれば本がその言語に切り替わり、章とページが開いて、ページ上で枠が選択されて（プレビュー下部のパスにその位置が表示されます）、**本文**パネルではカーソルがそのスロットの先頭に置かれます。テンプレート自体の警告は、そのテンプレートで組んだ最初のページを開いて枠を選択します。内容を抱えたデザインのテキストは**デザイン**パネルを開きます。

複数の言語を収めたバンドルから読み込んだローカルのプロジェクトは、すべての言語を保持します。そのため合成ページは、サンプルの本と同じようにどの言語でも確認でき、別の言語の項目を選ぶと、プロジェクトをその言語に切り替えて該当箇所を開きます。言語が一つの本は版も一つで、操作部の下の一行にそう表示されます。アクティビティバーのバッジが数えるのは、表示中の版の表示中の章の警告です。大きな本は依頼があるまで待ちます。章数に版の数を掛けた値が48を超えると、パネルは画面に表示中の章だけを確認し、**すべての版を確認**を出します。これを押すと残りがバックグラウンドで組まれます（postext 1.40以降）。`sandbox_get_composed_checks`ツール（[WebMCP](https://postext.dev/ja/docs/webmcp.md)を参照）は、パネルを開かずに全版の組ページの確認結果を一覧にします。

## テキストをMarkdownへ移す

テンプレートページより前に作られた本は、ページ全体のテキストを見出しスタイルに持っていることがあります。各ページに隠れた見出しがあり、その柱が何十ものテキスト要素、箱、画像を印刷されたページと同じ位置に置く作りです。このとき検査パネルには*設定内に置かれた本文*が並び、上部に**テキストをMarkdownへ移す**が出ます。そうした本を本のパネルから読み込むと、読み込みの直後に同じダイアログが開きます。

ダイアログは、何かを変える前に、移すと何が起きるかを示します。

- 各ページのデザインはページテンプレート（`pageTemplates`）になります。各テキストは元の位置で枠になり、同じ見た目のテキストが同じ間隔で上下に並んでいれば一つの枠にまとまります。箱、罫線、画像はテンプレートの装飾になり、柱と同じくページの本文の上に描かれます。ページ全体を覆う画像はページの `background` 属性になり、装飾がそれを読みます（`{attr.background}`）。
- 章の各ページはテンプレートページ `::::page{template="…"}` になり、ページの見出しと本文、枠ごとの `:::frame{slot="…"}` とそのテキストが入ります。太字と斜体は残り、デザインの行末は強制改行として残ります。
- 各テキストの書体、サイズ、ウェイト、色、揃え、行送りは段落スタイルになります。本に完全に一致するものがあればそれを使い、なければ書体とサイズの名前で新しく作ります。太字の下の色付きの箱は、本にあるその色のチップスタイル、なければ新しいチップスタイルのチップになります。
- 枠が同じ位置にあるページは一つのテンプレート（`page-base`）を共有し、各ページのテンプレートがそれを拡張します（`extends`）。何も足さないページはそのまま使います。
- 柱がなくなって同じになった見出しスタイルはまとめられ（`tema--p04`、`tema--p05` → `tema`）、見出しの指定も書き換わります。柱を切り替えるためだけの隠れた見出しは消えます。偶数ページや奇数ページを指定する見出しで始まっていたページには、フェンスの前に `:::pagebreak{parity="…"}` が入ります。

**変わること**の数字は、移すテキストと文字の数、書き出すページ、提案するテンプレート、前後の見出しスタイル数、新しいスタイル、設定のサイズ、*設定内に置かれた本文*の警告数（前後）です。

**移す前と後**は、Sandbox自身の組版で各章を二度組み、変わるページを古いものと新しいものの並びで描きます。横のリストには、見た目が変わるページとその理由（わかる場合）が出ます。テキスト自身の箱・輪郭線・ドロップキャップ、左右のわからないページ、テンプレートの流し込み枠で組まれるようになった本文などです。**変わった部分を赤で示す**は、違うピクセルを赤く塗ります。

オプションは、**同じ位置に枠があるページはテンプレートを共有する**、**太字の下のハイライトの箱をチップにする**、そして該当するものがあるときの**どの見出しも使っていない、テキストを含む見出しスタイルを削除する**です。

**画像の上の語をその画像のラベルにする**は、デザインが本の画像の上に短い語（地図の地名、図解の数字など）を置いているときに出ます。これを選ぶと、その語は `:::figure` の `::label` 行になり、画像は専用の枠を持ち、画像のリソースにアンカーが書き込まれます。要約には、ラベル、画像、アンカー、ラベルスタイルの数が出ます。いちばん変わるページなので、オンにするまではオフです。ラベルは本のフォントで組み直されるため、元のページと見比べてください。アンカーは画像のリソースに 1 件ずつ取り消しの 1 ステップとして書かれ、本文とデザインの間に入ります。**元に戻す**と**本を元の状態に戻す**でも戻ります。

**テキストを移す**は、変更を本の取り消し履歴に書き込みます。書き換えた章ごとに一手、そのあとデザインに一手です。Cmd/Ctrl+Zはまずデザインを、次に章を戻し、ダイアログの**元に戻す**は、それらが最新である間はまとめて戻します。移す前の本も、再読み込みしても、検査パネルで**変更を確定する**を選ぶまで保存されています。それまでは**本を元の状態に戻す**が以前のデザインとテキストを書き戻し、その操作もまた取り消せます。

設定に残り、**設定に残るもの**に並ぶのは、言葉とプレースホルダーが混ざったテキスト（`{pageNumber}ページ`）、柱自身の箱や別の要素に付いたテキスト、見出しのデザインのテキスト（ページではないもの）です。枠に入った見出しは、そこでもデザインを保ちます（箱付き見出しのタブ、見出しの周りに描く帯。[囲みと枠の中の見出し](https://postext.dev/ja/docs/configuration-headings.md#囲みと枠の中の見出し)を参照）。コントラストの検査は枠のテキストを、その枠自身の箱か、下にある装飾の箱の上のものとして読むので、色付きの箱の上の白いラベルはその色で測ります（[検査する文字と地](https://postext.dev/ja/docs/configuration-fonts-colors-viewers.md#検査する文字と地)を参照）。

同じ移行はエンジンの関数 `moveTextToMarkdown({ config, chapters, metadata }, options)` でもあり、新しい設定、章、ダイアログが示すレポートを返します。[テンプレートページ](https://postext.dev/ja/docs/composed-pages.md#スタイルにテキストを持つ本の移行)も参照してください。

## ワンクリックで枠を直す

*枠に収まらないテキスト*の下には、再配置の段階がその枠のために計算した解決策が、警告と同じ言葉のボタンとして並びます。

- *文字を60 %まで縮められるようにする*は枠の`fit.minScale`を設定します（`fit.shrinkText`がオフならオンにします）。
- *maxHeightを66mmに上げる*はその`maxHeight`を設定します。
- *…のminHeightを…に下げる*は同じグループの別の枠の最小の高さを下げます。
- *次のページへ続ける*は`overflow.continueIn`を`next-page`にし、収まらない部分がこのページの後に追加されるページへ続くようにします。
- *このページをテンプレート…で組む*は本文中のこのページの`::::page`フェンスの`template`を書き換えます。
- *約626文字削る*は何も変えません。**本文**パネルでその枠の文字を選択し、何文字削ればよいかを示します。

それ以外のボタンは本の形を変えるので、実行の前に、変更する設定と値（*tema-fija › dinero › maxHeight = 66 mm*）またはページが使うテンプレートを示して確認します。デザインの変更は、そのテンプレートで組んだすべてのページに及びます。**変更する**を押すと、変更は取り消し履歴の1ステップとして行われ、Cmd/Ctrl+Z、または「内容」と「デザイン」の横にある取り消しボタンで元に戻せます。ページは組み直され、警告は消えるか、変更の結果として残った問題（下のほうの囲みが収まらなくなったなど）に置き換わります。

同じボタンは、キャンバスの**動いたものとその理由**パネルでもその枠の下に並びます。画面に出ていない版の警告では、その版を開くボタンが代わりに表示され、その版で解決策を適用できます。組版が解決策を提案した後に本が変わった場合（テンプレートが編集された、フェンスが別のテンプレートを指している）、ボタンはそのことを伝え、何も変えません。エージェントは`sandbox_apply_proposal`で同じ解決策を適用できます（[WebMCP](https://postext.dev/ja/docs/webmcp.md)）。
