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 から PDF への変換には LuaLaTeX とやらが必要らしい。昨日 TeX Live をインストールしたので一緒に入ってるはず。lualatex --version と打ってバージョン表示されることを確認。
◎ 変換。 :
_MarkdownとPandocを用いた簡易Latex環境の構築 - Qiita
のMarkdownファイル(.md)をコピペで作成して実験。
出力された PDF は…。うーん。
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ファイルを作成。
以下のような指定をするらしい。
あるいは、 _r - Set margin size when converting from Markdown to PDF with pandoc - Stack Overflow によると、-V geometry:margin=1in てな感じのオプション指定でもOKらしい。
ところで、マージンを変更したら、図や表が本来の位置に配置されたようで。どうやらマージン領域にはみ出してしまうほど大きい画像・表については、改ページした先頭部分に再配置される、みたいな仕様がありそうだなと。
_天地有情 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 -Ndocumentclass が、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 っぽいファイルが出力されたように見えたのだけど。
しかし、ここから先がダメ。
一応、以下の指定で、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テキストに変換してみたり。
一応、 _OpenOffice使ってみた の中で、フォント置換テーブルを使って Lucida Sans Unicode を別のフォントにする、てな対処方法が紹介されてた。まあ、これでできなくもないけれど…。
「スタイルと書式設定」を表示して、標準スタイル、見出し、本文、First paragraph 等のフォント設定を変更(各スタイルを右クリックして「変更」→フォント)していくほうが真っ当な対処のような気もする。しかし、ちょっと面倒くさいよなと…。
_Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association を眺めてたら、--reference-odt=FILE というオプションで、スタイルを決めるodtファイルを指定できるらしい。以下を実行したところ、リファレンスファイルを生成できた。
何度も出力を繰り返す場合は、リファレンスファイルを作成・設定しておいて、渡してやるのがヨサゲかも。
全然関係ないけど、LibreOffice Writer って「水平線」の挿入がメニュー項目に無いんだけど…。一応、「---」と打ってEnterを叩けば水平線が入ってくれるけど、調整方法が分からん…。
_LibreOffice 4.0 では水平線(横線)の挿入がなくなった | 平原眺望 によると、外枠で水平線を表現するのが妥当っぽい。どうしてメニュー項目から削っちゃったんだろう…。
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使うわ…。
なんとなく、 _「奥が深い症候群」 という言葉が脳裏をよぎったりして。
最終的にPDFさえ出来上がればそれでいいなら、Word や OpenOffice/LibreOffice Writer を使うべきですな…。Pandoc でPDF変換を試みると、エラーは出るわ、各種指定が分からんわ、TeX関係のファイルだけで4GBもHDDを占拠されるわで、ちとゲンナリ。もっとも、Pandoc の問題じゃなくて、全て TeX の問題のような気も。
あるいは、CubePDF等、PDFを出力できる仮想プリンタドライバを使ってしまうとか。試しに、MarkdownPad 2 でMarkdownを書いて、html印刷時にCubePDFを指定してPDF出力してみたら、これも意外とアリな感じで。
もちろん、一つのソースから複数のフォーマットに変換したい場面や、何かしら自動化する際は、Pandoc が便利なのでしょうけど。それ以外の場面で、あえてコレを選択する必要はないよなと…。フツーはWord使うわ…。
なんとなく、 _「奥が深い症候群」 という言葉が脳裏をよぎったりして。
[ ツッコむ ]
以上、1 日分です。