結論: mdx_tableauがいい感じ。
前回の記事ではtable.pyを直接編集してmarkdownのテーブルセル結合を実現したが、
よくよくPython-Markdownのドキュメントを見てたら
Third Party Extensionsにすでにセル結合できるやつがあったわ。
- Table cell and row spans: Provides spanned cells and columns in tables. Works with Python Markdown versions 2.6 and 3 under both Python 2 and Python 3.
-
mdx_spantables: Provides spanned table columns and rows. Works with Python Markdown 2.6; fails with ImportError on Python Markdown 3.
これはPython Markdown 2.6専用のようだ - mdx_tableau: Table markup with row and column spans, per-cell formatting, optional or multiple headers, ….
既にあるならそっちを使った方が良いよね。
というわけで試してみる。
Table cell and row spans
- インストール方法
$ pip install git+https://github.com/Neepawa/cell_row_span
mkdocs.ymlに
markdown_extensions:
- cell_row_span
を追加
- 実行してみる
| Column 1 | Col 2 | Big row span |
|:-----------------------:|-------| -------------- |
| r1_c1 spans two cols || One large cell |
| r2_c1 spans two rows | r2_c2 | |
|_^ _| r3_c2 | |
| ______  | r4_c2 |_ _|
rowspanはできてるけどcolspanがダメですね…
mdx_tableau
- インストール方法
$ pip install git+https://github.com/tableau-tables/python-tableau-parser
- python-markdownを*.pyから直接起動するには
markdown.markdown(your_documenti, extensions=[..., 'python-tableau-parser', ...])
MkDocsから使用するにはmkdocs.ymlに次の記述を追加する
markdown_extensions:
- def_list
- python-tableau-parser
- pymdownx.superfences
: :
とtableau-tablesのREADME.mdには書かれてあったが、
$ mkdocs serve
ERROR - Config value 'markdown_extensions': Failed to load extension 'python-tableau-parser'.
ModuleNotFoundError: No module named 'python-tableau-parser'
Aborted with 1 Configuration Errors!
となり実行できなかった。
cell_row_spanもtableau-tablesもダメでした。
うまくいかないもんである。
tableau-tablesを動くようにするか、
table.pyの変更をThird Party Extension化するか…
tableau-tablesのほうが色々機能がありそうなんだけどね。
追記
tableau-tablesのissuesにそのものズバリ書いてあった
pip install string-scanner
- extension が python-tableau-parser → mdx_tableauに変更
mkdocs.ymlに書くのはpython-tableau-parserではなくmdx_tableau を書く。
つまり
markdown_extensions:
- mdx_tableau
を追加
使い方
文法はVSCodeのMarkdown Preview Enhancedで使われているセル結合と異なっているが、色々柔軟性があるようだ。
いいじゃん!
記号 | 説明 | 説明(原文) |
---|---|---|
^ | 上のセルと結合 | Merge this cell with the one above it. Multiple cells in a column may be merged |
{ | 左のセルと結合 | Merge this cell with the one to its left. Multiple cells in a row may be merged |
< | 左寄せ | Left align this cell |
= | 中央寄せ | Center this cell |
> | 右寄せ | Right align this cell |
# | 見出しセル | Make this cell a header (use <th>) |
.class | Apply the CSS class to this cell |
サンプルも載っている。よさげ。
試しに使う
- 従来の標準的な記法はもちろん使える
| 見出し1 | 見出し2 | 見出し3 |
| ------- | -------- | ------- |
| a | b | c |
| d | e | f |
| g | h | i |
- セル結合
| 見出し1 | 見出し2 | 見出し3 |
| ------- | -------- | ------- |
| a |{ | c |
| d | e |{ |
|^ | h |{ |
- 複数行の見出し
| 見出し1 | 見出し2 | 見出し3 |
| ------- | -------- | ------- |
|# 見出し4|# 見出し5 |^ |
| d | e |{ |
|^ | h |{ |
- 最初の行を |! で始めるとキャプションも付けられる
|! 表1 サンプル |
| 見出し1 | 見出し2 | 見出し3 |
| ------- | -------- | ------- |
|# 見出し4|# 見出し5 |^ |
| d | e |{ |
|^ | h |{ |
うん、いい感じ