はじめに
PandocはMarkdownからHTML変換など、マークアップ言語を
別の形式に変換するツールです。
また、Pandoc filterという仕組みを使用することで、
変換書式を自作することができます。
ここでは、PandocとPython Pandoc filterを
使用するための環境構築方法を説明します。
環境はWindows+Python Anaconda(Miniconda)で説明します。
インストールと設定
Miniconda
MinicondaはPythonの実行環境+パッケージ管理ツールです。
同様のツールAnacondaと比べ必要最小限のパッケージのみ
含まれるため、容量が少ない&軽いという利点があります。
公式ホームページ
から自身のOSにあったバージョンをダウンロードしてインストールします。
Minicondaの起動方法
- Windowsのタスクバーからanacondaを検索して「Anaconda Prompt」を実行
Pandoc & Panflute
Pandocと、PythonのPandoc filterであるpanfluteをインストールします。
Pandocとpanfluteにはバージョンに依存関係があるため、同時にインストールします。
- Anaconda Promptを起動
- 以下コマンドを実行
conda install -c conda-forge pandoc panflute
文字コード設定
Pandocでは文字コードをUTF-8で扱うため、Pythonの文字コードをUTF-8にします。
- Anaconda Promptを起動
- 以下コマンドを実行
conda env config vars set PYTHONUTF8=1
Selenium(オプション)
SeleniumはWebページ実行のためのツールです。
Pandoc filterでは基本必要になりませんが、
JavaScriptを実行する時に必要になることがあります。
ここではChromeブラウザでのインストール方法を説明します。
- 「Chrom>設定>Chromeについて」からバージョンを確認(ここではX.X.Xとする)
- Anaconda Promptを起動
- 以下コマンドを実行
conda install -c conda-forge selenium python-chromedriver-binary=X.X.X
(Chromeバージョンの上3桁まで同じなら問題ないかとは思いますが、もし問題あればconda search -c conda-forge python-chromedriver-binary
で検索して近いバージョンをインストールしてください)
サンプル
ソース
ソースとして以下のようなマークダウンを用意します
# ヘッダ1 テスト ## ヘッダ2 テスト ### ヘッダ3 テスト
Pandoc filterとして、すべてのヘッダの先頭に「😀」を追加するコードを作成してみます。
import panflute as pf def action(elem, doc): if isinstance(elem, pf.Header): elem.content.insert(0, pf.Str('😀')) pf.run_filter(action)
変換方法
マークダウンをHTMLに変換します。
選択肢1 : Anaconda Prompt
- Anaconda Promptを起動
cd
コマンドでsrc.mdがあるフォルダに移動- 以下コマンドを実行
pandoc -s src.md -o dst.html --filter filter.py
選択肢2 : バッチファイル
- Anaconda Promptを起動
where conda
でconda.batのパスを調べる(ここではX\X\Xとする)- 以下のようなバッチファイルを作成
call X\X\X\conda.bat activate pandoc -s src.md -o dst.html --filter filter.py
- run_pandoc.batをダブルクリックして実行
生成されたHTMLファイル
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> (略) </head> <body> <h1 id="ヘッダ1">😀ヘッダ1</h1> <p>テスト</p> <h2 id="ヘッダ2">😀ヘッダ2</h2> <p>テスト</p> <h2 id="ヘッダ3">😀ヘッダ3</h2> <p>テスト</p> </body> </html>