MarkdownドキュメントをWordに変換するPandocで、独自スタイルが使えない
ふと、Markdownで書いたドキュメントをMicrosoft Office Wordに自動変換してくれるツールがないかなぁ…と思って検索したら、ありました。
- pandoc -general markup converter- Google Project Hosting https://github.com/jgm/pandoc
- Pandoc - About pandoc http://johnmacfarlane.net/pandoc/
おぉ……! 対応しているフォーマットが、めっさ多様です。これだこれだ! ただし、まさかのHaskell製。
3日前にマイナーバージョンアップされていて、開発継続中です。ダウンロードサイトはGoogle Projectですが、現在のコードはgithubでホスティングされています。いい感じ。
と、喜んだのもつかの間、触ってみると、テンプレートの参照が上手くいきませんでした。
未解決ですが、やったことをメモします。
環境
- Windows 7 Professional SP1(64 bit)
入力ファイルの準備
Markdownで記述した20121015_input.txtを用意します。
# hogeプロジェクト構成管理計画書 R0.1 最終更新日: 2012/10/15 ## 目的 本ドキュメントの目的は、あれをこうしてなにすることである。対象読者は、ほげもがを担当する者とする。 ## 関連ドキュメント * hogeプロジェクト変更管理手順書 * hogeプロジェクト構成管理手順書
中身もファイル名も、テキトーに。任意のフォルダに置きます。
動作確認(HTML出力)
まずは、htmlに変換してみます。
入力ファイルを置いたフォルダに異動して、実行。
pandoc -o output.html 20121015_input.txt
次のようなoutput.htmlが、カレントディレクトリに生成されました。
<h1 id="hogeプロジェクト構成管理計画書">hogeプロジェクト構成管理計画書</h1> <p>R0.1</p> <p>最終更新日: 2012/10/15</p> <h2 id="目的">目的</h2> <p>本ドキュメントの目的は、あれをこうしてなにすることである。対象読者は、ほげもがを担当する者とする。</p> <h2 id="関連ドキュメント">関連ドキュメント</h2> <ul> <li>hogeプロジェクト変更管理手順書</li> <li>hogeプロジェクト構成管理手順書</li> </ul>
Validには程遠いけれど、headを前につけて、bodyでサンドするスクリプトを書けば、使えるでしょうか。
動作確認(Wordファイル出力)
続いて、本命のdocxに出力します。
pandoc -o output.docx 20121015_input.txt
Wordで開けるdocxファイルが、生成されました。
見出し1のフォントは、Calibri、18pt、見出し2のフォントは、MS ゴシック、16ptになっていました。
このドキュメントには、reference.docxというデフォルトテンプレートの書式(スタイル)が適用されているようです。reference.docxは、Pandocをインストールしたルートフォルダに、最初から入っていました。
Wordファイル出力のスタイル変更でハマる
さて、ユーザドキュメントを見ると、docxに適用するスタイルを変更できるようです。
ということは、Markdownで書いたドキュメントを、プロジェクト標準のスタイルを適用したWordファイルに変換することも、できるわけです。上手く動いてくれれば。
スタイルファイルを指定するには、次のオプションを使います。
pandoc --reference-docx=reference_copy.docx -o output.docx 20121015_input.txt
reference_copy.docxが、独自のスタイルファイルですね。
しかし、試したところ、上手くいきませんでした。スタイルが何も設定されていない、プレーンな(?)Wordファイルが生成されてしまいます。
検索すると、同じ問題で困っている人たちがぞろぞろ。
- https://github.com/jgm/pandoc/issues/414 ←このイシューがopenのままなので、まだダメっぽい?
- https://groups.google.com/forum/?fromgroups=#!topic/pandoc-discuss/IFVIruMo5bA
- https://groups.google.com/forum/?fromgroups=#!topic/pandoc-discuss/h-m3Bz7mirE
- http://superuser.com/questions/181939/how-should-i-convert-markdown-or-similar-to-a-word-document
(ツラいけどemacsでdocxを編集しよう!とか言いだす人までいて、カオス)
ここから先は、何をやってダメだったか、という実りのない話なので注意です。
- デフォルトのreference.docxから生成されたdocxを、Wordで編集して、新規テンプレート用に名前をつけて保存し、指定した。→失敗
- reference.docxをカレントフォルダにコピーし、Wordで編集して上書き保存し、指定した。→失敗
- reference.docxをカレントフォルダにコピーし、OpenXMLエディタで編集して上書き保存し、指定した。→失敗
- ルートフォルダのreference.docxを、編集済みスタイルファイルに置き換えた。→失敗
3番目だけ、初めてのことをしたので、少し詳しく備忘を書いておきます。