Markdownでレポート執筆

日頃からMarkdownを使っていろいろと書いていると、レポートとかもMarkdownで書きたくなってきますよね。

というわけで、MarkdownでレポートいてTex形式に変換し、PDFに出力するための手順や必要なツールを紹介します。

この記事を参考にさせていただきました。


※追記(2016-11-02)

表が崩れる問題が発覚し、暫定的な対処法を記事にしました。こちらも参考にしてください。

環境

  • ubuntu 16.04 LTS 64bit版

Markdownを書く

まずはレポートの元となるMarkdownを書きます。

私はSublime Text3で以下のプラグインを使ってMarkdownを書いています。

  • OmniMarkupPreviewer
  • Monokai Extended
  • Markdown Extended
  • Table Editor

OmniMarkupPreviewerはMarkdownをブラウザでプレビューでき、リアルタイムで更新してくれるプラグインです。

デフォルトだとCtrl + Alt + O キーでプレビューしてくれます。

数式を書く場合、オプションでmathjaxを有効にしなければなりません。

    "mathjax_enabled": true,

Monokai ExtendedやMarkdown ExtendedはMarkdownのシンタックスハイライトを行うために必要です。

新しいファイルを拡張子.mdで作って、View-Syntax-Markdown-Markdownと選択し、シンタックスハイライトを有効にします。

また、Preference-Color Scheme-Monokai Extended-Monokai Extended Brightと選択し、カラースキームも設定しておきます。

これでMarkdownの編集ができました。プレビューしながらMarkdownを編集します。

PandocやTexをインストール

Pandocやtexのライブラリはaptでインストールできます。すごく重いですが全部入れましょう。

sudo apt-get install pandoc texlive-luatex texlive-latex-recommended \
                     texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra \
                     texlive-lang-japanese texlive-xetex

試行錯誤しながら入れたので、不要なパッケージがあるかもしれません。

もしかしたらtexlive-fullがあれば全て解決する気がしますが、重すぎて入れる気になりませんでした・・・

PandocでPDFに変換

いよいよTexに変換していきます。

まず、Texのスタイルファイルを作成しますが、以下のコマンドを実行します。

$ cp `kpsewhich ltjsarticle.cls` .
$ wget "https://raw.githubusercontent.com/yukpiz/dotfiles/master/latex/ltjsarticle.cls.patch"
$ patch -p0 < ltjsarticle.cls.patch
$ mv ltjsarticle.cls myltjsarticle.cls
$ sudo mktexlsr

このコマンド、最初はうまく行かなかったのですが、適切なパッケージを入れると動くようになりました。

もし kpsewhich ltjsarticle.cls で出力が何も帰ってこないようなら、ltjsarticle.clsはネットから探してくるのも手だと思います。(URL忘れました。すみません・・・)


markdownからtex形式のpdfへの変換は、以下のようなコマンドを使います。

sudo pandoc test.md -o test.pdf -V documentclass=myltjsarticle --latex-engine=lualatex

これでPDFができるのですが、私としては画像の大きさが画面いっぱいになってしまい気になりました。

そこで、シェルスクリプトを書いて少し調節しました。

md2pdf.sh

#!/bin/sh

temp="`basename $1 .md`.tex"

pandoc "${1}" -o "${temp}"
sed -ie s/includegraphics/includegraphics[clip,width=10.0cm]/g "${temp}"
pandoc "${temp}" -o "${2}" -V documentclass=myltjsarticle --latex-engine=lualatex

rm "${temp}"
$ sudo ./md2pdf.sh test.md test.pdf

今後もスタイルの調整を行っていこうと思いますが、もしかしたらltjsarticle.clsでうまいこといじれるかもしれません。

そのへんは今後調査ということで・・・

気をつけること

  • 画像はレポートの最後にまとめて載せないと出力PDFのレイアウトがおかしくなる
  • 大項目は#1つにして構造化しないとPDFのインデックスがおかしくなる
  • コードブロックに数式を書く方法は使えないっぽい($で囲む方は使える)
  • 数式に特殊文字を使うと文字化け
  • その他”〜”の文字は普通に書いてても文字化け
  • 図のキャプションは[]内に書く

おかしくなることも多いので、変換したら確認は必須になりそうですね。。

まとめ

Markdown→Tex→PDFに変換するだけなのに、めちゃめちゃ大変でした・・・

というかTex重すぎですw まぁ、出力はすごく綺麗なので、その辺りはさすがですね。

ただ、やはりMarkdownでレポートを書けるのは大きいですね。複雑な公文を書かない分、非常に楽です。

今後も少しづつ知見を増やして、快適レポート生活を送っていきたいと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする