mieki256's diary



2014/09/19(金) [n年前の日記]

#1 [windows] Pandocを試してみたり

MarkdownからPDFへの変換をしてみたいと思ったので、そのあたりの変換もサポートしてる Pandoc とやらをインストール。環境は Windows7 x64。

インストール。 :

_dev-xconnecting: PandocをWindowsにインストールする を参考にして作業。 _Pandoc - Installing から pandoc-1.13.1-windows.msi をDLして実行。C:\Users\ユーザ名\AppData\Local\Pandoc\ にインストールされる。現バージョンの Pandoc は、ユーザ環境変数のPATHにインストール場所を自動で追加してくれる模様。pandoc -v と打ってバージョン表示されることを確認。

日本語で書かれた Markdown から PDF への変換には LuaLaTeX とやらが必要らしい。昨日 TeX Live をインストールしたので一緒に入ってるはず。lualatex --version と打ってバージョン表示されることを確認。

変換。 :

_MarkdownとPandocを用いた簡易Latex環境の構築 - Qiita のMarkdownファイル(.md)をコピペで作成して実験。
pandoc ex1.md -o output.pdf -V documentclass=ltjarticle --latex-engine=lualatex
実行してみたら、かなり時間がかかった。ちょっとしたテキスト量しかないのに、数分かかってる…。と思ったら、二度目の作成は10秒ぐらいで終わった。なんでだろ。最初の実行時に必要なファイルを自動生成でもしていたのだろうか。

出力された PDF は…。うーん。
  • Markdown は本来テーブル(表)をサポートしてないけど、Pandoc は表もサポートしてるらしい。そこはありがたいけど…。
  • ページ余白が無駄に多く取られてるような気がする。ページの真ん中あたりに、ポツンと文章が表示されてる感じ。
  • 太字やイタリック体は表現されなかった。IPAexフォントしか設定してないから、だろうか。
  • 画像や表は、その場に表示されず、ページの下の方に別途配置されてしまっている。論文作成を考慮した仕様なのかしら。
個人的には、あまりよろしくない結果に。

別のオプション。 :

ググってたら、 _Pandoc - TeX Wiki で、
pandoc ex1.md -o output.pdf -V documentclass=ltjarticle --latex-engine=lualatex
ではなく、
pandoc ex1.md -o output.pdf -V documentclass=ltjsarticle --latex-engine=lualatex
を指定してる例を見かけた。

試してみたら、件のページで紹介されているのと同じエラー。参考にして、
C:\texlive\2014\texmf-dist\tex\luatex\luatexja\ltjsarticle.cls
をコピーして、myltjsarticle.cls を作って、修正して、
pandoc ex1.md -o output.pdf -V documentclass=myltjsarticle --latex-engine=lualatex
を指定してみたけれど…。結果は似たような感じだった。

マージン指定。 :

ページの余白が大き過ぎるのが気になったので指定方法を探してたのだけど。以下のページでそれらしい記述が。

_天地有情 Markdownで遊ぼう
_複数の Markdown を 1枚の PDF に出力 - Qiita

preamble.tex という TeXファイルを作成。
\paperwidth210mm
\paperheight297mm
\usepackage{luatexja}
\usepackage[ipa]{luatexja-preset}
\usepackage{amsmath}
\usepackage{graphicx,color}
\usepackage[margin=2cm,truedimen]{geometry}
\def\baselinestretch{1.1}
\parindent=0pt
たぶん、margin=2cm てのがページ余白だと思うのだけど。

以下のような指定をするらしい。
pandoc ex1.md -o out.pdf -V documentclass=ltjltxdoc -H preamble.tex --latex-engine=lualatex -N
documentclass が、ltjarticle じゃなくて ltjltxdoc になってるのがよくわからんけど、とりあえずコレでページ余白が変更できた。

あるいは、 _r - Set margin size when converting from Markdown to PDF with pandoc - Stack Overflow によると、-V geometry:margin=1in てな感じのオプション指定でもOKらしい。
pandoc ex1.md -o out1.pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:margin=1cm
ただ、件のページでは、「Pandoc 1.9.1.1 だとそのオプションは働いてくれねえ」という話もあって…。手元の Pandoc は 1.13.1.1 なのだけど、これだと指定が有効になってるな…。ltjarticle や lualatex を指定しているから、オプションが有効になっているのだろうか?

