1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【続】MkDocsでテーブルのセル結合がしたい(mdx_tableau編)

Last updated at Posted at 2023-02-18

結論: 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 を書く。
    つまり
mkdocs.yml
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       |

image.png

  • セル結合
| 見出し1 | 見出し2  | 見出し3 |
| ------- | -------- | ------- |
|  a      |{         | c       |
|  d      | e        |{        |
|^        | h        |{        |

image.png

  • 複数行の見出し
| 見出し1 | 見出し2  | 見出し3 |
| ------- | -------- | ------- |
|# 見出し4|# 見出し5 |^        |
|  d      | e        |{        |
|^        | h        |{        |

image.png

  • 最初の行を |! で始めるとキャプションも付けられる
|! 表1 サンプル |
| 見出し1 | 見出し2  | 見出し3 |
| ------- | -------- | ------- |
|# 見出し4|# 見出し5 |^        |
|  d      | e        |{        |
|^        | h        |{        |

image.png

うん、いい感じ:relaxed:

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?