355


Ubuntu 14.04LT を利用しています。

下記のとおりpandocをインストールしたのですが、  
出力されたpdfを開くと、slide.md の日本語の部分が表示されていませんでした。  
tex を使うのは初めてなので、よくわかっていません。  
対処方法わかれば教えてください。

[code]

    sudo apt-get install pandoc
    sudo apt-get install texlive
    sudo apt-get install texlive-xetex
    
[/code]

コマンド

[code]

     pandoc slide.md -t beamer -o out.pdf --latex-engine=xelatex
    
[/code]

slide.md

[code]

    % Slide Sample
    % toshi0383
    % 2014/12/03 Wed.
    
    # hello
    ## さんぷるです
    
    # yellow
    
[/code]

あと一歩な感じはするんですが、  
ここまでくるのにも結構調べて時間を使ってしまい、  
結局全部英語で書いてプレゼンしてしまいました。  
tex の日本語環境がここまで整っていないとは。。  
次回までに日本語環境を構築できればなあと思っています。


CC BY-SA 3.0
2014-12-03T15:11:31.087
319
2018-12-05T10:45:35.250
2018-12-05T10:45:35.250
19110
257
question
markdown latex pandoc
pandoc でmarkdown から PDF形式（日本語）のスライドを作る方法を教えてください


いろいろと試してみました。最適なやり方かどうかはわかりませんが出力する事が出来ました。

結論から言えば言語パック入れた上で

  * プリアンブル用意して読み込ませる
  * 出力をtex(`-o tex`)にして、別途用意しているテンプレートにincludeする

のいずれかになると思います(fontthemeではうまくできませんでした)。

「プリアンブル用意して読み込ませる」方の手順を以下に示します。新規インストールしたてのUbuntu 14.04 LTS desktopで試しました。
多分13.04でも言語パックが入ったので行けると思います。

ただし、もっといいやり方があるかもしれません。

* * *

# 質問の状態にするためのインストール

質問に書いてくれいていますが、この回答で手順が完結できるように引用させていただきます。 私はOSを入れた直後にこの 3つをインストールしました。

[code]

    sudo apt-get install pandoc texlive
    sudo apt-get install texlive-xetex
    
[/code]

この状態で、質問にある slide.md を beamerテンプレートでスライド形式にできますが日本語はでません。

[code]

    pandoc slide.md -t beamer -o out.pdf --latex-engine=xelatex
    
[/code]

# beamerを使わない状態で日本語を出力する

> メモ：少なくとも私の環境ではこの状態でテンプレートを指定せずにpdf出力すると以下のエラーになっていました。後述する
> lualatexだとエラーにはなっていなかったように思います
[code]

>     $ pandoc slide.md -o out.pdf --latex-engine=xelatex
>     pandoc: Error producing PDF from TeX source.
>     ! LaTeX Error: File `etoolbox.sty' not found.
>     -以下略-
>  
[/code]

>
> その後言語パッケージを入れたらいつの間にかでなくなっていました。依存で一緒に入ったのかもしれません。

とりあえず日本語のpdfを出せるようにしましょう。

そのために言語パッケージを入れてみました。1000MBと巨大ですので空き容量にも注意してください。

[code]

    sudo apt-get install texlive-lang-cjk
    
[/code]

インストールが終わると、テンプレートなしでもエラーはでなくなりました。日本語はまだ出力されません。

[code]

    pandoc slide.md -o out.pdf --latex-engine=xelatex
    
[/code]

`-V`を使って、(pandocではなく、latexのオプションとして)追加の設定をバイパスします。

[code]

    pandoc slide.md -o out.pdf --latex-engine=xelatex -V mainfont=IPAPGothic
    
[/code]

※ IPAフォントは`texlive-lang-cjk`によってインストールされます。

これで日本語も表示可能な普通のpdfが出力できたと思います。 `-V`
は指定するパラメータ毎に追加します。たとえばfontsize(10pt/11pt/12pt)も指定するなら以下の様にします。

[code]

    pandoc slide.md -o out.pdf --latex-engine=xelatex -V mainfont=IPAPGothic -V fontsize=11pt
    
[/code]

# beamerを指定する

日本語pdfが作成できたので、beamerテンプレートを指定してみます

[code]

    pandoc slide.md -t beamer -o out.pdf --latex-engine=xelatex -V mainfont=IPAGothic
    
[/code]

出力されません。
このmainfont指定をbeamer(beamerのドキュメントクラス)は無視する様で、fontthemeなども指定してみたりしたんですが、
結局オプション指定からは今の私では解決できませんでした。

# プリアンブルを用意して適用する。

結局以下の様なプリアンブルを用意してpdf作成時に取り込ませることで日本語で表示されるようになりました。
プリアンブルは普通にtexを作った時にドキュメントクラスとbeginの間に書くものです。

`-t beamer`の場合は
`\documentclass`は多分`[beamer]`になって、pandocで出力するtexは`\begin`と`\end`の間の部分です。
pandocが作り出すtexの手前でさまざまな設定を行う事ができ、また、全てではないようですがドキュメントクラスで設定されている内容も変更できます。  
beamerにフォント指定無視されるので設定上書きできそうなここ（プリアンブル）で設定してみましょうという事です。

ともかく `beamer-preamble-xelatex.tex` を作成しテキストエディタで以下の様にします。
(ファイル名はわかりやすさのために長くなっていますので、必要なら適宜短くしてください） 大文字小文字にも注意してください。

[code]

    \setmainfont{IPAPMincho}
    \setsansfont{IPAPGothic}
    \setmonofont{IPAGothic}
    \XeTeXlinebreaklocale "ja"
    
[/code]

作成したプリアンブルをpandocで変換時に取り込ませます。`-V`で指定していたフォントは必要がないので削除しました。

[code]

    pandoc slide.md -t beamer -o out.pdf --latex-engine=xelatex -H beamer-preamble-xelatex.tex
    
[/code]

これで私の環境では日本語が出力されたスライド形式のpdfが作成できました。
なおpreambleのファイルをslide.mdと別の場所に置いた場合は正しくパス指定してください。

このファイルは使いまわせますので参照しやすい場所の置いておけばよいと思います。

# その他

lualatex (パッケージ名 texlive-luatex ）というのもあるようですね。
こちらを使う場合にはプリアンブルの最後のxelatex用の行を削除すれば作成できます。

（lualatexだと、しおりの日本語が化けてしまいますがそこはちょっと詳しく調べてないのでわかりませんでした）

ちょっと説明が細かすぎたかもしれませんが、体系的な説明もみつけられなかったのと自分の備忘もかねて丁寧に書いてみました。


CC BY-SA 3.0
2014-12-04T12:27:17.613
355
2014-12-04T12:38:13.887
2014-12-04T12:38:13.887
728
728
319
answer