pandocを使ってMarkdownでレポートを書く

Tips
投稿日2019年06月27日 10:00

概要

最近、WordではなくMarkdown形式で書いた文章を使ってレポートなどの文書を作成したいという考えが大きくなってきました。

今回は、Pandocというツールを使ってMarkdownで書かれたファイルをPDFなどの文書に変換し、レポートを作成する方法を紹介します。

環境

  • macOS Mojave
  • Pandoc 2.7.3

Pandocとは

Pandocは、様々な形式で書かれたファイルを変換するためのツールです。
例えば、Markdownで書かれたファイルをPDFに変換する事ができます。
ちなみに、Pandocでは直接MarkdownからPDFに変換する事ができず、変換の過程でTex形式やLibreOfficeなどで使用されるodt形式、Wordで使われるdocx形式、HTMLなどを生成します。
そのため、例えばPandocでPDFをそのまま作成するのではなく、途中のdocx形式を作成してそれを元にデザインを手動で手直ししてPDFを作成するということもできます。
このような文書のデザインのことを組版(くみはん)といい、古くから組版のために使われているものとしてはTexというものがあります。

今回は、そのままでも綺麗に文書を作成できるTexを使って、デザインの手直しをせず、そのままMarkdownからPDFを作成する方法を紹介します。

インストール

Pandocをインストールします。
インストール方法はいくつかありますがWindowsでは、次のリンクからインストーラを使ってインストールが楽でしょう。

https://github.com/jgm/pandoc/releases

ダウンロードするファイル名は、windows-x86_64というものが入っているものをインストールすれば大丈夫でしょう。

macOSであれば、Homebrewがインストールされていれば次のコマンドでインストールできます。

brew install pandoc

もしHomebrewがインストールされていなければWindowsと同じようにインストーラを使ってインストールしましょう。

Linuxであれば、パッケージマネージャを使ってインストールできることがほとんどです。パッケージ名はpandocなので、それぞれのパッケージマネージャに対応したコマンドでインストールしましょう。

使い方

最初にPDFを作成したいMarkdownを用意します。

今回は次のようなMarkdownのファイルを用意しました。

---
documentclass: ltjsarticle
title: Markdownから作成した文書例
author: 佐藤太郎
---

# テスト1
Pandocを使えばこのようなMarkdownで書かれた文書からレポートを作成する事ができます。
皆さんも作ってみてはどうでしょうか

## テスト1.1

# テスト2

上の---で囲まれた部分はYaml形式で書かれたPandocが使用するメタ情報です。
全てTexで使用する情報で、例えばtitleに指定している情報はTexファイルの生成の際にTexのtitleタグに埋め込まれます。

これをsample.mdというファイル名で保存します。
保存したら、次のpandocコマンドを使用してPDFのファイルを作成します。

pandoc sample.md -o output.pdf -V indent=true --pdf-engine=lualatex -N

pandocコマンドでは、-o output.pdfで出力の際のPDFファイル名を指定しています。
-V indent=trueでは、段落の字下げを行なっています。この時indent=trueとしていますが、何かしらの値が入っていればいいので、trueである必要はありません。
--pdf=engine=lualatexでは、途中で生成されるTexファイルについてlualatexの形式で作成するように指定しています。
-Nでは、1. 2.のように章番号を表示するように指定しています。

実行すると次のようなPDFファイルがoutput.pdfという名前で生成されるはずです。

簡単にMarkdown形式で書かれた文書からPDFのファイルが作成できる事が分かったと思います。

組版について

このままでは、細かい組版(レイアウト)ができません。
しかし、その辺りについて今回は詳しく説明しません。
なぜかというと、どの組版を使用するかにもよりますが、説明するだけで本が出来上がるような説明量になるためです。

ただ、私が現在使用しているテンプレートファイルについては追々ブログ等で紹介できたらなとは考えているので、期待せず待ってもらえたらと思います。

さいごに

あまり組版にこだわらなければ、Pandocを使う事で簡単にMarkdownからPDFの文書を作成できたと思います。

皆さんのレポートなどの文書作成に役だててもらえれば幸いです。