mottox2 blog

Pandocを使ったWord組版のはじめ方

blog

thumbnail

Wordで組版をしていくにあたって、Wordのアプリケーション上で文章やサンプルコードを入力していくのは現実的ではありません。
見出しのスタイルを当てたり、シンタックスハイライトを手動で当てていくのはMarkdownになれた人間がやるべきことではありません。ツールにまかせるべきです。そこで利用するのがPandocというツールです。

はじめてのPandoc

Pandocとは?

Pandocはドキュメントの形式を変換するツールで、MarkdownやPDF、ePub、Wordなどの多くのフォーマットに対応しています。今回は、MarkdownからWordに変換する用途でPandocを利用します。

Pandoc - About pandoc

Pandocのインストール

Pandocは公式サイトからインストールします。

ターミナル(端末)から次のコマンドを入力して、バージョンが出力されたらインストールは成功です。

sh
$ pandoc -v

Pandocの実行

適当なMarkdownファイルを用意して、今回はentry.mdという名前で保存します。

コマンドラインで以下のコマンドを実行しましょう。

sh
pandoc entry.md -o result.docx

result.docxというワードファイルが生成されれば成功です。entry.mdに記述したマークダウンがWordファイルに変換されているはずです。

ただ、標準のテンプレートは少しダサく、そのまま印刷に回せるものではないと思います。Pandocにはカスタマイズしたテンプレートを利用する機能があるので、標準のテンプレートを次のコマンドで取り出します。

sh
pandoc --print-default-data-file reference.docx > reference.docx

その後、スタイルを整えた後に、次のコマンドでカスタマイズしたテンプレートを利用します。

sh
pandoc entry.md —reference-doc=custom-reference.docx -o result.docx

うまく動いていれば、カスタマイズしたテンプレートが適用できているはずです。

テンプレートに関しては、以下のポイントを意識作ると使いやすいテンプレートができます。

  • スタイル(見出し、本文)に対して、装飾を当てていく
  • スタイルの継承を利用する
  • ショートコード(ページ、章の表示)を利用する

参考

defaults.ymlの利用

設定が増えてくると、どんどん実行するオプションが増え長くなっていきます。これらのオプションはファイルから与えることも可能で「Default files
」と呼ばれています。

例えば、次のymlをdefaults.ymlとして保存し、次のコマンドを実行します。

default.yml
from: markdown+hard_line_breaks
to: docx
output-file: result.docx
input-files:
- entry.md

reference-doc: custom-reference.docx
sh
pandoc -d defaults.yml

このようにファイルに設定を落とすことで、コマンドの煩雑さも減り、管理がしやすくなります。

テンプレート

これらの設定を利用するためのテンプレートを用意したのでぜひお使いください。

mottox2/pandoc-word-starter: Pandoc template for docx

次のコマンドでWordファイルが生成されます。

sh
pandoc -d defaults.yml
B!
dev

jsx-presentationを使ってJSXでpptxファイルを生成する

週末にpptxファイルが生成できるスライド作成ツールのプロトタイプを作りました。 スライドエディタで作成したスライドをPowerPoint形式で出力できるようにした。 まだまだサイズやアスペクト

dev

Reactで寿司を回すタイピングゲームを作った

@dala00さんが企画している、1週間でテーマに沿ったWebサービスを作る #web1weekという企画に参加しました。今回は第二回の開催で「Like」というお題でした。 esaをより便利に使う

dev

esaをより便利に使うための拡張機能「Refined esa」をつくった

@dala00さんが企画している、1週間でテーマに沿ったWebサービスを作る #web1weekという企画に参加しました。今回は第二回の開催で「Like」というお題でした。 自分は「自分の好きなWe

Copyright © 2019 @mottox2 All Rights Reserved.