きはらだよ~

メモ帳代わりだったり自己満足でなんか書いたりします

化学系だけど Markdown でレポートを書いて Pandoc を使った

環境

  • Ubuntu 17.10
  • 日本語、というか UTF-8 使うよ

TL;DR

調整してえ!ってとき

pandoc hoge.md -o fuga.tex ってやってから、 piyo.tex のなかで \include{fuga}

そんなん知らんし適当に pdf 出してプレビューしたい

pandoc hoge.md --pdf-engine=lualatex -s -N -o fuga.pdf

必要だったら --filter pandoc-crossref やら --bibliography=piyo.bib やら documentclass=bxjsarticle やら

経緯

Word 持ってない貧乏学生なんで Google ドキュメントで頑張ってレポート書いてたんだけど、 参照とかいろいろ限界が来た

TeX やってみるか~

\begin とか \end とかめんどくね……?
PythonJavaScript (Standard Style) しか書いてないしインデントと {} 以上の手間は無理だわ……

Markdown でやって pandoc で変換したろ!w

インストール

これがかなりめんどくさかった。
やってみたあとのベストプラクティス(だろうと思う)を残しておくンゴ

sudo apt update
sudo apt install haskell-platform
cabal install pandoc pandoc-crossref pandoc-siteproc
export PATH='$PATH:/home/username/.cabal/bin'

# cabal install の待ち時間に他のターミナルでインストールしよう
sudo apt install texlive-full latexmk
tlmgr init-usertree
tlmgr update --self
tlmgr install mhchem chemfig bxjscls xkeyval type1cm luatexja ms file­hook l3kernel l3packages chemgreek
# まだあるかも

注:

  • tlmgr が依存関係とかそういうの全く気にしてくれない古き良きソフト(婉曲)なので足りんってエラーが出るたびに頑張って入れてね、入れすぎて何入れたかもはや覚えてません

  • texlive-full 入れるのやだ~!!!チャイ語とか使わんし!!!って思って sudo apt install texlive-latex-base だけにしたら後から色々入れないと全然動かなくてハゲた。
    苦労してでもミニマルに行きたいんだったら sudo apt install texlive-latex-base texlive-lang-japanese latexmk でのちのち tlmgr install を繰り返せばいいと思う。

書く

Pandoc 拡張 Markdown みたいなのがあるらしく、結構いろいろ書ける。

ここらへん参照

ヘッダに色々含めとくとなんか楽だった

---
title: タイトルだよ
documentclass: bxjsarticle
fontsize: 11pt
header-includes:
- \usepackage{luatexja}
  \usepackage{mhchem}
  \usepackage{chemfig}
  \hypersetup{colorlinks=false}
  \setatomsep{1.67em}
...

変換する

pdf に直で

pandoc hoge.md --pdf-engine=lualatex -s -N -o fuga.pdf
  • -N: 見出し (# h1 とか) に番号つけてくれる
  • -s: ヘッダとか読み取っていい感じに単体出力してくれる
    つけないと \begin{document} の中身だけしか TeX に変換してくれなくておかしくなるかもしれないしならないかもしれない

必要だったら --filter pandoc-crossref やら --bibliography=piyo.bib やら documentclass=bxjsarticle やら

意外とこれだけでも良い感じに出力してくれるのでプレビューとかなら全然耐える。
ただ eps とか読み込めんかったし(わかる人いたら教えてください)、画像の挿入がすごい位置に来てすごいって感じだったので提出時は↓にした

調整してえ!ってとき

pandoc hoge.md -o fuga.tex ってやってから、 piyo.tex のなかで \include{fuga}

じゃあ piyo.tex ってなんすかっていったら

\documentclass[11pt,a4paper]{bxjsarticle}

\usepackage{luatexja}
\usepackage{mhchem}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{chemfig}

\hypersetup{colorlinks=false}
\setatomsep{1.67em}
% chemfig の結合長こんぐらいが見やすかった
\setpagelayout*{top=18truemm,bottom=18truemm,left=21truemm,right=21truemm}
% 余白とかもいじれるよ

\def\tightlist{\itemsep1pt\parskip0pt\parsep0pt}

  \begin{document}
  \input{fuga}
  \end{document}

これで fuga.tex を弄りながら latexmk とかで変換してた。
色々書かな pandoc の吐き出してくれたものを変換できなかったりするのがつらいので、最初からこういうテンプレートあったら良いのになって思った。

感想

PROS

  • まあ書き慣れた Markdown でそれなりの文書ができるのは良いなと思った
  • Word とかと違って git 管理ができるよ、吹っ飛んでも大丈夫だね
  • のちのち卒論とかで使うし環境構築ぐらいはしといても良いんじゃないかな

CONS

  • 死ぬほど tlmgr でダウンロードしてこないといけない
  • pandoc 自体の設定が日本人向けじゃなく、面倒
  • eps 埋め込もうとしても無理ですって言われる
  • コマンドが長い
  • かゆいところに手が届かない(表とか)
  • 化学系だから結局 \begin{eqnarray} とか \ce とか \chemfig とか使いまくるし普通に TeX 書いてるやん……となる
    ちなこんなの書いた
\ce{
    \chemname{\chemfig{[:-30]*6(=-=(- (=[::60]O) (-[::-60]OCH_3))-(-OH)=-)}}{methyl salicylate}
    ->C[H2O]
    \chemname{\chemfig{[:-30]*6(=-=(- (=[::60]O) (-[::-60]OH))-(-OH)=-)}}{salicylic acid}
    + CH3OH}

サリチル酸メチルの加水分解反応
変換結果

結論

chemfig とか参照とか参考文献とか便利だけど、装置図とか電子移動とかめんどくさいし手書きでいいよ、手書きで。

オタクがゴニョゴニョ環境構築してゴニョゴニョ Markdown とも TeX ともつかない魔のファイルを編集していてる時間で実験の班の女の子は手書きで先輩のレポート写してルミナリエ行ったってさ。死にたいね。