Pandocを使ってmarkdownからdocxに変換する方法

markdownで書いたメモをGoogleドキュメントで編集したかったので、markdownファイルからdocxファイルへの変換方法を調べました。

結論

Pandocを使うことでmarkdownファイルからdocxファイルに変換できる。

Pandocとは?

.md から.docx 等のドキュメントに変換できるソフトウェア。 また、逆に.docx から.md に変換する事も可能です。 他にも.pdfなどの様々なデータ形式に対応しているようです。

jgm/pandoc: Universal markup converter

pandoc-jp/pandoc-doc-ja: Pandocユーザーズガイド日本語版(Pandoc 2.7.2+準拠)のリポジトリ by Sphinx

Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会

docxとgdocについて

どちらもドキュメント用のファイル形式で互換性があります。どちらのファイルもどちらのツールで開くことが可能です。

  • .docx: Microsoft Wordの標準ファイル形式
  • .gdoc: Googleドキュメントの標準ファイル形式

インストール

homebrew経由でインストール可能です。

$ brew install pandoc 
$ pandoc -v
pandoc 2.19.2
Compiled with pandoc-types 1.22.2.1, texmath 0.12.5.2, skylighting 0.13,
citeproc 0.8.0.1, ipynb 0.2, hslua 2.2.1
Scripting engine: Lua 5.4
User data directory: /Users/karlley/.local/share/pandoc
Copyright (C) 2006-2022 John MacFarlane. Web:  https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.

pandoc -vで標準されるUser data directory: は変換時にスタイル等の参照ファイルを設置するディレクトリです。今回は使用していません。

テンプレート作成

ドキュメントのスタイルを調整したテンプレートを作成し、変換時に参照することで同じスタイルのドキュメントを作成できます。テンプレートを作成しなくても変換は可能です。

  • デフォルトで参照するテンプレートファイルはreference.docx
  • 作成済みのdocxファイルからでもテンプレートが可能
# 参照用テンプレート作成
$ pandoc --print-default-data-file reference.docx > reference.docx

pandocでmarkdown形式ファイルからwordドキュメント(*.docx)を作成する | DevelopersIO

markdownをpandocでdocxに変換する - 理系学生日記

[Pandoc] markdownで論文として通用するレベルのwordへの変換を頑張る | あきとしのスクラップノート

markdownからdocxへの変換

下記コマンドで.md から.docx に変換できます。

  • -o オプションで変換後のファイル名を指定する
  • 変換されたファイルは変換元と同一ディレクトリに出力される

  • 指定するファイルは拡張子まで書く事でファイル形式を指定できる

# markdownからdocxの変換
$ pandoc 変換元ファイル.md -o 変換後のファイル名.docx

# reference.docxテンプレートを参照してdocxに変換する
$ pandoc 変換元ファイル.md --reference-doc=reference.docx -o 変換後のファイル名.docx

変換時の注意点

変換時には下記に注意してください。

  • 参照するdocxファイルはデフォルトのスタイルを変更しないとスタイルが反映されない
    • web版のMicroSoftのWordアプリはデフォルトのスタイルを変更できない
    • Googleドキュメントは文字色のデフォルト設定はできない
  • 参照するdocxファイルは変換元ファイルと同一ディレクトリに配置する
  • User data directory:に参照ディレクトリと参照ファイルを作成する必要は無い

まとめ

テンプレートを作成したがスタイルが反映されずに結構ハマってしまいました。普段、Wordは触ることが無かったんのでスタイルの当て方も含めて良い経験になりました。

参照

jgm/pandoc: Universal markup converter

pandoc-jp/pandoc-doc-ja: Pandocユーザーズガイド日本語版(Pandoc 2.7.2+準拠)のリポジトリ by Sphinx

Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会

pandocでmarkdown形式ファイルからwordドキュメント(*.docx)を作成する | DevelopersIO

markdownをpandocでdocxに変換する - 理系学生日記

[Pandoc] markdownで論文として通用するレベルのwordへの変換を頑張る | あきとしのスクラップノート