OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

Pandocで、Markdownからいい感じのhtmlへ一発変換するコマンドを作る

作業マシンが変わるたびに毎回同じものを作ってる気がするので、メモしておく。

我々はすべてのドキュメントをプレーンテキストで、つまりMarkdownで書きたいが、人は必ずしもそうではない。
折り合いをつけるためには、読めないからWordで書いてくれと言われてしまう前に、いい感じのアウトプットを出さねばならない。
ここでは html ファイルへのコンバートを考える。

md → html の変換は Pandoc を使えば簡単だが、毎回コマンド一発で使えるようにしておくにはちょっと準備が必要。

環境

  • Windows 10 Home
  • Pandoc をインストールしておく

CSSの用意

いい感じのスタイルで出力するには、いい感じのCSSが必要。
ここでは GitHub スタイルのCSSを利用することにする。

以前は ↓こちら
Github Markdown CSS - for Markdown Editor Preview · GitHub
のCSSを使わせてもらっていたのだけど、このCSSで画像を2つ(para.png, dirty-shade.png)参照していて、その画像が前は https://github.com/gollum/gollum/find/master ここからもらってこれたと思ったが、今は見つからなくなっていた。

なので今回は↓こっちを使わせてもらうことにする。

GitHub - sindresorhus/github-markdown-css: The minimal amount of CSS to replicate the GitHub Markdown style

CSSファイルだけ使うには githubのmarkdown-cssをぶっこ抜く方法 - Qiita を参考に、class名の変換が必要。

コマンドの作成

好きなコマンドをファイル名にして、batファイルを作る。たとえば md2html.bat とか。

中には、変換したいmarkdownファイルを引数にとる形で pandoc コマンドを定義しておく。
使うオプションはだいたいこのへん。

  • -f 入力フォーマット
  • -t 出力フォーマット
  • -s スタンドアローンなファイルとして出力
  • --self-contained 大事。画像を出力ファイル内に埋め込む
  • -c CSSファイルを指定
  • -o 出力ファイル名
  • --toc 目次をつけるかどうか、お好みで

これでコマンドはこんな感じになる。

@echo off

pandoc -f markdown -t html5 %1 -s --self-contained -c %~dp0\github-markdown.css -o out.html

このbatファイルは、pathを通したフォルダに置いておく。
同じフォルダに、 CSSファイルも置いておく。
(上のコマンド例だと「github-markdown.css」という名前にする)

使い方

前回 Windows 10 任意のコマンドをスタートメニューから一発で実行する というのを書いたが、今回のは引数でファイルパスを指定する必要があるので、コマンドプロンプトから使うことにする。

知られたウィンドウズ・ハックを使って、変換したいmarkdownファイルがあるフォルダからコマンドプロンプトを起動。

f:id:kd1:20201123193738p:plain

起動したプロンプトで md2html [ファイル名] のように実行。

f:id:kd1:20201123193742p:plain

同じフォルダに out.html が出力されれば成功。