MyST記法のルール。(1) パイプテーブルではなくlist-tableディレクティブを使用する。(2) 太字見出し+箇条書きの複数グループはlist-tableに変換する。(3) コードブロックは外部ファイルからliteralincludeで取り込む。(4) フロー図はmermaidディレクティブで記述する。(5) 注意喚起はAdmonitionディレクティブを使用する。(6) 用語説明は定義リストで記述する。MyST/Sphinxのマークダウンを生成するときに適用する。
| col1 | col2 | 形式)は使用禁止:::{list-table} ディレクティブで記述する:::{list-table}
:header-rows: 1
:widths: auto
* - ヘッダ1
- ヘッダ2
* - データ1
- データ2
:::
:header-rows: を必ず指定する(ヘッダ行がない場合は 0):widths: auto を基本とする(明示的な幅指定が必要な場合のみ整数列を使用):align: — left / center / right:header-rows: — ヘッダ行数(デフォルト: 0):stub-columns: — スタブ列数(デフォルト: 0):width: — テーブル全体の幅(長さまたはパーセント):widths: — 列幅の比率(整数列または auto):class: — CSSクラス:name: — 参照用ターゲット名太字見出し+箇条書きのグループが複数並ぶパターンは list-table に変換する。各グループの見出しをヘッダ行、箇条書きをセル内の箇条書きとして配置する。
**カテゴリA**
- 項目1
- 項目2
**カテゴリB**
- 項目3
- 項目4
:::{list-table}
:header-rows: 1
:widths: auto
* - カテゴリA
- カテゴリB
* - - 項目1
- 項目2
- - 項目3
- 項目4
:::
* - - item は「行開始 → セル開始 → 箇条書き項目」の3段ネスト - item(4スペースインデント)列を横断して1対1で対応する比較項目は、セル内箇条書きではなく独立したテーブル行として記述する。
対応する項目をセル内箇条書きにまとめてはならない:
:::{list-table}
:header-rows: 1
:widths: auto
* - 従来の課題
- SDD
* - - 曖昧さに気づかない
- 乖離が発生
- コードが真実の源泉
- - 考えが明確化
- コードを生成
- コードも更新
:::
各対応を独立した行として記述する:
:::{list-table}
:header-rows: 1
:widths: auto
* - 従来の課題
- SDD
* - 曖昧さに気づかない
- 考えが明確化
* - 乖離が発生
- コードを生成
* - コードが真実の源泉
- コードも更新
:::
外部ファイルとして存在するコードはインラインコードブロックではなく literalinclude で取り込む。
:::{literalinclude} path/to/file.py
:language: python
:::
パスはドキュメントファイルからの相対パス。/ 始まりはソースディレクトリのルートからの相対パス。
:language: — シンタックスハイライトの言語:lines: — 行範囲の指定(例: 1-5, 1,3,5-10):start-after: — 指定テキストの後から取り込み開始:end-before: — 指定テキストの前で取り込み終了:emphasize-lines: — 強調表示する行(例: 3,5-7):linenos: — 行番号を表示:caption: — キャプション:pyobject: — 特定のPythonオブジェクトを抽出:dedent: — インデントを除去する文字数ファイルとして存在するコードをインラインで記述してはならない:
```python
def hello():
print("Hello")
```
説明用の5行以下のコード片はインラインコードブロックを許容する:
```bash
# プロジェクト初期化
specify init
```
6行以上のコードや、外部ファイルとして存在するコードは literalinclude を使用すること。
リモートURL上のファイルは literalinclude ではなく rli(sphinxext-remoteliteralinclude)で取り込む。literalinclude と同じオプションが使用可能。
:::{rli} https://raw.githubusercontent.com/owner/repo/refs/heads/main/path/to/file.md
:language: markdown
:start-after: "セクション見出し"
:end-before: "次のセクション見出し"
:::
literalincluderli:::{literalinclude} examples/hello.py
:language: python
:::
部分的に取り込む場合:
:::{literalinclude} examples/hello.py
:language: python
:start-after: # start example
:end-before: # end example
:::
フロー、シーケンス、状態遷移などの図は mermaid ディレクティブで記述する。ASCIIアートやテキストベースのフローチャートは使用禁止。
:::{mermaid}
flowchart LR
A[入力] --> B[処理]
B --> C[出力]
:::
flowchart / graph — フローチャート(方向指定: LR, TD, TB, RL, BT)sequenceDiagram — シーケンス図stateDiagram-v2 — 状態遷移図classDiagram — クラス図erDiagram — ER図xychart-beta — XYチャート上記以外のタイプ(pie, gitGraph, mindmap, gantt 等)は sphinx-oceanid(beautiful-mermaid)で非対応。使用するとビルド時に警告が出る。
:name: — 本文から相互参照する場合に付与する。相互参照が不要なら省略してよい:caption: — 図のキャプション:align: — left / center / right罫線文字やASCIIアートによるフローチャート:
┌─────────┐
│ Specify │ ← 何を作るか明確化
└────┬────┘
↓
┌─────────┐
│ Plan │ ← どう実装するか設計
└─────────┘
:::{mermaid}
flowchart TD
A[Specify] -->|何を作るか明確化| B[Plan]
B -->|どう実装するか設計| C[Tasks]
:::
重要な情報、注意点、補足情報を強調する場合は Admonition ディレクティブを使用する。プレーンテキストで「注意:」「ヒント:」と書かない。
:::{note}
ここに補足情報を記述する
:::
カスタムタイトルを付ける場合:
:::{admonition} セキュリティに関する注意
:class: warning
認証情報をコードに埋め込まないこと
:::
note — 一般的な補足情報tip — 実践的なアドバイスwarning — 注意喚起important — 重要な詳細seealso — 関連情報への参照コンテンツは1〜3行程度に簡潔にまとめること。
プレーンテキストで注意喚起を記述してはならない:
注意: この操作は取り消せません
ヒント: 先にバックアップを取ることを推奨します
:::{warning}
この操作は取り消せない
:::
:::{tip}
先にバックアップを取ることを推奨する
:::
用語や概念の説明を列挙する場合は定義リスト構文を使用する。箇条書きで代用しない。
SDD
: 仕様駆動開発。仕様書を起点にコードを生成する手法
TDD
: テスト駆動開発。テストを先に書いてから実装する手法
複数の定義を持つ場合:
API
: アプリケーションプログラミングインターフェース
: 外部システムとのデータ交換の規約
箇条書きで定義リストを代用してはならない:
- **SDD**: 仕様駆動開発。仕様書を起点にコードを生成する手法
- **TDD**: テスト駆動開発。テストを先に書いてから実装する手法
SDD
: 仕様駆動開発。仕様書を起点にコードを生成する手法
TDD
: テスト駆動開発。テストを先に書いてから実装する手法
:::)を使用する```)でディレクティブを囲まない# 正しい
:::{note}
内容
:::
# 禁止
```{note}
内容
### list-table の構文
- `* -` は新しい行(row)の開始
- ` -`(インデント付きハイフン)は列(column)の値
- セル内に複数行のコンテンツを含める場合はインデントを揃える