markdownの原稿を、pandocを使って、Texのbeamerを利用して、プレゼンスライドPDFに変換

  • 45
    Like
  • 0
    Comment
More than 1 year has passed since last update.

ひどいタイトルです。

markdownは便利です。テキストエディタで編集できるし、覚えることも少なくて済むので楽です。そんなときPacdocというのを使うと、markdownをMS Power Point(PPT)で作るようなスライドにできる、という記事を読みました。markdownで原稿を書くと自動的にレイアウトをしてくれるようです。ということで、チャレンジしてみました。

必要なもの

以下のインストールが必要です。

pandocはWindows用インストーラーがあります。インストール後に、コマンドプロンプトなどでバージョンをチェックして大丈夫なら、下記の様に表示されます。わすれましたが、たぶんインストーラーがPATHは通してくれていると思います。

バージョン確認コマンド
pandoc -v

こんな感じで表示されます。

バージョン確認表示例
C:\temp\test> pandoc -v
pandoc.exe 1.13.1
Compiled with texmath 0.8, highlighting-kate 0.5.8.5.
Syntax highlighting is supported for the following languages:
    actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
    clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
    diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
    fortran, fsharp, gcc, gnuassembler, go, haskell, haxe, html, ini, isocpp,
    java, javadoc, javascript, json, jsp, julia, latex, lex, literatecurry,
    literatehaskell, lua, makefile, mandoc, markdown, matlab, maxima, metafont,
    mips, modelines, modula2, modula3, monobasic, nasm, noweb, objectivec,
    objectivecpp, ocaml, octave, pascal, perl, php, pike, postscript, prolog,
    pure, python, r, relaxngcompact, restructuredtext, rhtml, roff, ruby, rust,
    scala, scheme, sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo,
    verilog, vhdl, xml, xorg, xslt, xul, yacc, yaml
Default user data directory: C:\Users\username\AppData\Roaming\pandoc
Copyright (C) 2006-2014 John MacFarlane
Web:  http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

問題はTexです。Texのインストールは、昔は結構たいへんでした。ということで、いろいろ心配しながら、TexLive 2014をインストールします。私はTexを使用するのは大学卒業以来です。インストーラーには、ネットワーク越しにインストールするものと、インストールディスクのisoを丸ごと落としてインストールするものがあります。私はネットワークのものを使用しました。Texとして使用する場合は、いろいろ設定がいるようですが、今回はPandocから呼び出して使うので、ここでは特に設定はしません。

スライドmarkdownの作成

スライドにする原稿を用意してみます。markdownで記述しますが、最初の3行は、%を書いて、タイトル、作成者、日付を記入する決まりになっています。

とりあえず短めのものを作ってみます。

slides.md

% タイトル
% 作成者
% 日付

# h1タグで一枚

文章は平打ちします。タイトルページは自動で生成されるので、このスライドは2枚目です。


# リストもつくれます

記号のリスト

* 書き方は同じです
* いろいろできるんです

数字のリスト

1. 数字も使えます
1. 自動で連番になります。

# ボックス表示

\begin{exampleblock}{exampleblock}
これはTexで記述
\end{exampleblock}
\begin{alertblock}{alertblock}
テーマによって表示されません
\end{alertblock}
\begin{block}{block}
リスト表示
\begin{itemize}
\item リストもかけます
\end{itemize}
\end{block}

テキストエディタ等で作成して、slide.mdという名前で保存します。これを変換してみます。

Texのヘッダファイルの作成

その前に、このままだとPDFにしたとき日本語が消えてしまいます。これはかなり困りましたが解決策が書いてあるサイトを発見しました。

rinx / h-luatexja.tex
https://gist.github.com/rinx/8644437

このサイトの設定ファイルを使わせていただきます。同じフォルダに下記のファイルを作成して下さい。名前は、何でも良いのですが、上記のサイトにしたがって、h-luatexja.texとしておきます。

h-luatexja.tex
\usepackage{luatexja}
\hypersetup{unicode=true}

日本語を表示させるには、最低限この2行が必要です。pandocは、markdownを、一旦Texに変換して、それからTexをPDFに変換します。もしも、Texに関して設定が必要な場合はこのファイルに記述しておきます。ただし、なんでもかんでもかけるわけではないようで、テーマなどはオプションで指定します(後述)。

pandocによる変換

コマンドプロンプトで、slide.mdを保存したフォルダに移動して下記のコマンドを実行します。下記のコマンドだとoutput.pdfというPDFファイルに出力されます。

pandoc slides.md  -o output.pdf --latex-engine=lualatex -t beamer -V theme:Madrid -V colortheme:seahorse -V fontsize:20pt -H h-luatexja.tex

長くて画面では改行されちゃっているかもしれませんが、一行です。オプションの意味は下記の通りです。

オプション コメント
(必要なし) slide.md 入力ファイル名
-o output.pdf 出力PDFファイル名
--latex-engine =lualatex 使用するLatexの指定
-t beamer 出力形式の指定
-V theme:Madrid スライドのスタイル(テーマ)を指定
-V colortheme:seahorse スライドのカラーを指定
-V fontsize:20pt フォントの基本サイズ
-H h-luatexja.tex ヘッダファイルのファイル名指定

いろいろなサイトを読んで寄せ集めました。わかりにくいところを別に解説します。

--latex-engine=lualatex

=の前後に空白は入れません。latexにもいろいろあります。日本語を表示するためにはplatexにするのかと思ったりしたのですが、pandocの場合は日本語を含む文書の場合はlualatexを指定するのが無難ということです。

-t beamer

-tは出力形式を指定します。スライド形式のPDFを指定するときはbeamerを指定します。ちなみにpandocで通常の文書形式のPDFを出力するときは指定する必要はありません。

書式の設定

pandocはmarkdownで書かれた原稿をいったんtex形式に変換し、それをtexプログラムがPDFに変換します。texの書式を記述する場合は下記の方法があります。

  • コマンドラインで変換時に-Vオプションを使って、指定する。
  • ヘッダファイルを別に用意してその中に書く
  • markdown中に記述する

ものによってはどの方法でも良いようですが、特定の方法で指定しないとだめなものもあるようです。まず、スライドの形式(テーマ)と色をしていしますが、これは-Vで行います。テーマとカラーの組み合わせの表示例は下記のサイトを見て下さい。

beamer-theme-matrix

ここでは、テーマはMadrid、カラーはseahorseを選んでいます。これらは、-Vオプションで指定します。

デフォルトでは字が小さいためフォントの大きさも指定します。-V fontsize:20ptというようにポイントで指定します。よくわからないのですが、フォントサイズはなんでもよいのではなく、8pt, 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, 20pt から 選んで指定します。省略時は 11ptになるようです。

オプションで与えられないものは、ヘッダファイルにTex形式で記述します。-H h-luatexja.texの部分です。

できあがりPDF

こんな風にできあがります。

スライド 1
slide01.png

スライド 2
slide02.png

スライド 3
slide03.png

スライド 4
slide04.png