ダイアグラムと表 ― mermaid, tikzgraph, tikzcd, tabular
Folioの図表環境を完全ガイド.mermaidによるフローチャート・シーケンス図,tikzgraphによるグラフ描画,tikzcdによる可換図式,tabularによる表,figure/table環境,includegraphicsの使い方を解説する.
1 mermaid ダイアグラム
Folioでは mermaid 環境でテキストベースのダイアグラムが描ける.標準LaTeXにはないFolio独自の機能である.
1.1 フローチャート
\begin{mermaid}
graph TD
A[開始] --> B{条件}
B -->|Yes| C[処理1]
B -->|No| D[処理2]
C --> E[終了]
D --> E
\end{mermaid}
表示結果:
graph TD
A[開始] --> B{条件}
B -->|Yes| C[処理1]
B -->|No| D[処理2]
C --> E[終了]
D --> E1.2 横方向のフローチャート
graph LR で左から右に流れるフローチャートになる:
\begin{mermaid}
graph LR
A[入力] --> B[前処理]
B --> C[モデル]
C --> D[後処理]
D --> E[出力]
\end{mermaid}
表示結果:
graph LR
A[入力] --> B[前処理]
B --> C[モデル]
C --> D[後処理]
D --> E[出力]1.3 シーケンス図
\begin{mermaid}
sequenceDiagram
participant C as Client
participant S as Server
participant D as Database
C->>S: HTTPリクエスト
S->>D: クエリ
D-->>S: 結果
S-->>C: レスポンス
\end{mermaid}
表示結果:
sequenceDiagram
participant C as Client
participant S as Server
participant D as Database
C->>S: HTTPリクエスト
S->>D: クエリ
D-->>S: 結果
S-->>C: レスポンス1.4 活用例:依存関係図
数学の教科書シリーズなどで,トピック間の依存関係を示すのに便利である:
\begin{mermaid}
graph TD
A["集合と写像"] --> B["群の定義"]
B --> C["部分群"]
B --> D["準同型"]
C --> E["剰余類"]
E --> F["正規部分群"]
F --> G["商群"]
D --> G
G --> H["同型定理"]
style A fill:#f5f5f5,stroke:#333,color:#000
style H fill:#f5f5f5,stroke:#333,color:#000
\end{mermaid}
表示結果:
graph TD
A["集合と写像"] --> B["群の定義"]
B --> C["部分群"]
B --> D["準同型"]
C --> E["剰余類"]
E --> F["正規部分群"]
F --> G["商群"]
D --> G
G --> H["同型定理"]
style A fill:#f5f5f5,stroke:#333,color:#000
style H fill:#f5f5f5,stroke:#333,color:#000
2 tikzgraph グラフ描画
tikzgraph 環境でグラフ理論のグラフ(頂点と辺からなる図)を描ける.LaTeX 記法と統一された構文で,無向・有向グラフを表現する.Folio独自の環境である.
2.1 基本構文
頂点は id または id/$ラベル$ で定義し,辺は -- で結ぶ.; で辺チェーンを区切る:
\begin{tikzgraph}
a/$v_1$ -- b/$v_2$ -- c/$v_3$;
a -- c;
\end{tikzgraph}
表示結果:
ラベルを省略すると頂点IDがそのまま表示される:
\begin{tikzgraph}
a -- b -- c;
\end{tikzgraph}
表示結果:
2.2 有向グラフ
-> で有向辺,<- で逆向き,<-> で双方向辺を描ける:
\begin{tikzgraph}
a/$v_1$ -> b/$v_2$ -> c/$v_3$;
c -> a;
\end{tikzgraph}
表示結果:
2.3 辺のスタイルとラベル
角括弧で辺のスタイル(dashed,dotted,thick,double)やラベルを指定する:
\begin{tikzgraph}
a/$u$ --[dashed] b/$v$;
a --[thick, "3"] c/$w$;
b --[dotted] c;
\end{tikzgraph}
表示結果:
2.4 レイアウト
環境オプションでレイアウトを選択する.デフォルトは spring layout(力学モデル),circular layout で円形配置になる:
\begin{tikzgraph}[circular layout]
a/$1$ -- b/$2$ -- c/$3$ -- d/$4$ -- e/$5$ -- a;
\end{tikzgraph}
表示結果:
2.5 構文まとめ
| 記法 | 意味 |
a -- b |
無向辺 |
a -> b |
有向辺() |
a <- b |
逆有向辺() |
a <-> b |
双方向辺 |
a/$v_1$ |
頂点 にKaTeXラベル |
--[dashed] |
破線スタイル |
--[dotted] |
点線スタイル |
--[thick] |
太線スタイル |
--[double] |
二重線スタイル |
--["label"] |
辺ラベル |
[spring layout] |
力学モデル配置(デフォルト) |
[circular layout] |
円形配置 |
2.6 多重辺
同じ頂点ペア間に複数の辺を定義すると,自動的に曲線で描き分けられる:
\begin{tikzgraph}
A -- B; A -- B;
A -- C; A -- C;
A -- D;
B -- D;
C -- D;
\end{tikzgraph}
表示結果(ケーニヒスベルクの橋):
2.7 サブグラフ
中括弧 {ラベル: ...} でサブグラフを定義する.サブグラフ内のノードは破線の囲みで表示される:
\begin{tikzgraph}
{SCC $C_1$: a -> b -> c -> a;}
{SCC $C_2$: d -> e -> d;}
{SCC $C_3$: f;}
c -> d;
e -> f;
\end{tikzgraph}
表示結果:
コロンなしの {a -- b;} はラベルなしサブグラフになる.
2.8 本物のTikZとの違い
tikzgraph は TikZ 風の名前を冠しているが,Folio独自の簡易グラフ描画環境であり,本物の TikZ とは大きく異なる:
| 機能 | tikzgraph | TikZ |
| 座標指定 | 自動レイアウトのみ | 任意座標 |
| ノード形状 | 円のみ | 矩形,楕円,多角形など |
| 色指定 | 非対応 | 自由に指定可能 |
| ラベル位置 | ノード内のみ | above, below, left, right |
| 辺のカーブ指定 | 多重辺で自動 | bend left/right, out/in 角度 |
\foreach ループ |
非対応 | 対応 |
| 装飾 (decoration) | 非対応 | snake, zigzag など |
tikzgraph はグラフ理論の基本的なグラフ描画に特化している.ノードの形状変更や色指定が必要な場合は mermaid 環境の使用を推奨する.
3 tikzcd 可換図式
tikzcd 環境で可換図式が描ける.数学の記事で圏論的な図式を使いたいときに有用である.
3.1 基本的な可換図式
\begin{tikzcd}
A \arrow[r, "f"] \arrow[d, "g"'] & B \arrow[d, "h"] \\
C \arrow[r, "k"'] & D
\end{tikzcd}
表示結果:
3.2 矢印の種類
\begin{tikzcd}
A \arrow[r, "f"] & B % 通常の射
A \arrow[r, hookrightarrow] & B % 単射
A \arrow[r, twoheadrightarrow] & B % 全射
A \arrow[r, dashed] & B % 破線
\end{tikzcd}
表示結果:
3.3 完全系列
短完全系列の表示:
\begin{tikzcd}
0 \arrow[r] & A \arrow[r, "f"] & B \arrow[r, "g"] & C \arrow[r] & 0
\end{tikzcd}
表示結果:
3.4 複雑な可換図式
\begin{tikzcd}
& A \arrow[dl, "p"'] \arrow[dr, "q"] & \\
B \arrow[dr, "f"'] & & C \arrow[dl, "g"] \\
& D &
\end{tikzcd}
表示結果:
4 表(tabular 環境)
4.1 基本的な表
\begin{tabular}{lcc}
\hline
名前 & 記号 & 位数 \\
\hline
巡回群 & $\mathbb{Z}/n\mathbb{Z}$ & $n$ \\
対称群 & $S_n$ & $n!$ \\
二面体群 & $D_n$ & $2n$ \\
\hline
\end{tabular}
表示結果:
| 名前 | 記号 | 位数 |
| 巡回群 | ||
| 対称群 | ||
| 二面体群 |
4.2 列の揃え方
l(左寄せ),c(中央),r(右寄せ)で指定する:
\begin{tabular}{|l|c|r|}
\hline
左寄せ & 中央揃え & 右寄せ \\
\hline
apple & banana & cherry \\
dog & elephant & fox \\
\hline
\end{tabular}
表示結果:
| 左寄せ | 中央揃え | 右寄せ |
| apple | banana | cherry |
| dog | elephant | fox |
5 figure と table 環境
キャプションと番号を付けるにはフロート環境を使う:
\begin{figure}
\centering
\begin{tikzcd}
A \arrow[r, "f"] \arrow[d, "g"'] & B \arrow[d, "h"] \\
C \arrow[r, "k"'] & D
\end{tikzcd}
\caption{可換図式の例}
\label{fig:commutative}
\end{figure}
図 \ref{fig:commutative} は可換図式の基本形である.
表示結果:
図 1 は可換図式の基本形である.
\begin{table}
\centering
\begin{tabular}{lcc}
\hline
群 & 可換性 & 有限性 \\
\hline
$(\mathbb{Z}, +)$ & 可換 & 無限 \\
$S_3$ & 非可換 & 有限 \\
$(GL_2(\mathbb{R}), \cdot)$ & 非可換 & 無限 \\
\hline
\end{tabular}
\caption{群の分類例}
\label{tab:groups}
\end{table}
表 \ref{tab:groups} に基本的な群の分類を示す.
表示結果:
| 群 | 可換性 | 有限性 |
| 可換 | 無限 | |
| 非可換 | 有限 | |
| 非可換 | 無限 |
表 1 に基本的な群の分類を示す.
6 画像について
\includegraphics コマンドは,画像のURLを直接指定すれば表示できる:
\includegraphics[width=0.8\textwidth]{https://example.com/image.png}
width オプションのみ対応している.ローカルファイルパスは使えないため,Webで公開されているURLを指定する必要がある.テキストベースで図を作成したい場合は,mermaid,tikzgraph,tikzcd の使用を推奨する.
7 まとめ
Folioでは mermaid(フローチャート等),tikzgraph(グラフ理論のグラフ),tikzcd(可換図式)を使ってテキストベースでダイアグラムを描ける.tabular による表もそのまま使える.次回は相互参照・リンク・カスタムコマンドについて見ていく.