# Ohyna — llms-full > 生成オリジン: https://ohyna.onrender.com 以下は画面ヘルプ(カタログ掲載)の本文連結です。 # はじめに Source: https://ohyna.onrender.com/docs/manual/01-intro.md # はじめに **Ohyna**(Open Hybrid Note App)は、Ohyna Markdown の文書を PDF にするオープンソースです。ブラウザで編集し、プレビューで体裁を確かめてから PDF を保存します。 --- ## 1. 機能 | 用途 | 内容 | |------|------| | 文書の編集 | Markdown 本文とドキュメント設定(表紙・色・フォントなど)を編集する | | ファイル操作 | 開く・保存・名前を付けて保存 | | 内容の検査 | 問題があるあいだはプレビュー更新と PDF 作成を止める | | プレビュー | 用紙イメージで体裁・図・数式を確認する | | PDF の作成 | 検査を通過した文書から PDF を生成し、確認のうえ保存する | 扱う単位は **1 つの Markdown 文書から 1 つの PDF** です。 --- ## 2. 成果物の位置づけ | 成果物 | 位置づけ | |--------|----------| | 画面のプレビュー | 編集中の確認用。ページ区切りは近似 | | PDF | 配布・印刷の基準。最終確認は PDF 確認画面で行う | 本文の解釈、表紙の文言、色テーマ、フォント、数式、図のソースはプレビューと PDF で共通です。ページ割の確定は PDF で行います。 --- ## 3. 標準の作業手順 1. **作成または開く** — 無題の新規文書/サンプルから始めるか、既存ファイルを開く 2. **ドキュメント設定** — タイトルや色などを変更し、「適用」する 3. **本文を書く** — Markdown で編集する 4. **保存** — 「保存」または「名前を付けて保存…」でディスクへ書き込む 5. **検査を確認** — コンソールが「✔ Markdown」「✔ プレビュー」であること(注意のみの場合は警告表示) 6. **プレビュー** — 右ペインで体裁を確認する 7. **PDFを作成** — 確認画面で内容を見て「PDFを保存」または「印刷」する 8. **閉じる** — 「閉じる」で空の無題に戻る(ディスク上のファイルはそのまま) 「適用」は文書先頭の設定ブロックへの反映、「保存」はディスクへの書き込みです。 --- ## 4. プロジェクト | 内容 | リンク | |------|--------| | ソースコード | [GitHub — GawaDev/ohyna](https://github.com/GawaDev/ohyna) | | 公開デモ | [ohyna.onrender.com](https://ohyna.onrender.com/) | | Issue | [Issues](https://github.com/GawaDev/ohyna/issues) | | 案内 | [プロジェクトについて](./07-about.md) | --- ## 5. 利用上の前提 - 組織のサーバまたは公開デモを、ブラウザから利用します。 - 説明は画面ヘルプに掲載された内容です。 - 編集・プレビュー・PDF 作成のため、入力は接続先サービスへ送られます。秘密情報は入力しないでください。 - 保存・共有・保持期間は、サービス提供者の案内に従います。 - 不具合・改善は [GitHub Issues](https://github.com/GawaDev/ohyna/issues)、運用環境のことはサービス提供者へ。 - 受け取った Markdown は、開く前に内容を確認してください。 --- # 画面とファイル操作 Source: https://ohyna.onrender.com/docs/manual/02-ui-and-files.md # 画面とファイル操作 --- ## 1. 画面の構成 | 領域 | 役割 | |------|------| | ヘッダ左 | 製品名、現在のドキュメント名(未保存のときは先頭に「●」) | | ヘッダ中央〜右寄り | 表示の明るさ、ヘルプ(マニュアル/仕様書/ライセンス) | | ヘッダ右 | ファイルメニュー、プレビューを更新、PDFを作成 | | 編集 | Markdown 編集、編集ツールバー(本文の波線)、ドキュメント設定ボタン | | プレビュー | 用紙サイズに合わせたプレビュー(拡大縮小・別ウィンドウ) | | コンソール | 検査・プレビューの現在状態と、問題一覧/出力 | | モーダル | ドキュメント設定、PDF 確認、未保存の確認、ヘルプ | 広い画面では編集とプレビューを左右(または上下)に並べ、コンソールを下部に置きます。境目や角をドラッグして幅・高さを変えられます。画面が狭いときは、上部のタブで「編集」「プレビュー」「コンソール」を切り替えます。 短いお知らせは画面上部中央から表示されます。エラーや注意の詳細はコンソールの「出力」に残ります。 ### 1.1 起動時に開くドキュメント | 状況 | 起動時の内容 | |------|----------------| | 初めて使う(まだ一度も開く・保存・新規をしていない) | 記法の説明用サンプル | | 前回、ファイルを開いた/保存した(対応ブラウザ) | そのファイル(続きから編集) | | 前回のファイルの権限がまだ無い | 空の無題で開始。「前回のファイルを開く」を押して許可する(起動だけでは権限を求めない) | | 前回のファイルが削除・移動されている | 空の無題。短い通知が出る | | 前回「新規」のまま終了したなど | 空の無題 | 起動のたびにファイル選択画面は出ません。開くときはメニューの「開く…」を使います。 ### 1.2 コンソール 広い画面では編集領域との境界をドラッグして高さを変えられます。折りたたみ中でも、次の現在状態が常に見えます。狭い画面では「コンソール」タブを開くと、同じ内容が画面いっぱいに表示されます。 | 表示 | 意味 | |------|------| | ✔ Markdown / ✖ Markdown など | 左のアイコンが検査結果(✔問題なし/⚠注意/✖問題/…)。クリックで「問題」一覧 | | ✔ プレビュー / ⚠ プレビュー など | 左のアイコンがプレビュー状態(✔最新/⚠未更新/✖エラー/…)。ホバーで詳細 | | 最新のメッセージ(折りたたみ時) | 「出力」の先頭行。クリックで「出力」を開く | | ウィンドウアイコン | コンソールだけを別ウィンドウへ外だし(戻す/前面へも可) | パネル内は次のタブに分かれます。 | タブ | 内容 | |------|------| | 問題 | 検査結果の一覧(「12行目: …」)。行をクリックするとその場所へ移動 | | 出力 | 保存やエラーなどの履歴(区分・見出し・詳細・時刻) | 「出力」の件数バッジはエラー(赤)と注意(橙)です。ゴミ箱アイコンで履歴だけ消えます(検査・プレビューの状態表示は消えません)。外だし中も履歴はメインウィンドウと同期します。 ドキュメント名が表示されていないときは「無題」です。一度も保存していない新規編集も「無題」と表示されます。 --- ## 2. ファイルメニュー ヘッダのフォルダアイコンから、ドキュメントの作成・読み込み・書き込み・終了ができます。 | 区分 | メニュー | ショートカット(Windows) | ショートカット(macOS) | 動作 | |------|----------|---------------------------|-------------------------|------| | 作成 | 空のドキュメント | — | — | 必須設定入りの無題ドキュメントを作成する(検査エラーにならない状態) | | 作成 | サンプルから作成 | — | — | 記法説明用サンプルで新規作成する | | 読み込み | 開く… | Ctrl+O | ⌘+O | ファイルを選んで開く。ドラッグ&ドロップでも同じ | | 書き込み | 保存 | Ctrl+S | ⌘+S | いまのファイルへ上書きする。場所が無いときは「名前を付けて保存…」と同じ | | 書き込み | 名前を付けて保存… | Ctrl+Shift+S | ⌘+Shift+S | 保存先とファイル名を指定して書き込む | | 終了 | 閉じる | — | — | 編集を終え、空の無題ドキュメントに戻す | 対応ブラウザでは、OS 標準のファイルダイアログでディスク上のファイルを直接読み書きします。ブラウザがこの方式に対応していない場合も、同じメニュー名で保存操作ができます。前回ファイルの自動復元は、この直接読み書きに対応したブラウザで有効です。 ### 2.1 操作の流れ ```text 作成(空/サンプル) ──┐ 開く/ドロップ ────────┼─→ 編集 ─→ 保存/名前を付けて保存 閉じる ────────────────┘ └─→ PDFを作成(別操作) ``` - **作成**: いまの編集を終えて新しいドキュメントにする - **読み込み**: ディスク上の Markdown を編集対象にする - **書き込み**: 編集中の全文をファイルへ残す - **閉じる**: ファイルとの関連を外し、空の無題に戻す(ディスク上のファイルは削除しない) 未保存の変更がある状態で作成・読み込み・閉じるを行うと、次の確認が出ます。 | 選択 | 動作 | |------|------| | 保存 | いまの内容を保存してから、選んだ操作を続ける | | 保存しない | 変更を捨てて、選んだ操作を続ける | | キャンセル | 何もせず編集に戻る | 「開く…」は、先にファイル選択を出してから未保存確認します(ブラウザの制約のため)。キャンセルすると選択したファイルは開きません。 ### 2.2 未保存の見え方 | 状況 | 動作 | |------|------| | 内容が最後の保存時と異なる | ドキュメント名が琥珀色のチップになり「未保存」と点で示される。ヘッダ下線とファイルボタンも同色になる。ウィンドウタイトル先頭に「●」が付く | | 未保存のままブラウザのタブやウィンドウを閉じる | ブラウザ標準の離脱確認が出ることがある | ### 2.3 「適用」と「保存」の違い | 操作 | 何が変わるか | |------|----------------| | ドキュメント設定の「適用」 | 編集中のドキュメント先頭にある設定ブロック(`ohyna:`)を更新する。ディスクには書かない | | ファイルの「保存」 | 編集中の全文(設定ブロックと本文)をファイルへ書き込む | 設定を変えたあとは「保存」でファイルへ反映します。 --- ## 3. 編集ツールバーとショートカット 左ペイン上部のツールバーから、強調・見出し・リスト・リンク・数式・コード・表・折りたたみ・キーボードキー表記などを挿入できます。 | 操作 | Windows | macOS | |------|---------|-------| | 太字 | Ctrl+B | ⌘+B | | 斜体 | Ctrl+I | ⌘+I | | 打消し | Ctrl+Shift+X | ⌘+Shift+X | | インラインコード | Ctrl+E | ⌘+E | | リンク | Ctrl+K | ⌘+K | | インライン数式 | Ctrl+Shift+M | ⌘+Shift+M | | 見出し 1〜6 | Ctrl+Alt+1〜6 | ⌘+⌥+1〜6 | | 箇条書き | Ctrl+Shift+8 | ⌘+Shift+8 | | 番号付きリスト | Ctrl+Shift+7 | ⌘+Shift+7 | | タスクリスト | Ctrl+Shift+9 | ⌘+Shift+9 | | 引用 | Ctrl+Shift+. | ⌘+Shift+. | | 整形(行末空白の整理など) | Ctrl+Shift+L | ⌘+Shift+L | 画面上のツールチップは、いまの OS に合わせて Ctrl または ⌘ で表示されます。 --- ## 4. ドキュメント設定を開く 左ペインの「ドキュメント設定」から、表紙・色テーマ・フォントなどを編集します。必須はタイトル・色テーマ・フォント・言語の 4 つです。揃うとプレビューの更新と PDF 作成が使えます。色テーマは表紙だけでなく見出し帯・表・図にも効きます。各項目の選択肢と表紙の配置は「ドキュメント設定」の章にあります。 「空のドキュメント」や「閉じる」で始まる無題には、あらかじめ必須 4 項目(タイトル「無題」・色テーマ・フォント・言語)が入っています。設定画面は自動では開きません。設定が足りないときはコンソールの「問題」と「出力」に出ます(「PDFを作成」や保存を実行したときも同様)。直すときは「ドキュメント設定」を開きます。 --- ## 5. プレビューの基本操作 | 操作 | Windows | macOS | |------|---------|-------| | 拡大・縮小 | Ctrl+マウスホイール、またはズームボタン | ⌘+マウスホイール、またはズームボタン | | 表示位置の移動 | マウス中ボタンのドラッグ | 同左 | | 用紙への合わせ込み | プレビューツールバーの「全体に収める/幅に合わせる/高さに合わせる」 | 同左 | | 別ウィンドウ | プレビュー領域のウィンドウアイコン。子ウィンドウはプレビューのみ、メインウィンドウはエディタ全幅 | 同左 | プレビューは成果物の見た目確認用です。使える操作は表示倍率・スクロール・用紙への合わせ込みです。折りたたみは常に展開表示、タスクの完了状態とリンク先は Markdown 上の記述どおりに表示されます。 問題を直すとプレビューの更新と PDF 作成が使えます。PDF はヘッダの「PDFを作成」で作り、確認画面の「PDFを保存」でファイルへ書き込みます。詳しい手順は「確認と PDF 出力」の章にあります。 --- # ドキュメント設定 Source: https://ohyna.onrender.com/docs/manual/03-settings.md # ドキュメント設定 ドキュメントの表紙・色・フォントなどは「ドキュメント設定」画面で編集します。適用すると、ドキュメント先頭の設定ブロック(YAML の `ohyna:`)に書き戻されます。ディスクへの保存はファイルメニューの「保存」で行います。 色テーマは表紙だけでなく、見出しの帯、表のヘッダ、図(Mermaid)のアクセント色など、ドキュメント全体に効きます。 --- ## 1. 必須項目 次の 4 つが揃うと、プレビュー更新と PDF 作成が使えます。 | 項目 | YAML 名 | 説明 | |------|---------|------| | タイトル | `title` | 表紙中央の主見出し。ページタイトルにも使います | | 色テーマ | `style` | ドキュメント全体の色(後述の一覧) | | フォント | `font`(または `fontFamily`) | 本文のフォントプリセット | | 言語 | `lang` | 例: `ja`、`en` | --- ## 2. 色・言語 ### 2.1 色テーマ(`style`) 次のいずれかを選びます。表紙の背景色、見出し帯、表ヘッダ、Mermaid ダイアグラムの色に使われます。 | 表示名 | 値 | |--------|-----| | 縹(はなだ/青) | `blue` | | 空色(そらいろ/水色) | `sky` | | 藍(あい/紺) | `indigo` | | 青磁(せいじ/青緑) | `celadon` | | 常磐(ときわ/緑) | `forest` | | 山吹(やまぶき/黄) | `yellow` | | 琥珀(こはく/黄茶) | `default` | | 金色(こんじき/金) | `gold` | | 柑子(こうじ/オレンジ) | `orange` | | 桜(さくら/ピンク) | `sakura` | | 朱(あけ/赤) | `red` | | 蘇芳(すおう/赤紫) | `wine` | | 藤(ふじ/紫) | `purple` | | 焦茶(こげちゃ/茶) | `brown` | | 銀鼠(ぎんねず/灰色) | `neutral` | | 墨色(すみいろ/黒) | `dark` | ### 2.2 言語(`lang`) 例: `ja`、`en`、`ja-JP`。 本文フォントは「フォント・体裁」で指定します。 --- ## 3. 表紙 ### 3.1 表紙の配置 表紙を付ける場合、用紙上の配置は次のとおりです(上から下へ)。 | 要素 | 設定項目 | 位置 | |------|----------|------| | ラベル | `label` | 上部の小さな枠(番号・区分など) | | タイトル | `title` | 中央の大きな見出し | | サブタイトル | `subtitle` | タイトル直下の副題 | | 表紙フッタ | `meta`(複数行可) | ページ下端(発行元・日付など) | | 著者/版/日付 | `author` / `version` / `date` | メタ。`meta` が空のときは表紙フッタへ自動流し込み。ヘッダ/フッタの定型にも使える | 「表紙を付ける」をオンにすると、PDF の先頭に表紙ページが付きます。 ### 3.2 表紙デザイン(`coverPattern`) 色テーマごとに用意された背景デザインを選びます。 | 表示名 | 値 | 表示名 | 値 | |--------|-----|--------|-----| | 霞 | `noise` | 砂子 | `grainy` | | 極光 | `aurora` | 彩雲 | `mesh` | | 無地 | `solid` | 斜影 | `diagonal` | | 横霞 | `horizontal` | 縦霞 | `vertical` | | 円暈 | `radial` | 二面 | `split` | | 帯 | `band` | 隅取り | `corner` | | 側帯 | `ribbon` | 脇板 | `panel` | | 額縁 | `frame` | 中暈 | `glow` | | 黄昏 | `dusk` | 薄霧 | `mist` | | 地平 | `horizon` | 縦縞 | `stripe` | | 点描 | `dots` | 方眼 | `grid` | | 矢筈 | `chevron` | 菱 | `diamond` | | 亀甲 | `hex` | 鱗 | `triangle` | | 市松 | `checker` | 杉綾 | `herringbone` | | 升目 | `isometric` | 組子 | `lattice` | | 寄木 | `mosaic` | 切子 | `blades` | | 日輪 | `sunburst` | 渦 | `spiral` | | 周回 | `orbit` | 同心円 | `circles` | | 波 | `wave` | 連波 | `waves` | | 細波 | `ripples` | 波縁 | `scallop` | | 連山 | `mountains` | 円弧 | `arcs` | | 稲妻 | `zigzag` | | | 一覧はドキュメント設定画面の「表紙デザイン」でも同じ名称で選べます。 --- ## 4. フォント・体裁 ### 4.1 本文フォント(`font`) 組み合わせ(和文/欧文の優先ファミリー)を選びます。画面にはファミリー名と見本だけ出ます。 | 値 | 和文(優先) | 欧文(優先) | |----|--------------|--------------| | `noto` | Noto Sans JP | Segoe UI | | `gothic` | 游ゴシック/ヒラギノ角ゴ/Noto Sans JP | Segoe UI | | `mincho` | Noto Serif JP/游明朝/ヒラギノ明朝 | 同左 | | `sans` | Noto Sans JP | Segoe UI/system-ui | | `serif` | Noto Serif JP | Georgia/Times New Roman | | `inter` | Noto Sans JP | Inter | | `mono` | IBM Plex Mono | IBM Plex Mono | 「カスタム」に値を入れると、上の選択より優先されます。 ### 4.2 コードフォント(`fontMono`) インラインコード、コードブロック、図のソース表示に使います。本文フォントとは独立です。 | 画面上の選択 | 実際のフォント(要約) | |--------------|------------------------| | Cascadia / Consolas(既定) | Cascadia Mono → Consolas → Courier New | | IBM Plex Mono | IBM Plex Mono を優先 | | Consolas | Consolas → Courier New | | カスタム | 入力した CSS の `font-family` | ### 4.3 その他の体裁 | 項目 | 説明 | 既定の目安 | |------|------|------------| | 用途プリセット | 標準/報告書/スライド資料寄り(サイズ・行間・字間を一括) | (任意) | | 文字サイズ | 本文の基本サイズ(例: `10.5pt`) | `10.5pt` | | 行間 | 倍率(例: `1.7`) | `1.7` | | 字間 | CSS `letter-spacing`(例: `0` / `0.02em`) | `0` | | 角丸 | コードブロックや表などの角 | オン、サイズ「中」 | | 見出し帯背景 | 第 2 水準見出しに色テーマの帯を付ける | オン | | 表ヘッダ塗りつぶし | 表のヘッダ行を色テーマの濃色で塗る | オン | | リンク下線 | `linkUnderline` | オフ | | リンク色をテーマに | `linkThemeColor`(オフなら本文色) | オン | --- ## 5. 用紙・余白 | 項目 | キー | 値の例 | |------|------|--------| | 用紙サイズ | `pageSize` | `a4`(既定)/ `a5` / `b5` / `letter` | | 向き | `pageOrientation` | `portrait`(既定)/ `landscape` | | 余白 | `marginPreset` | `narrow` / `normal`(既定)/ `wide` / `custom` | | 余白 mm | `marginTop` など | `custom` のときのみ(単位なし数値=mm) | プレビューの用紙サイズと PDF の紙面は連動します。 --- ## 6. ページ・コード ### 6.1 本文ヘッダ/フッタ 表紙フッタ(`meta`)とは別枠です。本文ページの上下に出す文言を選びます。 | 項目 | キー | 定型 | |------|------|------| | ヘッダ | `pageHeader` | なし/文書名/著者/日付/版/社外秘/カスタム | | フッタ | `pageFooter` | なし/ページ番号/文書名/文書名+ページ番号/日付/著者/社外秘/カスタム | 既定はどちらも「なし」。PDF では全ページ(表紙含む)に出ます。プレビューでは本文ページに出ます。 ### 6.2 目次 | 項目 | キー | 説明 | |------|------|------| | 自動目次 | `toc` | オンで本文に `[TOC]` が無いとき先頭へ挿入 | | 深さ | `tocDepth` | `2`(H2 まで)または `3`(H3 まで、既定) | 手書きの `[TOC]` もそのまま使えます(深さ設定は効きます)。目次は**前後とも改ページ**され、プレビュー/PDF とも専用ページ(長いときは複数頁)になります。 ### 6.3 コードブロック | 項目 | キー | 既定 | |------|------|------| | 行番号 | `codeLineNumbers` | オフ | | 折り返し | `codeWrap` | オフ(横スクロール) | | 文字サイズ | `codeFontSize` | 空=本文連動(約 0.92em) | ### 6.4 透かし | 項目 | キー | 値 | |------|------|-----| | 種類 | `watermark` | `none` / `draft` / `confidential` / `custom` | | 文言 | `watermarkText` | `custom` のとき | --- ## 7. ドキュメント先頭に書き込まれる形 「適用」後、ドキュメントの先頭は次のような形になります(例)。 ```yaml --- ohyna: title: ドキュメントタイトル style: blue font: noto lang: ja cover: true subtitle: 副題 label: DOC meta: - 発行元 - 2026-07 --- ``` 規則の要点: - 設定は必ず `ohyna:` の下に置きます。 - キー名は camelCase です(例: `coverPattern`、`fontSize`)。 - このブロックのあとに、通常の Markdown 本文が続きます。 通常はドキュメント設定画面から編集すれば足り、手編集は不要です。 --- # 本文の書き方 Source: https://ohyna.onrender.com/docs/manual/04-writing.md # 本文の書き方 プレビューと PDF の両方で同じ規則で解釈される記法です。ドキュメント形式は **Ohyna Markdown** です。 --- ## 1. インラインの装飾 | 要素 | 書き方 | |------|--------| | 斜体 | `*文字列*` または `_文字列_` | | 太字 | `**文字列**` | | 太字かつ斜体 | `***文字列***` | | 打消し線 | `~~文字列~~` | | ハイライト | `==文字列==` | | 下線(挿入) | `^^文字列^^` | | インラインコード | バッククォート 1 つで囲む | | キーボードキー | `Ctrl` | | 自動リンク | `` | | 強制改行 | 行末に半角スペースを 2 つ置く | キーボードキーは挿入メニューの「キー(kbd)」でも囲めます。プレビューと PDF ではキーらしい体裁で表示されます。 例: ```markdown 保存は Ctrl+S です。 ``` --- ## 2. 見出し ```markdown # 第1水準 ## 第2水準 ### 第3水準 ``` `#` の直後には空白が必要です。見出し本文が空だと検査で問題になります。第 6 水準まで使えます。 --- ## 3. 段落・引用・水平線 ```markdown 段落の本文です。空行で段落を分けます。 > 引用です。 --- ``` --- ## 4. リスト ```markdown - 箇条書き - 入れ子 1. 番号付き 2. 続き - [ ] 未完了のタスク - [x] 完了したタスク ``` 完了/未完了は Markdown 上の `[x]` / `[ ]` で表します。プレビューではその見た目を表示します。 --- ## 5. リンクと画像 ```markdown [表示名](https://example.com "タイトル") ![代替テキスト](https://example.com/image.png) ``` 画像の参照は `https:` / `http:` / `data:` の URL を使います。リンク先と画像パスは空にせず書いてください。 --- ## 6. 表 ```markdown | 左寄せ | 中央揃え | 右寄せ | |:-------|:--------:|-------:| | a | b | c | ``` セル内では強調やインラインコードも使えます。 --- ## 7. コードとシンタックスハイライト ### 7.1 フェンス付きコード 言語名を付けたコードブロックは、成果物で色分けされます。 ````markdown ```python def greet(name: str) -> str: return f"hello, {name}" ``` ```` 検査では、指定した言語名が解釈できるか確認します。言語名を省略したブロックはプレーンなコードとして出ます。 よく使う言語名の例: | 指定 | 内容 | |------|------| | `python` / `py` | Python | | `javascript` / `js` / `mjs` / `cjs` | JavaScript | | `typescript` / `ts` | TypeScript | | `php` | PHP | | `json` | JSON(内容の構文も検査) | | `yaml` / `yml` | YAML(内容の構文も検査) | | `bash` / `sh` / `shell` / `zsh` | シェル | | `powershell` / `ps1` / `pwsh` | PowerShell | | `html` / `css` / `sql` / `go` / `rust` / `java` / `csharp` / `c` / `cpp` / `ruby` など | 各言語 | | `text` / `txt` / `plain` | プレーンテキスト | | `console` | コンソール出力向け | ### 7.2 図・数式・Mermaid コード用のフェンス | 書き方 | 処理 | |--------|------| | `` ```mermaid `` | 図として描画(「Mermaid ダイアグラム」) | | `` ```mermaid code `` | Mermaid の色分け付き**コード**(図にしない) | | `` ```math `` 等 | ディスプレイ数式(「数式」)。編集画面でも TeX 色分け | ### 7.3 編集画面の色分け | 対象 | 編集画面 | プレビュー/PDF | |------|----------|-----------------| | 見出し・強調・打消し・リンク・リスト・引用 | 色分けあり | 組版結果 | | `==ハイライト==` / `^^挿入^^` | 色分けあり | 成果物の mark/下線 | | `$…$` / `$$…$$` / `\(...\)` / `\[…\]` | 数式用色分け | KaTeX 描画 | | 数式フェンス(`math` 等) | TeX 色分け | KaTeX 描画 | | `` ```mermaid `` / `` ```mermaid code `` | Mermaid 色分け | 図/コード HTML | | 上記のよく使う言語フェンス | 対応言語で色分け | Pygments | | 言語名なしのフェンス | プレーン | プレーン | 最終的な見た目はプレビューと PDF で確認してください。 --- ## 8. 数式 | 種類 | 書き方 | |------|--------| | インライン | `$E = mc^2$` または `\(E = mc^2\)` | | ディスプレイ | `$$ ... $$` または `\[ ... \]` | | フェンス | 言語名 `math`(または `latex` / `katex` / `tex` / `stex`)のコードフェンス | コードブロック内の `$` は通常の文字として扱います。数式は区切りを対応させ、解釈できる書き方にしてください。 --- ## 9. Mermaid ダイアグラムとコード ### 9.1 図として描画 フェンスの言語名を **`mermaid`** にします。 ````markdown ```mermaid flowchart LR 開始 --> 処理 --> 終了 ``` ```` プレビューではブラウザ上で、PDF ではサーバ上で描画します。図の描画に失敗した箇所は赤い枠で示され、通知も出ます。 ### 9.2 コードとして掲載(色分けあり) ソースを図にせず、Mermaid として色分けしたコードブロックにするときは **`mermaid code`** と書きます。 ````markdown ```mermaid code flowchart LR 開始 --> 処理 --> 終了 ``` ```` 意図的に壊した例を載せるときは `text` を使います。 --- ## 10. 折りたたみ ```markdown ??? note "補足" ここに補足事項を記載します。 ``` プレビューと PDF では常に展開して表示します。 --- ## 11. 脚注 ```markdown 本文に注釈を付します[^1]。 [^1]: 注釈の内容です。 ``` --- ## 12. その他 | 機能 | 書き方の例 | |------|------------| | 定義リスト | 用語の次の行に `: 説明` | | 略語 | `*[HTML]: HyperText Markup Language` | | 注意書き(アドモニション) | `!!! note "タイトル"` のあとインデントした本文 | | 目次 | `[TOC]`(前後改ページ。リーダーとページ番号付き) | 本文中に直接書ける HTML は、許可されたタグ・属性に限られます。代表例は `a`、`img`、`table` 系、`kbd`、`details` / `summary`、見出し、リストなどです。 --- ## 13. 初期サンプル **初めて**アプリを開いたときだけ、上記の記法・コード・数式・図の例を含むサンプルが表示されます。2 回目以降は、前回開いた/保存したファイル(または空の新規)から始まります。 いつでもファイルメニューの「サンプルから作成」で同じサンプルを新規ドキュメントとして開けます。「空のドキュメント」は必須設定入りの無題(タイトル「無題」)から始めます。 サンプルを書き換えて使い始めて構いません。編集後は「保存」でファイルへ書き込んでください。 --- # 確認と PDF 出力 Source: https://ohyna.onrender.com/docs/manual/05-preview-and-pdf.md # 確認と PDF 出力 --- ## 1. 内容の検査 編集を少し止めると(おおよそ 0.5 秒)、内容が自動で検査されます。結果は次の場所に出ます。 | 場所 | 内容 | |------|------| | コンソール | 「✔ Markdown」など。アイコンが結果を表す。クリックで「問題」タブ(狭い画面では画面上部の「コンソール」タブ) | | 「問題」タブ | 各行は「12行目: メッセージ」の形。行をクリックするとその場所へ移動 | | エディタ本文 | 該当行の波線と、行番号横の印。ホバーでメッセージ。F8 で次の問題へ | | 「出力」タブ | 問題があるあいだ「問題 N 件のためプレビューを更新できません」など。詳細に同じ「N行目: …」 | プレビューが本文と揃っているかも、同じコンソールに「✔ プレビュー」などと出ます(アイコンが状態)。 ### 1.1 検査結果とできること | 結果 | プレビューの更新 | PDFを作成 | |------|------------------|-----------| | 問題(error)が 1 件以上 | 直前の表示を維持(「未更新」)。直すと更新できる | 問題を直すと作成できる | | 注意(warning)のみ、または指摘なし | できる | できる | | 確認処理中 | 終わるまで待つ | 終わるまで待つ | ### 1.2 何を検査するか | 区分 | 内容 | |------|------| | ドキュメント設定 | `ohyna:` の有無、必須項目(タイトル・色テーマ・フォント・言語)、色・フォント・角丸・表紙デザインの値の妥当性 | | Markdown の構造 | コードフェンスの閉じ忘れ、見出しの書き方、空のリンク/画像、数式の区切りの対応など | | コードフェンス | ハイライト可能な言語名か。`json` / `yaml` のときは内容の構文も確認 | | Mermaid ダイアグラム | 言語名 `mermaid` のフェンスを、PDF と同じ描画経路で実際に描けるか | | 数式 | `$` / `$$` / 数式フェンスなどを、PDF と同じ KaTeX 設定で描けるか | 表示されている問題に従って直してください。 --- ## 2. プレビュー 右ペインは、ドキュメント設定の用紙サイズに合わせた用紙イメージです(既定は A4 縦=210 × 297 mm)。 ### 2.1 プレビューでできること | 操作 | 説明 | |------|------| | ズーム・スクロール・用紙への合わせ込み | 表示倍率と見え方だけが変わる。ドキュメントの組版状態は変えない。ピンチ、Ctrl/⌘+ホイール、ツールバーでも拡大縮小できる | | 見た目の確認 | リンク・折りたたみ・タスクは成果物と同じ見た目で表示する(折りたたみは常に展開) | | 別ウィンドウ表示 | プレビューだけを別ウィンドウに出せる(コンソールも同様に外だし可) | ### 2.2 更新のしかた - 検査が通っているあいだ、編集内容に追随して更新されます。 - ヘッダの「プレビューを更新」で、明示的に再取得できます。 - 問題があるあいだは「未更新」のままです。問題を直すと更新できます。 ### 2.3 プレビューと PDF | 項目 | プレビュー | PDF | |------|------------|-----| | 役割 | 編集中の確認 | 配布・印刷の基準 | | ページの区切り | 画面上の近似 | Chromium による印刷結果 | | 図(Mermaid) | ブラウザで描画 | サーバで SVG にして埋め込み | | 数式 | ブラウザの KaTeX | 同じ区切り・同じ方針で描画 | ページ番号や改ページ位置の最終確認は、PDF 確認画面で行います。 ### 2.4 用紙と余白 用紙サイズ・向き・余白はドキュメント設定の「用紙・余白」で指定します(既定は A4 縦)。プレビューの用紙と PDF の紙面は連動します。表紙ページは用紙全面を使います。 --- ## 3. PDF の生成と保存 「PDFを作成」は、編集内容を成果物として実行する操作です。問題や設定不足があるときはモーダルを強制せず、コンソールの「出力」に理由が出ます。 ### 3.1 手順 1. ヘッダの「PDFを作成」を押す(処理中は進行表示になる)。 2. 問題やドキュメント設定の不足があるときは、コンソールの「出力」に内容が出る。直してから再度押す。 3. 成功すると「PDF確認」画面が開く。 4. 内容を確認し、「PDFを保存」でファイルへ書き込むか、「印刷」で OS の印刷ダイアログを開く。 同じ本文からすでに生成済みの PDF がある場合は、再生成せず確認画面を開くことがあります。本文を変えると、そのキャッシュは無効になります。 ### 3.2 保存と印刷 | 操作 | 内容 | |------|------| | PDFを保存 | OS の保存ダイアログで保存先を選ぶ | | 印刷 | 生成済み PDF を OS の印刷ダイアログへ渡す(プリンタ/PDF プリンタなど) | ### 3.3 表紙について ドキュメント設定で表紙を有効にしている場合、PDF の先頭に表紙ページが付きます。タイトル・サブタイトル・ラベル・フッタの位置は「ドキュメント設定」の章と同じ配置です。 --- ## 4. 別ウィンドウのプレビュー | ウィンドウ | 表示 | |------------|------| | メインウィンドウ(元の画面) | エディタのみ(全幅) | | 子(別ウィンドウ) | プレビューのみ(メインが生成した内容を同期) | メインウィンドウから、子を前面に出す操作と、プレビューをメインへ戻して子を閉じる操作ができます。子を閉じると、プレビューはメイン側に戻ります。 コンソールも同様に、バー右端のウィンドウアイコンから別ウィンドウへ外だしできます。外だし中はメイン側に細いバーが残り、前面へ/戻すが使えます。問題一覧からの行ジャンプはメインのエディタ側へ届きます。 --- # 困ったとき Source: https://ohyna.onrender.com/docs/manual/06-troubleshooting.md # 困ったとき よくある状態と対処です。解決しない場合は [GitHub Issues](https://github.com/GawaDev/ohyna/issues) へ。 --- ## 1. プレビューが更新されない/「未更新」のまま | 確認すること | 対処 | |--------------|------| | 「問題」にエラーが出ていないか | メッセージに従って本文またはドキュメント設定を直す。問題を直すと更新できます | | ドキュメント設定の必須項目(タイトル・色テーマ・フォント・言語) | 「問題」または「出力」の内容に従い、「ドキュメント設定」で直して「適用」する | | 「確認中」の表示が続いていないか | しばらく待つ。終わらない場合は本文を少し編集して再検査を促す | --- ## 2. PDFを作成できない/ボタンが押せない | 確認すること | 対処 | |--------------|------| | 検査の問題 | 「問題」の内容を直す。問題を直すと PDFを作成できます | | ドキュメント設定の必須欠落 | 「出力」を確認し、「ドキュメント設定」を開いて適用する | | 生成中の表示 | 完了まで待つ。失敗時は赤い通知の内容を確認する | --- ## 3. 保存できない・開いたファイルと別の場所にしか書けない | 状況 | 対処 | |------|------| | 「保存」なのに毎回場所を聞かれる | 「名前を付けて保存…」で場所を指定する。ブラウザが直接上書きに対応していないか、権限が無い場合があります | | 開くときに何も起きない | ダイアログでキャンセルしていないか確認する | | 起動しても前回のファイルが開かない | ヘッダの「前回のファイルを開く」を押してアクセスを許可する。拒否・削除・移動のときは空のドキュメントになる。起動直後だけではブラウザが権限ダイアログを出せない | | 未保存の警告が出る | 内容を残すなら先に「保存」する。破棄してよいときだけ続行する | --- ## 4. 図(Mermaid)が赤い枠になる - 図として描くときはフェンスの言語名を `mermaid` にする。ソースをコードとして載せるときは `mermaid code` または `text` を使う。 - 図のソースに構文誤りが無いか、プレビュー内のメッセージを読む。 - 検査で問題が出ている場合は、「問題」のメッセージを先に直す。 --- ## 5. 数式がエラーになる - `$` / `$$` の対応が取れているか確認する。 - コードブロック内の `$` は通常の文字として扱われる。数式は本文側に書く。 - KaTeX が解釈できる書き方になっているか見直す。 --- ## 6. 表紙や色が期待と違う | 現象 | 確認 | |------|------| | 表紙が無い | 「表紙を付ける」がオンか、「適用」したか | | 色が変わらない | 「色・言語」の色テーマを変え、「適用」したか。色は表紙以外(見出し帯・表・図)にも効きます | | 表紙の柄 | 「表紙デザイン」と色テーマの組み合わせを確認し、「適用」する | --- ## 7. 折りたたみの表示 プレビューと PDF では折りたたみを常に展開して表示します。 --- ## 8. 画像が出ない 画像は `https:` / `http:` / `data:` の URL で指定します。パスや URL を空にせず書いてください。 --- ## 9. それでも解決しないとき 次を控えてから連絡すると早く伝わります。 - 画面上部中央の通知メッセージの全文 - 「問題」に出ているメッセージ - 再現手順(開いた操作、ドキュメント設定の有無、問題の記法) | 窓口 | 用途 | |------|------| | [GitHub Issues](https://github.com/GawaDev/ohyna/issues) | 製品の不具合・要望 | | [セキュリティ報告](https://github.com/GawaDev/ohyna/security/advisories/new) | 脆弱性 | | サービス提供者 | サーバ運用・アカウント・組織ポリシーなど環境固有の問い合わせ | ソースとライセンスの一覧は [プロジェクトについて](./07-about.md) にあります。 --- # プロジェクトについて Source: https://ohyna.onrender.com/docs/manual/07-about.md # プロジェクトについて Ohyna はオープンソース(MIT License)のアプリケーションです。ソースの閲覧、不具合報告、改善提案は GitHub 上で行えます。 --- ## 1. リンク | 内容 | URL | |------|-----| | ソースコード | [https://github.com/GawaDev/ohyna](https://github.com/GawaDev/ohyna) | | 公開デモ | [https://ohyna.onrender.com/](https://ohyna.onrender.com/) | | Issue(不具合・要望) | [https://github.com/GawaDev/ohyna/issues](https://github.com/GawaDev/ohyna/issues) | | リリース | [https://github.com/GawaDev/ohyna/releases](https://github.com/GawaDev/ohyna/releases) | | セキュリティ報告 | [https://github.com/GawaDev/ohyna/security/advisories/new](https://github.com/GawaDev/ohyna/security/advisories/new) | 版は **__OHYNA_VERSION__** です(ヘッダとヘルプ画面下部にも表示されます)。 --- ## 2. ライセンス - 製品本体: [MIT License](../license/01-mit.md) - 依存ライブラリ・フォント等: [第三者コンポーネント](../license/02-third-party.md) --- ## 3. 貢献の入口 コードや文書の改善案は、上記リポジトリの Issue またはプルリクエストで受け付けます。 セキュリティ上の問題は、公開 Issue の前にセキュリティ報告の窓口へお願いします。 --- # 概要と方針 Source: https://ohyna.onrender.com/docs/spec/00-概要と方針.md # 00. 概要と方針 ## 1. 製品 **Ohyna**(Open Hybrid Note App、版 __OHYNA_VERSION__)は、日本語文書を主対象に、Markdown を編集して PDF にするオープンソースです。ブラウザで編集し、プレビューで体裁を確かめてから PDF を保存します。 扱う単位は **単一文書**です。1 つの Markdown を編集し、1 つの PDF を出力します(GUI、HTTP `POST /preview`・`/pdf`・`/analyze`、CLI `pdf` / `serve`)。 | 用途 | 内容 | |------|------| | 編集 | Markdown 本文とドキュメント設定(表紙・色・フォントなど) | | 検査 | 静的解析で問題を検出する。error が 0 件のときプレビュー更新と PDF 作成が進む | | プレビュー | 用紙イメージで体裁・図・数式を確認する | | PDF | 検査通過後に作成し、確認のうえ保存する | --- ## 2. 方針 1. **文書形式は Ohyna Markdown**(Markdown を基礎とした製品プロファイル。使える記法は本ヘルプのマニュアルと仕様書に従う) 2. **図は Mermaid**(`mermaid code` はコード表示) 3. **数式は KaTeX**(`$...$` / `$$...$$` など、および math 系フェンス) 4. **体裁は文書先頭の設定**(`ohyna:`)で定義する 5. **プレビュー更新と PDF 作成は、検査で error が 0 件のときに進む** 6. **プレビューは編集確認用、配布・印刷の基準は PDF** --- ## 3. 想定用途 - 手順書、仕様書、報告書を Markdown で作成し、PDF で配布する - 画面で体裁を確認しながら 1 文書を仕上げる サーバの構築や公開設定は、サービス提供者の運用に従います。ソースと公開デモは次のとおりです。 | 内容 | URL | |------|-----| | ソースコード | [https://github.com/GawaDev/ohyna](https://github.com/GawaDev/ohyna) | | 公開デモ | [https://ohyna.onrender.com/](https://ohyna.onrender.com/) | | Issue | [https://github.com/GawaDev/ohyna/issues](https://github.com/GawaDev/ohyna/issues) | 利用者向けの案内は [プロジェクトについて](../manual/07-about.md) にもあります。 --- ## 4. 利用上の前提 | 項目 | 内容 | |------|------| | 提供形態 | 組織等が用意したサーバ上のサービス、または公開デモとして、ブラウザから利用する | | 必須のドキュメント設定 | タイトル、色テーマ、本文フォント(またはカスタム)、言語 | | 最終確認 | **PDF 作成後の確認** | | データの扱い | 編集・プレビュー・PDF 作成のため、入力は接続先サービスへ送信される。秘密情報の入力は避ける | | 不具合・問い合わせ | [GitHub Issues](https://github.com/GawaDev/ohyna/issues)。運用環境固有のことはサービス提供者へ | --- ## 5. 技術の要約(参考) | 層 | 内容 | |----|------| | 文書形式 | **Ohyna Markdown** | | 本文変換 | Markdown 系ライブラリとコードハイライト | | 図 | Mermaid | | 数式 | KaTeX | | PDF | ブラウザ印刷エンジン相当 | 外部仕様との境界は [10-準拠仕様マップ.md](./10-準拠仕様マップ.md) を参照してください。 ライセンスは [MIT License](../license/01-mit.md)、第三者表記は [第三者コンポーネント](../license/02-third-party.md) です。 --- # 文書設定リファレンス Source: https://ohyna.onrender.com/docs/spec/03-文書設定リファレンス.md # 03. 文書設定リファレンス 体裁は Markdown 先頭の YAML front matter(`ohyna:`)で定義します。 構文は YAML、キーの意味は本製品契約です。準拠の切り分けは [10-準拠仕様マップ.md](./10-準拠仕様マップ.md) §6 を参照してください。 --- ## 1. Front matter ### 1.1 形式 文書の先頭(任意の HTML コメントの直後)に次の形で書きます。 ```yaml --- ohyna: title: 文書タイトル style: blue font: noto lang: ja cover: true subtitle: 副題 label: DOC meta: - 発行元 - 2026-07 --- # 本文見出し ``` 規則: | 規則 | 内容 | |------|------| | 名前空間 | 設定は **`ohyna:` 配下** | | キー名 | **camelCase**(例: `fontSize`、`coverPattern`) | | 受理キー | `ohyna:` 配下の公式キー(本書の表) | | BOM | 先頭の UTF-8 BOM は無視 | | コメント | front matter 直前の `` は除去してから解釈 | `ohyna` 以外のルートキーは保持され、GUI の「適用」でもそのまま残ります。 ### 1.2 キー一覧 | キー | 型 | 必須 | 未指定時の扱い | 意味 | |------|-----|------|----------------|------| | `title` | string | **必須**(解析・GUI) | 空は未設定。表示時は本文先頭 `#` をフォールバックしうる | 表紙タイトル・HTML `` | | `style` | string | **必須**(解析・GUI) | 解決処理では `"blue"` | 色テーマ名 | | `font` | string | **必須**(`fontFamily` があれば代替可) | 解決処理では `"noto"` | 本文フォントプリセット | | `lang` | string | **必須**(解析・GUI) | 解決処理では `"ja"` | HTML の `lang` 属性。例: `ja`、`en` | | `cover` | bool | 任意 | 概ね表紙あり | 表紙の有無 | | `subtitle` | string | 任意 | `""` | 表紙サブタイトル | | `label` | string | 任意 | `""` | 表紙パートラベル | | `meta` | string[] または改行区切り string | 任意 | `[]` | 表紙フッタ行 | | `rounded` | bool | 任意 | `true` | 角丸。`false` なら `radius` は `none` 相当 | | `radius` | `none` / `sm` / `md` / `lg` | 任意 | `md` | 角丸サイズ | | `fontFamily` | string | 任意 | なし | カスタム CSS `font-family`(プリセットを上書き) | | `fontMono` | string | 任意 | Cascadia / Consolas 系 | コード用フォント | | `fontSize` | CSS 長さ | 任意 | `10.5pt` | 本文サイズ(`pt`/`px`/`em`/`rem`/`%`) | | `lineHeight` | 数値文字列 | 任意 | `1.7` | 行間 | | `coverPattern` | 表紙キー | 任意 | `noise` | 表紙背景パターン | | `coverGradient` | bool | 任意 | `true` | 設定キーとして保持。表紙の見た目は `coverPattern` と色テーマで決まる | | `headingBand` | bool | 任意 | `true` | h2 の帯背景 | | `tableHeaderFill` | bool | 任意 | `true` | 表ヘッダの濃色塗り | | `letterSpacing` | CSS | 任意 | `0` | 字間 | | `author` / `version` / `date` | string | 任意 | `""` | 文書メタ。`meta` が空なら表紙フッタへ自動流し込み | | `pageSize` | `a4`/`a5`/`b5`/`letter` | 任意 | `a4` | 用紙サイズ | | `pageOrientation` | `portrait`/`landscape` | 任意 | `portrait` | 向き | | `marginPreset` | `narrow`/`normal`/`wide`/`custom` | 任意 | `normal` | 余白プリセット | | `marginTop` 等 | number(mm) | 任意 | プリセット値 | `custom` 時の上下左右 | | `pageHeader` / `pageFooter` | 定型キー | 任意 | `none` | 本文ページのヘッダ/フッタ(表紙 `meta` とは別) | | `pageHeaderText` / `pageFooterText` | string | 任意 | `""` | 定型が `custom` のとき | | `toc` | bool | 任意 | `false` | 自動目次(`[TOC]` 挿入) | | `tocDepth` | `2`/`3` | 任意 | `3` | 目次の見出し深さ | | `codeLineNumbers` | bool | 任意 | `false` | コード行番号 | | `codeWrap` | bool | 任意 | `false` | コード折り返し | | `codeFontSize` | CSS 長さ | 任意 | (本文連動) | コード専用サイズ | | `linkUnderline` | bool | 任意 | `false` | リンク下線 | | `linkThemeColor` | bool | 任意 | `true` | リンク色をテーマに合わせる | | `watermark` | `none`/`draft`/`confidential`/`custom` | 任意 | `none` | 透かし | | `watermarkText` | string | 任意 | `""` | `custom` 時の文言 | | `design` | object | 任意 | — | 上記レイアウト系をネストして書ける。フラットキーとマージ(ネスト側が優先) | **必須の判定箇所** - 画面の静的解析、およびプレビュー/PDF のゲート(必須キーが揃っているとき進む) ### 1.3 色テーマ(`style`) 画面のドキュメント設定で選べるテーマ: | キー | 表示名 | |------|--------| | `blue` | 縹(はなだ/青) | | `sky` | 空色(そらいろ/水色) | | `indigo` | 藍(あい/紺) | | `celadon` | 青磁(せいじ/青緑) | | `forest` | 常磐(ときわ/緑) | | `yellow` | 山吹(やまぶき/黄) | | `default` | 琥珀(こはく/黄茶) | | `gold` | 金色(こんじき/金) | | `orange` | 柑子(こうじ/オレンジ) | | `sakura` | 桜(さくら/ピンク) | | `red` | 朱(あけ/赤) | | `wine` | 蘇芳(すおう/赤紫) | | `purple` | 藤(ふじ/紫) | | `brown` | 焦茶(こげちゃ/茶) | | `neutral` | 銀鼠(ぎんねず/灰色) | | `dark` | 墨色(すみいろ/黒) | 図(Mermaid)の色と、印刷 CSS のアクセント色の両方に使います。 ### 1.4 フォント 構成: | 対象 | キー | 内容 | |------|------|------| | 本文 | `font` | プリセット(下表)。和文/欧文の優先ファミリーが異なる | | 本文上書き | `fontFamily` | 任意の CSS `font-family` スタック(指定時は `font` より優先) | | コード | `fontMono` | コード用スタック。空なら Cascadia Mono → Consolas → Courier New | | サイズ/行間 | `fontSize` / `lineHeight` | 本文の基本サイズと行間 | #### 本文プリセット(`font`) | キー | 和文(優先) | 欧文(優先) | |------|--------------|--------------| | `noto` | Noto Sans JP | Segoe UI | | `gothic` | 游ゴシック / ヒラギノ角ゴ / Noto Sans JP | Segoe UI | | `mincho` | Noto Serif JP / 游明朝 / ヒラギノ明朝 | (和文スタックに追随) | | `sans` | Noto Sans JP(フォールバック) | Segoe UI / system-ui | | `serif` | Noto Serif JP(フォールバック) | Georgia / Times New Roman | | `inter` | Noto Sans JP | Inter | | `mono` | (欧文等幅を共用) | IBM Plex Mono | #### コードフォント(`fontMono`) GUI では次のプリセットから選び、YAML には CSS スタックを書き込みます(既定プリセット選択時はキー省略=空)。 | GUI | 書き込まれるスタック(要約) | |-----|------------------------------| | Cascadia / Consolas(既定) | 空(実行時 Cascadia → Consolas → Courier New) | | IBM Plex Mono | `"IBM Plex Mono", …` | | Consolas | `Consolas, "Courier New", monospace` | | カスタム | 利用者が入力した CSS | Google Fonts から読み込むファミリーはプリセットごとに決まります。`fontFamily` に Noto が無い場合は日本語安全のため Noto Sans JP を追加することがあります。 ### 1.5 角丸(`radius`) | キー | CSS 変数の目安(sm / md / lg) | |------|-------------------------------| | `none` | 0 / 0 / 0 | | `sm` | 3px / 6px / 8px | | `md` | 6px / 10px / 14px | | `lg` | 10px / 14px / 20px | ### 1.6 表紙デザイン(`coverPattern`) 表紙背景は色テーマ(`style`)と表紙デザイン(`coverPattern`)の組み合わせです。`solid` は単色です。 | キー | 表示名(GUI) | |------|----------------| | `noise` | 霞(かすみ/ぼかし) | | `grainy` | 砂子(すなご/粒子) | | `aurora` | 極光(きょっこう/オーロラ) | | `mesh` | 彩雲(さいうん/メッシュ) | | `solid` | 無地(むじ/単色) | | `diagonal` | 斜影(しゃえい/斜め) | | `horizontal` | 横霞(よこがすみ/横ぼかし) | | `vertical` | 縦霞(たてがすみ/縦ぼかし) | | `radial` | 円暈(えんうん/放射) | | `split` | 二面(にめん/二分割) | | `band` | 帯(おび/帯飾り) | | `corner` | 隅取り(すみとり/コーナー) | | `ribbon` | 側帯(そくたい/リボン) | | `panel` | 脇板(わきいた/パネル) | | `frame` | 額縁(がくぶち/フレーム) | | `glow` | 中暈(ちゅううん/中心光) | | `dusk` | 黄昏(たそがれ/夕暮れ) | | `mist` | 薄霧(うすぎり/ミスト) | | `horizon` | 地平(ちへい/水平線) | | `stripe` | 縦縞(たてじま/ストライプ) | | `dots` | 点描(てんびょう/ドット) | | `grid` | 方眼(ほうがん/グリッド) | | `chevron` | 矢筈(やはず/シェブロン) | | `diamond` | 菱(ひし/ダイヤ) | | `hex` | 亀甲(きっこう/六角) | | `triangle` | 鱗(うろこ/三角) | | `checker` | 市松(いちまつ/チェッカー) | | `herringbone` | 杉綾(すぎあや/ヘリンボーン) | | `isometric` | 升目(ますめ/立体格子) | | `lattice` | 組子(くみこ/格子) | | `mosaic` | 寄木(よせぎ/モザイク) | | `blades` | 切子(きりこ/鋭角) | | `sunburst` | 日輪(にちりん/放射) | | `spiral` | 渦(うず/スパイラル) | | `orbit` | 周回(しゅうかい/軌道) | | `circles` | 同心円(どうしんえん/円環) | | `wave` | 波(なみ/ウェーブ) | | `waves` | 連波(れんぱ/多重波) | | `ripples` | 細波(さざなみ/さざ波) | | `scallop` | 波縁(なみぶち/スカラップ) | | `mountains` | 連山(れんざん/山並み) | | `arcs` | 円弧(えんこ/アーク) | | `zigzag` | 稲妻(いなずま/ジグザグ) | `font` / `radius` / `coverPattern` は上表のキーを使います。未知の値は解決時に静的解析 error になります。 ### 1.7 設定値の優先順位(共通) 同名の設定が複数あるときの解決規則(画面利用では主に 2〜3): 1. **提供者が別経路で明示した非空の上書き**(ある場合) 2. **front matter**(`ohyna:`) 3. **テーマ/製品既定値**(例: `cover` の既定 true) | 入力の形 | 解釈 | |----------|------| | キーなし/`null`/省略 | **未指定(UNSET)** → 下位へフォールバック | | 空文字列 `""` | **未指定と同じ**(下位へフォールバック) | | 非空の値 | **VALUE** → 採用 | --- # 印刷とプレビュー Source: https://ohyna.onrender.com/docs/spec/05-印刷とプレビュー.md # 05. 印刷とプレビュー 入力の解読規則は [08-入力解読仕様.md](./08-入力解読仕様.md)、プレビュー/PDF の契約は [09-出力仕様.md](./09-出力仕様.md) です。外部仕様との対応は [10-準拠仕様マップ.md](./10-準拠仕様マップ.md) です。 ## 1. ページ幾何 | 項目 | 仕様 | |------|------| | 用紙 | `pageSize` × `pageOrientation`(既定 A4 縦 = 210 × 297 mm) | | 本文余白 | `marginPreset`(既定 normal = 上 14 / 右 14 / 下 16 / 左 14 mm) | | 表紙余白 | 0(フルブリード) | | PDF | 用紙寸法に従い、CSS のページ指定を優先 | 表紙ページは余白ゼロ(フルブリード)、本文ページは設定した余白を使います。 ## 2. 表紙 | 項目 | 内容 | |------|------| | 高さ | 用紙高さ(既定 297mm)、角丸なし | | 背景 | 選択したスタイル/パターンを全面(`solid` は単色) | | 選択キー | `style` と `coverPattern` | | タイトル等 | 危険な HTML はエスケープされる | | 印刷色 | 背景色を印刷に反映 | 表紙文言はドキュメント設定(front matter)に従います。 ## 3. Markdown → HTML 共通処理 段階・拡張・フェンス・数式の定義は [08-入力解読仕様.md](./08-入力解読仕様.md) を参照してください。要約: | 段階 | 内容 | |------|------| | フェンス退避 | `` ```mermaid ``(図)と `` ```math `` 等(数式)を共通規則で退避 | | 拡張 | 表・脚注など(08 §4) | | サニタイズ | 利用者由来の HTML から危険なマークアップを除去(許可範囲は [10](./10-準拠仕様マップ.md)) | | details | 常に展開(PDF と同じ体裁) | | リンク | プレビューでは見た目のみ(ズーム・スクロールは可) | | keep-next | [09](./09-出力仕様.md) §5 | 数式フェンスは数式ブロックとして描画されます。 ### 改ページまわり | 方針 | 内容 | |------|------| | Keep with next | 見出しと直後の本文が離れにくい | | Keep together | 表・図・コード・引用・リスト等は途中ページ分割を避ける | | 目次 `[TOC]` | **前後とも改ページ**(目次専用ページ)。長い目次は複数頁可。リーダーとページ番号付き | | 巨大な図 | 頁を超えるときは分割を許容 | ## 4. 画面プレビュー 編集右ペインは **実寸の用紙スタック**で体裁を確認します。 | 項目 | 仕様 | |------|------| | 用紙 | 設定した用紙サイズ | | ページ分割 | 図描画後に本文を各用紙へ流し込み(**近似**) | | 背景 | 机面は画面の明暗に連動。用紙は白固定 | | ズーム | 表示倍率のみ変更(文書の組版は変えない)。ピンチ、Ctrl/⌘+ホイール、ツールバー | | 図・数式 | 画面側で描画(配布用 PDF とは経路が異なる) | | 更新条件 | 静的解析で error が 0 件のとき | | 解析で error があるとき | 直前のプレビューを保持し「未更新」 | **最終体裁の基準は PDF 作成後の確認です。** ## 5. PDF 確認 | 項目 | 内容 | |------|------| | 開き方 | **PDFを作成**完了後に確認画面が開く | | 保存 | 確認後「PDFを保存」(OS の保存ダイアログ) | | 印刷 | 確認後「印刷」(OS の印刷ダイアログ。作成済み PDF を渡す) | | 作成条件 | 静的解析で error が 0 件であること | ## 6. プレビューと PDF の差分 | 項目 | プレビュー | PDF | |------|-----------|-----| | 位置づけ | 編集中の近似確認 | **配布・印刷の基準** | | 図 | ブラウザ描画 | サーバ側で埋め込み | | ページ分割 | 画面内の近似 | 印刷エンジンによる正式な割付け | | 外部取得 | ブラウザがフォント/描画用資源を取得しうる | サーバは許可された宛先のみ | | ゲート | 検査で error が 0 件のとき更新 | 検査で error が 0 件のとき作成 | Markdown 拡張・サニタイズ・表紙・テーマ・数式区切り・details 展開の扱いは共通です。 --- # 入力解読仕様 Source: https://ohyna.onrender.com/docs/spec/08-入力解読仕様.md # 08. 入力解読仕様(Ohyna Markdown 1.0) 版: **__OHYNA_VERSION__** **Ohyna Markdown 1.0** の入力契約です。関連: [03-文書設定リファレンス.md](./03-文書設定リファレンス.md)、[09-出力仕様.md](./09-出力仕様.md)、[10-準拠仕様マップ.md](./10-準拠仕様マップ.md)。 Ohyna Markdown は Markdown を基礎とした製品プロファイルです。受理する入力の契約をここに置きます。 --- ## 1. 処理パイプライン(順序固定) 画面からのプレビュー/PDF 作成における本文解読順: | 順 | 段階 | 内容 | |----|------|------| | 1 | BOM(U+FEFF)除去 | 先頭のバイト順マークを除く | | 2 | front matter 分離・正規化 | ドキュメント設定ブロックの解釈(YAML 不正はエラー) | | 3 | 本文整形 | 製品既定の整形 | | 4 | エンジン用フェンス退避・正規化 | 図・数式フェンスの退避、`mermaid code` の扱い | | 5 | Markdown → HTML | 製品の参照変換(拡張は §4) | | 6 | HTML サニタイズ | 利用者由来の断片から危険なマークアップを除去 | | 7 | `<details>` を展開表示 | 折りたたみは常に開いた状態で出力 | | 8 | 数式・図の埋め込み | 製品レンダラの出力を差し込み(サニタイズ後) | | 9 | 見出しの改ページ配慮 | 見出し直後の本文が孤立しにくいようグループ化([09](./09-出力仕様.md)) | 静的解析は変換の前段ゲートです。error が 0 件のとき、画面のプレビュー更新と PDF 作成が進みます([10](./10-準拠仕様マップ.md))。 --- ## 2. Front matter ### 2.1 文法 1. 任意個の先頭 HTML コメント(`<!-- ... -->`、前後空白可)を除去する。 2. 残り文字列が次の正規表現に一致したときだけ front matter とみなす: ``` \A---[ \t]*\r?\n(.*?)\r?\n---[ \t]*(?:\r?\n|$) ``` 3. キャプチャした YAML を参照実装 `yaml.safe_load`(YAML 1.1 系)で読む。 4. 結果はオブジェクト(mapping)でなければならない。`null` のみのとき設定は空、本文は閉じ `---` 以降。 5. **区切りに一致したうえで YAML 構文エラー、または非オブジェクトのときは `FrontmatterError`。** 6. 区切りが無いときは front matter なし(本文=全体)。静的解析では error(`SETTINGS_MISSING_FM`)。 型の暗黙変換(例: YAML 1.1 の `yes`/`on`)に注意し、真偽値は `true`/`false`、文字列は引用を推奨します。意味の検証は [03](./03-文書設定リファレンス.md) のスキーマに従います。 ### 2.2 名前空間 - 有効な設定はトップレベルキー `ohyna:`(オブジェクト)のみ。 - その他のトップレベルキーは保持する。意味は本製品では解釈しない。 必須キー・列挙値・マージ規則は [03](./03-文書設定リファレンス.md) に従う。 --- ## 3. コードフェンス(Ohyna Fence Grammar) フェンスの判定は本節の規則が契約です。一般的な Markdown 処理系と差がある場合も、**本節を優先**します。 ### 3.0 info 文字列 ```text info ::= language argument* ``` | 項目 | 規則 | |------|------| | 行頭インデント | スペース 0〜3 | | 開き | `` ` `` または `~` が 3 つ以上 + info | | `language` | info を空白分割した先頭。比較時は ASCII 小文字へ正規化 | | `argument*` | 先頭以降のトークン(同様に小文字化)。Mermaid の `code` が正式 | | 閉じ | 同じ文字種・長さ以上・info 空 | ### 3.1 Mermaid ダイアグラムフェンス 次をすべて満たすとき図ノードとする(`is_mermaid_diagram_fence`): 1. マーカーが backtick(`` ` ``) 2. 言語トークンが正確に `mermaid` 3. 追加トークンが無い 正しい形: ````markdown ```mermaid flowchart LR A --> B ``` ```` 出力上の形は [09](./09-出力仕様.md) §6。 ### 3.2 Mermaid コードフェンス 次をすべて満たすとき、Mermaid 文法でハイライトした**通常のコードブロック**とする: 1. マーカーが backtick 2. 言語トークンが `mermaid` 3. 追加トークンが正確に `code` の 1 個だけ 正しい形: ````markdown ```mermaid code flowchart LR A --> B ``` ```` 変換時は Language Registry 識別子 `mermaid-code` へ正規化してから本文パーサへ渡す。 本文の Mermaid 構文は図と同様に検証する(不正なら `MERMAID_CODE_SYNTAX`)。構文例をプレーンテキストとして示すときは `text` フェンスを使います。 ### 3.3 Mermaid の追加トークン `` ```mermaid `` に `code` 以外の追加トークンがあるとき、静的解析 error(`MERMAID_FENCE_MODE`)。 図と `mermaid code` は backtick マーカーで開きます。 ### 3.4 数式フェンス 次をすべて満たすときディスプレイ数式ノードとする(`is_math_fence`): 1. マーカーが backtick 2. 言語トークンが `math` / `latex` / `katex` / `tex` / `stex` のいずれか 3. 追加トークンが無い 正しい形: ````markdown ```math E = mc^2 ``` ```` 出力上の形は [09](./09-出力仕様.md) §7。 ### 3.5 その他のフェンス(Language Registry) 言語識別子は **Ohyna Language Registry** に登録された値です。 参照実装では Pygments lexer(および製品エイリアス・`mermaid-code` Lexer)で解決する。未解決は静的解析 error(`LANG_UNKNOWN`)。 編集画面は同じ Registry のうちよく使う言語を色分けします。成果物側で解釈できる識別子は PDF/プレビューで色分けされます。 空の JSON / YAML フェンス、未閉じフェンスは静的解析 error。 --- ## 4. Markdown 拡張(参照実装) 受理構文の参照実装における拡張セット: | 拡張 | 設定 | |------|------| | tables, sane_lists, footnotes, attr_list, def_list, abbr, admonition, smarty | 既定 | | toc | `permalink: false` | | pymdownx.betterem, tilde, mark, caret | 既定 | | pymdownx.magiclink | `hide_protocol: false`, `repo_url_shortener: false` | | pymdownx.tasklist | `custom_checkbox: true` | | pymdownx.details | 既定(出力時は常に `open`。プレビューでも開閉固定) | | pymdownx.highlight | `pygments_lang_class: true`, `css_class: highlight` | | pymdownx.superfences | 既定 | | pymdownx.arithmatex | `generic: true`、インライン `\(`/`\)`、ブロック `\[`/`\]` | HTML ブロックはそのまま HTML として扱います。 キーボードキーは HTML `<kbd>`(許可タグ)です。 例: ```markdown 保存は <kbd>Ctrl</kbd>+<kbd>S</kbd> です。 ``` --- ## 5. インライン数式(KaTeX) フェンス外で次を数式とする(auto-render と解析の双方): | 区切り | モード | |--------|--------| | `$...$` | インライン | | `$$...$$` | ディスプレイ | | `\(...\)` | インライン | | `\[...\]` | ディスプレイ | | フェーズ | 設定 | 目的 | |----------|------|------| | レンダリング | `throwOnError: false`, `strict: "ignore"`, `trust: false` | 診断位置とエラー内容の回収(recovery) | | 製品検証 | 出力に `katex-error` があれば error(`KATEX_RENDER`) | `validationPolicy = reject` | --- ## 6. 画像パス(本画面) 本画面から参照する画像: | 項目 | 扱い | |------|------| | `http` / `https` / `data:` | 受理(PDF 化時は製品が許す通信先) | 組織が別経路(バッチ等)を用意している場合の画像解決は、その提供者の案内に従ってください。 --- ## 7. 静的解析診断 各診断は次のフィールドを持つ: | フィールド | 内容 | |------------|------| | `severity` | `error` / `warning` / `info` | | `message` | 人間向け文言 | | `line` | 1-based(分かるとき) | | `category` | `settings` / `yaml` / `markdown` / `syntax` / `mermaid` / `katex` / `engine` | | `code` | 安定 ID(機械可読) | ゲート: `severity === "error"` が 0 件のとき、画面のプレビュー更新と PDF 作成が進みます。 編集中の即時チェックは近似です。列挙値の誤りなどは **error** として扱い、最終判定はサーバ側の静的解析です。 ### 7.1 診断コード一覧(主要) | code | category | 概要 | |------|----------|------| | `DOC_EMPTY` | markdown | 文書が空 | | `FENCE_UNCLOSED` | markdown | フェンス未閉じ | | `SETTINGS_MISSING_FM` | settings | front matter なし | | `SETTINGS_*` | settings | 必須欠落・未知列挙など([03](./03-文書設定リファレンス.md)) | | `LANG_UNKNOWN` | syntax | Language Registry 未登録 | | `JSON_EMPTY` / `JSON_SYNTAX` | syntax | JSON フェンス | | `YAML_FENCE_EMPTY` / `YAML_FENCE_SYNTAX` | syntax | YAML フェンス | | `MERMAID_FENCE_FORM` | mermaid | 図フェンスの形式(backtick・言語トークン) | | `MERMAID_FENCE_MODE` | mermaid | `mermaid` の未知追加トークン | | `MERMAID_EMPTY` | mermaid | 図フェンスが空 | | `MERMAID_CODE_EMPTY` | mermaid | `mermaid code` が空 | | `MERMAID_RENDER` | mermaid | 図の描画/構文失敗 | | `MERMAID_CODE_SYNTAX` | mermaid | コード表示用ソースの構文失敗 | | `MATH_FENCE_FORM` / `MATH_EMPTY` | katex | 数式フェンス形式 | | `KATEX_RENDER` / `KATEX_BOOT` | katex | 数式検証失敗 | --- # 出力仕様 Source: https://ohyna.onrender.com/docs/spec/09-出力仕様.md # 09. 出力仕様 版: **__OHYNA_VERSION__** **Ohyna Rendering**(画面プレビューと PDF)の契約です。入力は [08-入力解読仕様.md](./08-入力解読仕様.md)(Ohyna Markdown)。競合解決は [10-準拠仕様マップ.md](./10-準拠仕様マップ.md)。 --- ## 1. 成果物の種類と基準 | 成果物 | 契約上の位置づけ | |--------|------------------| | 画面プレビュー | 編集中の近似。ページ分割は近似 | | PDF | **配布・印刷の基準** | | PDF 確認画面 | 作成済み PDF の表示 | **同一契約で揃えるもの:** Markdown 拡張・サニタイズ・表紙文言・テーマ・数式区切り・数式フェンス・Mermaid ソース・details の常時展開。 **近似でよいもの:** プレビューのページ区切り位置・ズーム見た目。最終ページ割は PDF を基準とする。 ### プレビューの操作ポリシー プレビューは **成果物の見た目を確認する画面**です。 | 操作 | 扱い | |------|------| | ズーム・スクロール・別ウィンドウ | 可(表示倍率と見え方) | | リンク・タスク・折りたたみ | 成果物と同じ見た目で表示(折りたたみは常に展開) | --- ## 2. ページ幾何 | 項目 | 値(既定) | |------|------------| | 用紙 | `pageSize` × `pageOrientation`(`a4` / `a5` / `b5` / `letter`。既定 A4 縦=210 × 297 mm) | | 本文余白 | 上 14 / 右 14 / 下 16 / 左 14 mm(プリセットで変更可) | | 表紙 | 余白 0(フルブリード) | ページ寸法・余白は CSS のページ指定を基準とし、印刷エンジンが実装する `@page` の範囲で確定します。 --- ## 3. PDF 確定条件 PDF 化は次を満たしてから確定します。 1. 文書の読み込み完了 2. 図・数式の描画完了(タイムアウトあり) 3. Web フォントの読み込み完了を待つ(失敗時は続行しうる) 4. 短い待機のあとページを PDF 化 --- ## 4. 表紙 | 項目 | 仕様 | |------|------| | 寸法 | 用紙高さ、角丸なし、フルブリード | | 背景 | 色テーマと `coverPattern` の組み合わせ(`solid` は単色) | | 文言 | `title` / `subtitle` / `label` / `meta`(危険な HTML はエスケープ) | | 基準 | ドキュメント設定(front matter) | --- ## 5. 改ページ(keep-next) | パラメータ | 値 | |------------|-----| | 連続見出しの上限 | 4 | | グループ内容 | 連続見出し + 直後の非見出しブロック 1 つ | | 図 | 単独ブロックとして扱う | | 目次(`.toc`) | 前後とも改ページ | | 既にグループ化されたブロック | 1 回だけグループ化 | | 後続本文が無い連続見出し | 見出し同士だけをまとめうる | 巨大要素は頁を超えるとき分割を許容します。 ### 5.1 目次 | 項目 | 仕様 | |------|------| | マーカー | `[TOC]`(`toc: true` 時は先頭へ自動挿入可) | | 改ページ | 目次ブロックの**前**と**後**で必ず改ページ | | 複数頁 | エントリが多いときは目次ページを連続(「目次(続き)」) | | 体裁 | 見出し「目次」、ドットリーダー、本文ページ番号 | | プレビュー | 用紙スタック分割で PDF と同様に前後改ページを再現 | --- ## 6. Mermaid 出力 | 入力 | PDF | プレビュー | |------|-----|------------| | `` ```mermaid ``(図) | サーバ側で SVG 埋め込み | ブラウザ描画 | | `` ```mermaid code `` | コードとして色分け表示 | 同じ | | 図種判定(図のみ) | ソース先頭の図種ディレクティブ | 同左 | | 失敗時(検査通過後・図のみ) | その図だけエラー枠。文書全体は返す | 同左 | 非表示の図ソース(アクセシビリティ用)と、利用者に見せる `mermaid code` は別物です。 対応する図種キーワードは製品が固定した一覧に従います(flowchart、sequenceDiagram など一般的な Mermaid 図種)。 --- ## 7. 数式出力 | 入力 | 出力上の形 | |------|------------| | `$` / `$$` / `\(`/`\)` / `\[`/`\]` | 区切りを残し KaTeX で描画 | | 数式フェンス([08](./08-入力解読仕様.md) §3.4) | 数式ブロックとして描画 | --- ## 8. テーマとフォント マージ順(後勝ち): 1. 製品テーマの既定 2. 色スタイルの上書き 3. ドキュメント設定(font / radius / headingBand 等) `fontFamily` があればそれを用い、無ければ `font` プリセット。Web フォントはファミリ名に応じて付与しうる。 `fontFamily` / `fontSize` / `lineHeight` は危険な CSS 注入を防ぐため受理文字を制限します([10](./10-準拠仕様マップ.md))。 --- ## 9. プレビュー固有 | 項目 | 仕様 | |------|------| | 用紙スタック | 設定用紙サイズ。机面は明暗連動。用紙は白固定 | | 分割 | 図・数式のあと本文を各シートへ流し込み(近似) | | 更新 | 静的解析 error 0 のとき。error があるときは直前表示を保持し「未更新」 | --- ## 10. 画面での成功/失敗(ゲート) | 状況 | 画面の挙動 | |------|------------| | 検査で error 0 | プレビュー更新・PDF 作成が可能 | | 検査で error ≥ 1 | 問題一覧に表示。プレビュー更新と PDF 作成は待機 | | 空の本文や処理例外 | エラーとして通知 | | 入力が大きすぎる | サイズ上限により拒否 | --- ## 11. PDF 化時の外部通信 PDF 化では、フォント・数式・図描画など製品が許可した宛先への通信だけを許します。詳細な許可方針は [10-準拠仕様マップ.md](./10-準拠仕様マップ.md) のセキュリティ節を参照してください。 --- # 準拠仕様マップ Source: https://ohyna.onrender.com/docs/spec/10-準拠仕様マップ.md # 10. 準拠仕様マップ 版: **__OHYNA_VERSION__** **製品契約(Ohyna Markdown)と外部仕様/参照実装の境界**、および競合時の解決規則です。 読み方: | 区分 | 意味 | |------|------| | **製品契約** | 利用者が従う入力・意味・ゲート。基準は主に [08](./08-入力解読仕様.md)・[09](./09-出力仕様.md)・[03](./03-文書設定リファレンス.md) | | **採用仕様** | 外部規格をそのまま参照 | | **制限付き採用** | 外部エンジンの解釈範囲を製品が受理する部分集合として固定 | | **参照実装** | 現バージョンのライブラリ名・版。交換しても製品契約は維持できる | | **実装ピン** | 再現性のため版または CDN タグを固定しているもの | --- ## 0. 製品言語の位置づけ Ohyna は文書形式 **Ohyna Markdown 1.0** を定義します。 - 利用者契約の主語は「Ohyna Markdown で使える記法」です。 - 構文の基礎に Markdown 系の慣例を用い、図・数式・設定・PDF 組版を製品側で定義します。 - 表・タスクリストなど一般的な記法の一部は **記法互換** として提供します。表示結果は本製品の出力仕様に従います。 ```text 利用者契約: Ohyna Markdown 1.0 + Ohyna Rendering 採用規格: JSON (ECMA-404)、ISO 216 A4 など 制限付き採用: 固定版 Mermaid / KaTeX が解釈する本文 参照実装: Markdown 変換・ハイライト・印刷エンジン等 ``` --- ## 1. 競合時の優先順位 同一入力または出力について複数の仕様・実装が異なる結果を示す場合、次の順序で解決します。 1. **セキュリティ契約**(本章 §8) 2. **Ohyna の明示的な製品契約**(Ohyna Markdown / Rendering / 本マップの基準表) 3. **Rendering Profile で固定された外部仕様**(版ピン付き) 4. **固定されたライブラリの実装挙動**(参照実装) 5. **参考として記載した CommonMark、GFM その他** 例: GFM で許容される HTML でも、製品のサニタイズ規則が適用される場合はセキュリティ契約を優先します。 ### 1.1 処理ごとの基準 | 対象 | 基準 | |------|------| | フェンス認識 | **Ohyna Fence Grammar**([08](./08-入力解読仕様.md) §3) | | 通常 Markdown 本文変換 | 製品が受理する構文(固定拡張セット) | | 言語識別子の可否 | **Ohyna Language Registry** | | Mermaid フェンスの種別 | 製品契約(図 / `code` / 追加トークン時の診断) | | Mermaid 本文構文 | Rendering Profile の Mermaid | | 数式区切り・数式フェンス | 製品契約 | | 数式本文 | Rendering Profile の KaTeX | | 設定の意味・マージ | Document Settings([03](./03-文書設定リファレンス.md)) | | HTML 許可範囲 | 本章 §8(利用者由来断片) | | エンジン生成 HTML/SVG | 製品の Trusted 出力(専用経路) | | 最終ページ割・用紙箱 | CSS `@page` + 印刷エンジン | | プレビュー分割 | 製品独自の近似(配布基準は PDF) | | 静的解析ゲート | 製品契約(error が 0 件のときプレビュー/PDF が進む) | エンジンフェンスおよび静的解析対象フェンスの認識には Ohyna Fence Grammar を使用します。一般的な Markdown 処理系と差がある場合、**Ohyna Fence Grammar の判定を優先**します。 --- ## 2. 全体マップ | 処理範囲 | 契約の種類 | 版/ピン | 適用されるもの | 本製品が上乗せする契約 | 詳細 | |----------|------------|----------|----------------|------------------------|------| | 本文 → HTML | 制限付き採用+製品 | 製品依存セット | 見出し・リスト・表等 | 拡張の固定セット([08](./08-入力解読仕様.md) §4)。表示結果は Ohyna Rendering | [08](./08-入力解読仕様.md) | | フェンス走査 | **製品(Ohyna Fence Grammar)** | 製品固定 | info ::= language argument* | 図は `` ```mermaid ``、コードは `` ```mermaid code ``、数式は `` ```math `` 等 | [08](./08-入力解読仕様.md) §3 | | シンタックスハイライト | 製品 Registry/参照実装 | 製品固定 | 登録済み言語識別子 | 未登録は静的解析 error | [08](./08-入力解読仕様.md) | | 数式 | 制限付き採用 KaTeX | **0.16.22** 固定 | `$` / `$$` / 数式フェンス本文 | レンダラは recovery。検証は `katex-error` → error | [08](./08-入力解読仕様.md) §5 | | 図 | 制限付き採用 Mermaid | **メジャー 11**(パッチ追従しうる) | 図フェンス本文 | フェンス形式は製品契約。描画失敗は図単位エラー枠(ゲート通過後) | [09](./09-出力仕様.md) §6 | | Front matter | YAML 構文+製品意味 | 製品固定 | `---` ブロック | `ohyna:`・必須キー・マージ規則は製品 | [03](./03-文書設定リファレンス.md) | | HTML サニタイズ | 製品 | 製品固定 | **利用者由来** HTML 断片のみ | 許可リストは本章 §8。エンジン出力は別経路 | 本章 §8 | | `lang` | 製品 | 任意文字列 | HTML `lang` へ載せる | 例: `ja`、`en` | [03](./03-文書設定リファレンス.md) | | 用紙 | **採用** ISO 216 A4 等 | 設定連動 | 印刷寸法 | 余白は CSS `@page` | [09](./09-出力仕様.md) | | PDF | 参照実装の印刷エンジン | 製品同梱相当 | PDF バイト | ネットワーク許可・待機条件は製品 | [09](./09-出力仕様.md)、本章 §8 | | プレビュー分割 | 製品(近似) | 画面 | 用紙スタック | 配布・印刷の基準は PDF | [09](./09-出力仕様.md) | | 静的解析ゲート | 製品 | — | 画面のプレビュー/PDF | error が 0 件のとき進む | [08](./08-入力解読仕様.md) §7 | | 編集画面の色分け | 参照実装 | — | 編集中のみ | 成果物ハイライトとは別 | マニュアル | --- ## 3. Markdown 本文(Ohyna Markdown) ### 3.1 契約と参照実装 - **製品が受理する構文**が利用者契約です。 - 表・タスクリスト・自動リンク等は **GFM 由来の記法互換**として提供し、表示結果は Ohyna Rendering に従います。 - HTML ブロックはそのまま HTML として扱います。 ### 3.2 製品が独自に決めるもの | 項目 | 契約 | |------|------| | エンジン用フェンスの退避 | 図・数式を変換前にプレースホルダ化。`mermaid code` は言語識別子へ正規化 | | `<kbd>` | 許可 HTML として残す | | details/タスクチェック | 出力時は常に展開・見た目固定 | | 見出し keep-next | [09](./09-出力仕様.md) §5 | --- ## 4. コードフェンスとハイライト | 層 | 基準 | |----|------| | 開閉・info 文法 | Ohyna Fence Grammar | | 言語識別子の可否 | Ohyna Language Registry | | 成果物の色分け | 製品のハイライト実装 | | JSON/YAML フェンス内容 | 構文として検証しうる | | `` ```mermaid `` | 図ノード | | `` ```mermaid code `` | Mermaid コードノード(ハイライト) | | 数式フェンス | 数式ノード | --- ## 5. 数式(KaTeX) | 項目 | 内容 | |------|------| | エンジン | KaTeX **0.16.22**(ピン固定) | | 受け付ける TeX | 当該版が解釈する範囲 | | 区切り | 製品契約(`$` / `$$` / `\(`/`\)` / `\[`/`\]`/数式フェンス) | | レンダラ設定 | エラーを例外にせず recovery(診断位置回収のため) | | 検証ポリシー | 出力に `katex-error` があれば静的解析 **error**(`validationPolicy = reject`) | --- ## 6. 図(Mermaid) | 項目 | 内容 | |------|------| | フェンス認識 | 製品契約(Ohyna Fence Grammar) | | エンジン | Mermaid.js **メジャー 11**(パッチは追従しうる)+ ZenUML(別系統) | | 図種・構文 | 当該エンジン版の契約 | | 配置 | [09](./09-出力仕様.md)(SVG/画面描画)。コード表示は通常のハイライト | --- ## 7. 設定データ | データ | 構文 | 意味 | |--------|------|------| | front matter | YAML+製品の区切り | [03](./03-文書設定リファレンス.md) | | `lang` | 任意文字列 | HTML `lang`。例: `ja`、`en` | マージ規則の基準は [03](./03-文書設定リファレンス.md) §1.7。空文字は「未指定」として下位の既定へ進みます。 --- ## 8. HTML・セキュリティ(信頼境界) 画面から使うときの信頼境界の要約です。デプロイ手順の詳細は開発者向け文書にあります。 | 起源 | 扱い | |------|------| | 利用者 HTML/Markdown 由来断片 | 許可リストでサニタイズ → URL 再フィルタ | | Mermaid/KaTeX 等の製品レンダラ出力 | Trusted。サニタイズ後に差し込み | | 最終文書 | 外部通信は許可された宛先のみ。ローカルファイル探索を抑止 | 利用者由来断片と Trusted 出力は経路を分けます。 ### 8.1 利用者由来 HTML の許可(要約) 許可タグの例: 見出し・段落・リスト・表・リンク・画像・コード・引用・`<details>`・`<kbd>` など、文書に必要なもの。 `javascript:` などの危険な URL は除去されます。リンクは `http` / `https` / `mailto` / `#` / `/` で始まるパスなど、製品が許すスキームのみ残します。画像 `src` は `http` / `https` / `data:image/` など。 ### 8.2 CSS 注入対策 `fontFamily` / `fontSize` / `lineHeight` は正規表現で受理範囲を制限します(`url(` や `;` など危険な断片を拒否)。 ### 8.3 PDF 化時の外部通信(要約) 許可しうるもの: Web フォント、数式/図描画用の製品指定 CDN、`data:`、製品内部の描画ホスト。許可一覧外は遮断します。 ### 8.4 本画面での画像 本画面から PDF 化するとき、画像は `https:` / `http:` / `data:` で参照します(詳細は [08](./08-入力解読仕様.md) §6)。 --- ## 9. 用紙・PDF・プレビュー | 項目 | 基準 | |------|------| | 物理寸法 | ISO 216 等(設定の用紙サイズ) | | ページ箱・余白の宣言 | CSS `@page` | | 実際のページ割 | 印刷エンジンが実装する `@page` 範囲 | | プレビュー分割 | 近似。配布・印刷の基準は PDF | --- ## 10. 画面でのゲート | 経路 | 静的解析ゲート | |------|----------------| | 画面のプレビュー/PDF | **必須**(error が 0 件のとき進む) | 本ヘルプの対象は画面利用です。組織が別経路(バッチ等)を用意している場合のゲート差は、その提供者の案内に従ってください。 --- ## 11. Rendering Profile(1.0) | 構成要素 | 1.0 のピン/下限 | |----------|------------------| | 製品版 | __OHYNA_VERSION__ | | Markdown 変換・ハイライト・YAML・サニタイズ | 製品が固定する依存 | | KaTeX | **0.16.22** | | Mermaid | メジャー **11**(パッチ追従しうる) | | ZenUML | 別系統(変更範囲が広い) | | 印刷エンジン | 製品が同梱/インストールする版 | | 印刷 CSS | 製品テーマ | 外部仕様の版を上げる変更は、製品側で本マップと関連ヘルプを同じ作業単位で更新します。 --- ## 12. 製品契約ドキュメントとの対応 | 契約の種類 | 文書 | |------------|------| | Ohyna Markdown(入力・フェンス・解析) | [08-入力解読仕様.md](./08-入力解読仕様.md) | | Ohyna Rendering(幾何・表紙・プレビュー/PDF) | [09-出力仕様.md](./09-出力仕様.md) | | 設定キー・マージ | [03-文書設定リファレンス.md](./03-文書設定リファレンス.md) | | 信頼境界・許可方針 | 本章 §8 | | 利用者向け記法 | マニュアル(はじめに〜困ったとき) | --- # MIT License Source: https://ohyna.onrender.com/docs/license/01-mit.md # MIT License 本製品(ソースおよび同梱の表紙画像など)のライセンスは **MIT License** です。 - ソースコード: [https://github.com/GawaDev/ohyna](https://github.com/GawaDev/ohyna) - 第三者コンポーネント: [02-third-party.md](./02-third-party.md) 条文は次のとおりです。 --- ``` MIT License Copyright (c) 2026 Ohyna contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` --- # 第三者コンポーネント Source: https://ohyna.onrender.com/docs/license/02-third-party.md # 第三者コンポーネント 本ソフトウェアは次のオープンソース/公開リソースに依存します。 製品本体のライセンスは [MIT License](./01-mit.md) です。 ソースコード: [https://github.com/GawaDev/ohyna](https://github.com/GawaDev/ohyna) 各コンポーネントにはそれぞれのライセンスが適用されます。 実行時に CDN やフォントサービスへ接続する場合があります(PDF/プレビュー/内容チェック)。 最終確認(2026-07-31): Python 依存は BSD / MIT / Apache / PSF 系。GUI の production 依存はほぼ MIT。例外として `argparse`(JS)が **Python-2.0**(パーミッシブ。再配布可)。 --- ## 1. Python 実行時依存 | パッケージ | 用途 | ライセンス | |------------|------|-------------------| | Markdown | Markdown → HTML | BSD-3-Clause | | pymdown-extensions | Markdown 拡張 | MIT | | Pygments | コードハイライト | BSD-2-Clause | | playwright | Chromium 印刷・図/数式検証 | Apache-2.0 | | PyYAML | ドキュメント設定 / YAML フェンス | MIT | | bleach | HTML サニタイズ | Apache-2.0 | Playwright が取得する **Chromium** バイナリは Playwright の配布条件に従います。導入は `python -m playwright install chromium` です。 --- ## 2. 実行時に参照しうる外部エンジン(CDN) | コンポーネント | 用途 | ライセンス | 参照 | |----------------|------|-------------------|------| | Mermaid.js | 図の描画 | MIT | jsDelivr `mermaid@11` | | @mermaid-js/mermaid-zenuml | ZenUML 図 | 各パッケージの表記に従う | jsDelivr | | KaTeX | 数式の描画 | MIT | jsDelivr(ピン固定版) | CDN 上の配布物そのものの著作権は各プロジェクトに帰属します。本製品はそれらを呼び出して利用します。 --- ## 3. フォント(Web / PDF) プレビュー・PDF・画面で Google Fonts 等から読み込む場合があります。 | フォント例 | ライセンス | |------------|-------------------| | Noto Sans JP / Noto Serif JP | SIL Open Font License 1.1 | | IBM Plex Mono | SIL Open Font License 1.1 | | Inter | SIL Open Font License 1.1 | --- ## 4. 画面(GUI)の主な依存 | パッケージ | 用途 | ライセンス | |------------|------|-------------------| | React / React DOM | UI | MIT | | Mantine | UI コンポーネント | MIT | | CodeMirror 関連 | エディタ | MIT | | Tabler Icons | アイコン | MIT | | js-yaml | YAML | MIT | | marked | ヘルプ表示等 | MIT | | react-pdf / pdf.js | PDF 確認表示 | Apache-2.0(pdf.js)等 | | argparse(JS、推移依存) | 設定解析系の推移 | Python-2.0 | | Vite / 周辺ツール | ビルド | MIT 等 | --- ## 5. 仕様・規格の参照について CommonMark、GFM、ISO 216、BCP 47、JSON Schema、CSS Paged Media などは、実装の根拠および製品契約との対応を説明する参照です。 製品が契約する範囲との境界は [準拠仕様マップ](../spec/10-準拠仕様マップ.md) に従います。 --- ## 6. 同梱アセット | 内容 | 注意 | |------|------| | 表紙背景画像 | 本製品向けに生成したオリジナル画像。ライセンスは本体と同じ MIT | | アプリアイコン(🐣) | Google Noto Color Emoji(U+1F423)SVG。Copyright 2013 Google LLC。画像リソースは Apache-2.0 | | 印刷用スタイル・色テーマ | 本体と同じ MIT | | 画面のビルド成果 | 上記 GUI 依存のライセンスを含む | ---