LaTeXがきらいです

理系ならほとんどが TeX による組版を経験したことがあると思う。
まぁ Microsoft Word とか 手書き (弊学科も1年生のときは手書きでした)とかでレポートを作成しているところもあるけど。
ところで TeX は好きですか? 多くの人はNoと答えると思う。
なぜなら、 TeX は少し番号リストとかを使おうとするだけで記述が煩雑だし、特に数式を表現するとき {} が何重にもネストされていてコンパイルエラーの温床となるしであまり良い思いがないのも事実。

そこで今回は Pandoc なるツールを紹介しようと思います。(通販風)
PandocMarkdown, HTML, LaTeX, reStructuredText などを様々な形式(Markdown, reST, HTML, LaTeX, Word, PDF …)に変換出来るドキュメント変換ツールです。

この Pandoc を利用して オレオレMarkDown→PDF変換スクリプトm2p を作りました。これでレポート書く速度倍ぐらいになってるはず。
流れはこうです。

  1. report.mdreplace.rb によってプリプロセス
  2. Pandoc によって report.mdreport.tex
  3. report.tex をテンプレートである main.tex に埋め込む
  4. main.tex をコンパイル、PDF生成

中身も少し見てみよう。

m2p.sh(抜粋)

# md -> tex by using pandoc
if [ "$DEBUGGING" = "TRUE" ]; then
  pandoc ${FILENAME}_m.md -o ${FILENAME}.tex > /dev/null
else
  pandoc ${FILENAME}_m.md -o ${FILENAME}.tex
fi
 
# delete "\tightlist"
sed -i '' '/\\tightlist/d' ${FILENAME}.tex
 
# $1.tex plant into main
sed -i '' -e s/\\include\{.*\}/\\include\{${FILENAME}\}/ main.tex
 
# compile main.tex
if [ "$DEBUGGING" = "TRUE" ]; then
  platex -halt-on-error -interaction=nonstopmode -file-line-error main.tex
else
  platex -halt-on-error -interaction=nonstopmode -file-line-error main.tex > /dev/null
fi
 
# dvi -> pdf
dvipdfmx main.dvi
mv main.pdf ${FILENAME}.pdf
 
# remove files
rm ./${FILENAME}_m.md
rm ./*.dvi
rm ./*.out
rm ./*.log
rm ./*.aux

replace.rb(抜粋)

# @ ~~~ => title
buffer.gsub!(/^@(.*)$/, '')
title = $1
 
# $< ~~~ >$ => equation
buffer.gsub!(/\$</, '\begin{equation}')
buffer.gsub!(/>\$/, '\end{equation}')
 
# =< ~~~ >= => eqnarray
buffer.gsub!(/=</, '\begin{eqnarray}')
buffer.gsub!(/>=/, '\end{eqnarray}')
 
# `< ~~~ >` => lstlisting
buffer.gsub!(/^\`<(.*)$/, '\begin{lstlisting}[numbers=left, caption=\1, frame=single]')
buffer.gsub!(/^>\`/, '\end{lstlisting}')
 
# *< ~~~ >* => thebibliography
buffer.gsub!(/^\*<$/, '\begin{thebibliography}{99}')
buffer.gsub!(/^>\*/, '\end{thebibliography}')

サンプルはこんなかんじです。

@1 XXの実験
 
# 理論
 
=<
    x &=& 1 \\
    y &=& 2
>=
 
# 方法
## その1
 
$<
    1 + 1 = 2
>$
 
## その2
`<hello.js
    console.log('Hello, World!')
>`
 
*<
 \bibbook{タイトル}{2017}{出版社}
 \bibweb{ぺーじ}{http://hoge.com}
>*

ついでに TeX による数式の記述が10倍早くなる方法も紹介します。
Web Equation
これは手書きの数式を TeX 形式に変換してくれるWebサービスです。結構複雑な式でも難なく変換できるので重宝しています。

これで TeX を一文字たりとも書かなくて済むようになった。
最後にアレを言いたい。

まだTeXで消耗してるの?

参考文献