Markdown: 組み込みの表よりもっと複雑な表を作りたい

題の通りなんですけども。
Markdownに組み込まれている標準的な表は、複雑なことができません。
- セルの結合(行結合・列結合)ができない
- 背景色や枠線の装飾ができない
- セル内に複雑なレイアウトや図形的な表現ができない
ヘッダ行を2段組にしたりもできませんし、セルを適切な場所で改行させることもできない(自分でセル内テキストにBRタグを埋め込むことはできますが、異常に保守性・可読性が落ちますし)。
Mermaidのような、テキストベースのツールがなんかないのかと探しましたが、見つかりませんでした。
ChatGPTに聞いたところ以下を提案されました。
方法 | セル結合 | 色・装飾 | 描画の自由度 | Markdown互換性 |
---|---|---|---|---|
Markdown表 | × | × | 低 | ◎ |
HTML埋め込み | ◎ | ◎ | 中 | ◯(一部制限あり) |
Mermaid | × | △ | 高(図として) | ◯ |
画像/SVG | ◎ | ◎ | 高 | ◎ |
拡張Markdown | ◎ | ◎ | 高 | △(環境依存) |
で、VS CodeのプレビューができればOKって限定したらどうなの?って聞いたところ、Markdown Preview Enhancedというプラグインを入れると、MermaidのほかLaTeXの表も入れられますよ、ということだったんですね。
「あれ、Zennは確か数式入れられるよね?TeX系の」ということで、表を試してみました(KaTeXというそうです)。
改行をどうやったら入れられるのかはまだ分かっていませんが、ヘッダ2段組とかできるということは分かりました。
{tabular}
には対応していないので{array}
を使うようです。
$$
〜$$
で以下を囲みます。
\begin{array}{|c|r|r|}
\hline
項目 & 値1 & 値2 \\
段組 & (X) & (Y) \\
\hline \hline
A & 10 & 20 \\
B & 30 & 40 \\
長い長い文字列が頭についたC &50 & 1260 \\
\hline
\end{array}

{\multicolumn}
{multiline}
はNot supportedなんですね。残念。
(multirow
もないようです)

VS Code+Markdown Preview Enhancedの場合、設定で、Markdown-preview-enhanced: Enable Extended Table Syntaxをオンにすると、セルのマージなどができるようになるようです。
改行は依然brタグ頼みなんですかね。
元々、句読点かスペースかを入れるとそこにあわせて適当に改行してくれるので(狙っては改行できません)、もうそれでいくしかないのかなという気はします。

HTML表も埋め込めるよ、とChatGPTは言うんですけども。
マイクロソフトのMarkdownリファレンスには、以下のようなことが書いてあります。
HTML テーブルは Microsoft Learn には推奨されません。 それらはソースで人間が判読できるようになっていません。このことは Markdown の重要な原則の 1 つです。

にKaTeXでの複数行のやり方が載っていました。
$$
〜$$
で以下を囲みます。
\begin{array}{|c|r|r|}
\hline
項目 & 値1 & 値2 \\
段組 & (X) & (Y) \\
\hline \hline
A & 10 & 20 \\
\hline
B & 30 & 40 \\
\hline
長い長い文字列が\\頭についたC &50 & 1260 \\
\hline
\begin{matrix}
ということは \\
3行で \\
表示したりも \\
できる!? \\
\end{matrix} & 80 & 990 \\
\hline
↑4行じゃん! & 70 & 1\\
\hline
\end{array}
マイクロソフトの指摘じゃないですが、ちょっと可読性が問題ですかね。
でもやりたいことはおよそできそうです。

でもやりたいことはおよそできそうです。
ウソでした。横方向の結合ができないのでした。
縦も、本来の意味の結合はできないので、セルごとに結合する行が違う場合などには対応できません。
あくまでセル内の改行だけですね。