色々なテキストを色々なフォーマットに変換できるPandocというツールがあります。 今回は、これを使ってMarkdownで書いたテキストをPDFに変換する方法を説明します*1。
環境はDebian GNU/Linuxのsidを想定しています*2。
必要なパッケージをインストールします。非常に多くのパッケージをインストールするので時間がかかります。
$ sudo apt-get install -y texlive-full pandoc ruby rake
次のコマンドを実行して動作確認します。
$ pandoc -o test.pdf --latex-engine=lualatex test.md
そのままでは日本語を含むテキストをPDFに変換できないのでtest.mdには日本語を含まないようにします。 これで日本語を含まないテキストをPDFに変換できることが確認できました。
日本語を含むテキストをPDFに変換するためにPandoc - TeX Wikiで紹介されている対策をします。
$ pandoc -o test-ja.pdf --latex-engine=lualatex test-ja.md
これで日本語を含むテキストをPDFに変換することができました。
Pandocで使えるMarkdownの記法についてはpandoc_markdown(5)やPandoc ユーザーズガイド 日本語版を参照してください。
箇条書きや表組み等、一通り必要なものは揃っています。
生成したPDFを納品用ドキュメントとするためには目次を付けたり、日付を入れたりして、体裁を整える必要があります。 体裁を整えるためにはpandocコマンドにいくつかオプションを付ける必要があります。
以前、この方法でレポートを提出したプロジェクトでは以下のようなRakefileを使用しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
require "rake/clean" MD_FILES = FileList["*.md"] PDF_FILES = MD_FILES.map{|file| file.ext(".pdf") } task :default => :pdf task :pdf => PDF_FILES rule ".pdf" => ".md" do |t| sh "pandoc", "-f", "markdown+ignore_line_breaks", "-o", t.name, "--table-of-contents", "--toc-depth=3", "-V", "documentclass=myltjsarticle", "-V", "classoption=titlepage", "--latex-engine=lualatex", t.source end |
このRakefileでpandocコマンドに指定しているオプションは以下の通りです。
-t
オプションなどを使います。
-V
オプションに指定可能な値を調べるには次のコマンドを使用します。
$ pandoc -D latex | lv
このコマンドで出力されるソースを読んで、利用可能なオプションを見つけて使います。
利用可能なオプションを見つけるにはLaTexの知識が必要ですが、$if(...)$
が使われているあたりを見ると、使われている値の名前がわかります。
以下のように、タイトル、著者、日付を表紙に入れることができます。
% Pandoc 調査報告書 % Taro Yamada <yamada@example.com> % \today # 概要 Pandocとは。。。 ## 使い方 Pandocは以下のようにして使う。 # まとめ 以上よりPandocは。。。
YAMLフォーマットでメタデータを書く方法もあるようですが、手元では上手く動作させることができていません。
Pandocを使ってMarkdownで書いたテキストをPDFに変換して納品用ドキュメントを生成する方法を紹介しました。
PDFの生成には少し時間がかかりますが、綺麗に出力できるので納品用のドキュメントをテキストエディタで書きたい人は検討してみてはいかがでしょうか。