markdown->TeXの変換だけで卒論を仕上げるのに便利だったツール10個まとめ
卒論書き上がったので環境を後続の人類のためにどうやって作ったかメモっておく。 環境はMacだったけどMacTeX以外たぶんLinuxでもいける。その指導教員に入れられたmacportsのTeXとTeXShopを窓から投げ捨てろ。というのが要旨。
MacTeX
MacTeX - TeX Users Group http://tug.org/mactex/ 2014年において他の環境を入れる必然性は殆ど無い。これ一本。
iconv
この時代sjisを扱うのは人生をムダにするだけなので、研究室の秘伝タレたるtexもまずutf8に変換。 その後 ¥ を \ に置換するのは必要だったけどオプションでどうにかなるのかもしれない。
iconv -s -f SHIFT_JIS -t UTF-8 hoge.sty > hoge.utf8.sty
pandoc
markdownをtexに変換できるツール。革命的に便利。 基本的に全部markdownで書いてTeXに変換
pandoc hoge.md hoge.tex
みたいに使う。たぶん拡張子で判断して勝手に変換してくれる。
cabal入ってる Haskellerは cabal install pandoc
, Macの人は brew install pandoc
僕の環境では src/1.md ~ src/6.md があって、 コンパイル対象の src/thesis.tex はこんなふうになっている
中略 \chapter{導入} \input{src/1.tex} \chapter{先行研究の調査} \input{src/2.tex} \chapter{あ〜} \input{src/3.tex} \chapter{い〜} \input{src/4.tex} \chapter{う〜} \input{src/5.tex} \chapter{まとめ} \input{src/6.tex}
どうせmarkdownなんで大した変換しないので、 markdownで表現できないtexの構文はそんままmarkdown内に書いている
~では以下の技術が使われている. - A\cite{a} - B\cite{b} - C\cite{c} - D\cite{d}
ここまで来るとtexで直接書くほうが良いかもしれないけど、markdownでほとんどの記述は済むので、楽。
Rakefile
というかただのコマンド発行しまくるRubyスクリプト。秘伝のタレ。
task :default => ["build", 'clean'] name = "thesis" task :build do Dir.glob("src/*.md").map { |md| tex = md.sub(".md", ".tex") `pandoc #{md} -o #{tex}` } puts `platex -kanji=UTF8 src/#{name}.tex` puts `dvipdfmx #{name}.dvi` puts `mv #{name}.pdf build/` end task :clean do Dir.glob("src/*.md").map { |md| tex = md.sub(".md", ".tex") if md != 'src/thesis.tex' `rm #{tex}` end } `rm *.log` # `rm *.aux` `rm *.dvi ` end task :open do `open build/thesis.pdf` end task :abstract => ["build_abstract", 'clean'] task :build_abstract do puts `platex abstract/abstract.tex` puts `dvipdfmx abstract.dvi` puts `mv abstract.pdf build/` end task :open_abstract do `open build/abstract.pdf` end task :eps do Dir.glob('src/images/**/*.png').each {|png| eps = png.sub(".png", ".eps") p `convert #{png} #{eps}` } end
rake eps
でpngを全部epsに変換したりできる
ディレクトリ構成はこんな感じ
~/p/thesis (master) $ tree . ├── README.md ├── Rakefile ├── TODO.md ├── abstract │ ├── abstract.tex │ └── style.sty ├── build │ ├── abstract.pdf │ └── thesis.pdf ├── src │ ├── 1.md │ ├── 2.md │ ├── 3.md │ ├── 4.md │ ├── 5.md │ ├── 6.md │ ├── thesis.tex │ ├── style.sty │ ├── images │ │ ├── arch.eps 以下略
rake build open
書くたびにプレビューしてた。特定の章だけ編集したいときは \inputs{src/*.md}
をコメントアウトして書いてた。
Cacoo
めんどいので全部 https://cacoo.com/ で書いてたけど時間があったら Graphviz を使った。
おまけ
プリアンプルの一部
\usepackage[dvipdfmx]{graphicx} \usepackage{url} \usepackage{here} \usepackage{listings} \usepackage{verbatim} \usepackage{graphicx} \usepackage{ascmac} \usepackage{xcolor} \usepackage{caption} \DeclareCaptionFont{white}{\color{white}} \DeclareCaptionFormat{listing}{% \parbox{\textwidth}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}\vskip-4pt}} \captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white} \lstset{frame=lrb,xleftmargin=\fboxsep,xrightmargin=-\fboxsep} \belowcaptionskip=-10pt
確か研究室のタレがコンパイルできなかったので, dvipdfmをdvipdfmxに書き換えたりした。
おまけ2
卒論が完成するまでのコミットログです
みんなもGitを使いこなして卒論を書こう!
10個ないのはお約束です。