ところで、マージンを変更したら、図や表が本来の位置に配置されたようで。どうやらマージン領域にはみ出してしまうほど大きい画像・表については、改ページした先頭部分に再配置される、みたいな仕様がありそうだなと。

一旦TeXで出力。 :

一旦、Markdown → TeX をしてから、TeX → PDF ができないかと試してたのだけど…。

一応、以下の指定で、TeX っぽいファイルが出力されたように見えたのだけど。
pandoc ex1.md -o ex1.tex
あるいは、
pandoc -s ex1.md -o ex1.tex

しかし、ここから先がダメ。
  • uplatex ex1.tex はエラーが出る。
  • lualatex ex1.tex は一見通ったように見えて dvipdfmx ex1.dvi してみると、PDFには意味不明の英文メッセージしか出てこない。
ワケワカラン。

odtファイルに変換。 :

Markdownファイルを、.odt に ―― OpenOffice Writer等で開けるOpenDocumentテキストに変換してみたり。
pandoc -o ex1.odt ex1.md
すんなり変換できた。しかし、フォントが、Lucida Sans Unicode なるフォントになってる…。

一応、 _OpenOffice使ってみた の中で、フォント置換テーブルを使って Lucida Sans Unicode を別のフォントにする、てな対処方法が紹介されてた。まあ、これでできなくもないけれど…。

「スタイルと書式設定」を表示して、標準スタイル、見出し、本文、First paragraph 等のフォント設定を変更(各スタイルを右クリックして「変更」→フォント)していくほうが真っ当な対処のような気もする。しかし、ちょっと面倒くさいよなと…。

_Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association を眺めてたら、--reference-odt=FILE というオプションで、スタイルを決めるodtファイルを指定できるらしい。以下を実行したところ、リファレンスファイルを生成できた。
pandoc --print-default-data-file reference.odt > reference.odt
この reference.odt を開いて、「スタイルと書式設定」で好みの設定にして保存。
pandoc -o ex1.odt ex1.md --reference-odt=reference.odt
といった感じで実行したら、reference.odt と同じスタイル設定で .odt が出力された。

何度も出力を繰り返す場合は、リファレンスファイルを作成・設定しておいて、渡してやるのがヨサゲかも。

全然関係ないけど、LibreOffice Writer って「水平線」の挿入がメニュー項目に無いんだけど…。一応、「---」と打ってEnterを叩けば水平線が入ってくれるけど、調整方法が分からん…。

_LibreOffice 4.0 では水平線(横線)の挿入がなくなった | 平原眺望 によると、外枠で水平線を表現するのが妥当っぽい。どうしてメニュー項目から削っちゃったんだろう…。

印象。 :

Pandoc、面倒臭いです。サクッと変換してくれるのかなと期待したら、全然そうじゃなかった…。

最終的にPDFさえ出来上がればそれでいいなら、Word や OpenOffice/LibreOffice Writer を使うべきですな…。Pandoc でPDF変換を試みると、エラーは出るわ、各種指定が分からんわ、TeX関係のファイルだけで4GBもHDDを占拠されるわで、ちとゲンナリ。もっとも、Pandoc の問題じゃなくて、全て TeX の問題のような気も。

あるいは、CubePDF等、PDFを出力できる仮想プリンタドライバを使ってしまうとか。試しに、MarkdownPad 2 でMarkdownを書いて、html印刷時にCubePDFを指定してPDF出力してみたら、これも意外とアリな感じで。

もちろん、一つのソースから複数のフォーマットに変換したい場面や、何かしら自動化する際は、Pandoc が便利なのでしょうけど。それ以外の場面で、あえてコレを選択する必要はないよなと…。フツーはWord使うわ…。

なんとなく、 _「奥が深い症候群」 という言葉が脳裏をよぎったりして。

以上、1 日分です。

過去ログ表示

Prev - 2014/09 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project