みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

emacs markdown-modeで表を作成する

はじめに

筆者はemacsmarkdownを書く時にはmarkdown-modeのパッケージをインストールして、gfm-modeを使用する。

.emacs/init.elは多分こんな感じ。

;; Markdown mode
(use-package markdown-mode
  :ensure t
  :init
  (add-to-list 'auto-mode-alist '("\\.md$" . gfm-mode)))

表を作る基本

下記のような表を作りたいとする。

番号 項目
1 いちばん
2 にばん

markdownとしては下記のように記述する。

| 番号 | 項目     |
|------|----------|
| 1    | いちばん |
| 2    | にばん   |

これをいちいち手入力するのは結構面倒くさい。

下記のようなテキストを手入力して

|||
|-|

C-iすると表のように整形してくれることに気づいた

|   |   |
|---|---|

そして手入力で

| 番号  |   |
|---|---|

とやったあとでC-iすると、下記のように自動で整形してくれる。

| 番号 |   |
|------|---|

しばらくはこれで表を入力していた。

一括で値を設定したい

まとまったデータをコピペしてきて表にしたい場合、上記のやり方でも結構面倒くさい。

例えば下記のようなまとまったデータがある場合。CSVのデータとか。

番号,項目
1,いちばん
2,にばん
3,さんばん

これをset-markで選択状態にしてC-c C-c |と入力すると下記のようにしてくれる。

| 番号 | 項目     |
| 1    | いちばん |
| 2    | にばん   |
| 3    | さんばん |

その後に2行目に|-|を追加して

| 番号 | 項目     |
|-|
| 1    | いちばん |
| 2    | にばん   |
| 3    | さんばん |

C-iするとこのようになる。

| 番号 | 項目     |
|------|----------|
| 1    | いちばん |
| 2    | にばん   |
| 3    | さんばん |

つまり、markdown-modeで表を作る時はまずはコンマ区切りのデータを並べる。 C-c C-c |で表の形にして、ヘッダと値の分離は|-|+C-iで行う。

まとめ

この作り方を知らない頃はTables Generatorを使用していた。

ただ、これだとデータをオンラインでサーバに送るような気がしていて、仕事で使うのはちょっと心配だった。 ひょっとしたらJavaScriptでブラウザ上で完結していてサーバにデータを送るようなことはしないのかもしれないが。

まとまったデータをCSVにすること自体は割とどのようにでもできるので、 markdown-modeで表を作る時にこのやり方を知っているとかなり便利。