##はじめに
tex+markdownでレポートを作ったら早いのではないかと思って試してみた.自分なりに思ったメリットデメリットをあげてみる
- メリット
- texでepsを貼りまくると起こる __めちゃくちゃ長いコンパイル時間がなくなる__のでmarkdownで作業してる分には快適
- texの数式がそのまま使える
- (アプリによるけど) __リアルタイムで結果が反映__されるので作業がしやすい
- ひな形のtexファイルは使い回し可能
- texのフォーマットを使っているので適当に作っても 割と綺麗
- デメリット
- 長い長い文章を書いていると応答がなくなることが稀にある.(wordの100倍ぐらいは快適)
- pandocで変換するときに __細かいところに手が回らない__ので後で手直ししなければならない.
こんな感じ.やっぱり一番大きいデメリットは変換後のtexを自分でいじらなければならないところかもしれない. htmlに変換してCSSのスタイルシート使い回した方が早いのでは?と作業中にn回思った.
総括すると結構使いやすいけど細かいところで変換が上手くいかなかったりするので普通にtexで書くより少し楽程度なのかもしれない.
##作業環境
- MacDown
- Mac OS 10.9
- homebrew
普通こういうところになにかけばいいんだろう
##環境導入
###MacDownのインストール
別にMacDownでなくてもいい.というかなんでもいい.
MacDown公式サイト
普通にインストールしちゃって下さい.
###Pandocのインストール
pandocはhaskell製のドキュメント変換ツール.めちゃくちゃすごいやつ.pandoc hoge.md -o hoge.doc
で,Wordファイルにも変換可能.
brew install pandoc
でインストールしようと思ったらできてなかった.cabalをつかってインストールすることに.
brew install haskell-platform
cabel update
cabel install pandoc
PATH=${HOME}/.cabal/bin:$PATH
めちゃくちゃ長いのでおやすみしよう.
朝目覚めたら適当なmdファイルをつくって,pandoc test.md -o test.tex
としてみよう.変換できたら次に進もう.変換できなかったらググろう.
###Texのインストール
私の場合最初からインストールしてたので関係なし.ただtlmgrってパッケージを入れないとエラーを吐いた気がする?
tlmgr update --self
tlmgr update --all
sudo tlmgr install collection-langcjk collection-latexrecommended collection-fontsrecommended
これも相当に長い.寝よう.
あとjlistingsとかいろいろのパッケージを使いたいのでインストールしていく.下記は参考にしたサイト
###スクリプトを書こう
できたtexをみてみるとよくわからないtightlistとかあるので,そこらへんをとらないとエラーになる.また,markdownではpng,jpgでも問題ないが,texでは xbbファイルがないとコンパイルが通らない.めんどくさいのでファイル内にある画像ファイルのxbbつくってくれないだろうか.そこでスクリプトで __markdown->tex->修正->pdf__までを一括でやってしまおうという話.
まずスクリプトを置いておくところを作る.
cd $HOME
makedir tools
cd tools
rubyのスクリプトを書く.
ここは自動で変換されて気に入らない表現なんかを置換してる.
f_name = ARGV[0].to_s
f=File.open(f_name,"r")
buffer = f.read();
buffer.gsub!("\\tightlist" , "\n");
buffer.gsub!("\\begin{figure}[htbp]","\\begin{figure}[H]");
buffer.gsub!("\\begin{verbatim}","\\begin{lstlisting}");
buffer.gsub!("\\end{verbatim}","\\end{lstlisting}");
buffer.gsub!(/\\includegraphics\{(?<file>.+?)\}/,'\\includegraphics[width=100mm]{\k<file>}');
f=File.open(f_name,"w")
f.write(buffer)
f.close()
puts "正常に置換が終了しました"
Hereパッケージを使うようにしてたり,コードが見にくいのでjlistingをつかったり,やたら画像が大きいと困るので一律に10cmに指定したりしてる. 気に食わないところがあったらガンガン書き直そう.(正規表現が世界一できない)
こいつをtex.rbと名前を付けて$HOME/toolsに保存.
Shellスクリプトを書く
今更なんだけどこれ,Makefileに書けばまずまず綺麗かなとか思えてきた
参考にしたサイト
http://qiita.com/yukisako/items/cd83d4d7604027abf2a9
#!/bin/sh
echo "マークダウンで書いたものをLaTeXに変換するツール"
read -p "please input your file: " file
mdfile="${file}.md"
texfile="${file}.tex"
echo "${mdfile}を${texfile}に変換します"
pandoc $mdfile -o $texfile
ruby ${HOME}/tools/tex.rb $texfile
##extractbbの自動化
for file in `ls *.png`
do
echo $file
extractbb $file
done
for file in `ls *.jpg`
do
echo $file
extractbb $file
done
platex master.tex
dvipdfmx master.dvi
png,jpgをextractbbしてくれるやつも追加してある.こころへんの細かい使い勝手は自由に変えれば良いと思う.
そしてパスを通す.
if [ -d $HOME/tools ]
then
PATH=$PATH:$HOME/tools; export PATH
fi
(.bash_profileはvim ~/.bash_profile
なんて叩くと編集できます)
そして権限を与えておく.
cd $HOME/tools
chmod u+x mdtex.sh
これで,mdtex.sh
とたたけばスクリプトが呼び出せる.
###Texのひな形を晒す
\documentclass[11pt,a4paper]{jsarticle}
%
\usepackage{color}
\usepackage{amsmath,amssymb}
\usepackage{bm}
\usepackage[dvipdfmx,hiresbb]{graphicx}
\usepackage{ascmac}
\usepackage{here}
\usepackage{txfonts}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{listings, jlisting}
\renewcommand{\lstlistingname}{リスト}
%languageはものによって変える
\definecolor{OliveGreen}{cmyk}{0.64,0,0.95,0.40}
\definecolor{colFunc}{rgb}{1,0.07,0.54}
\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}
\definecolor{Brown}{cmyk}{0,0.81,1,0.60}
\definecolor{colID}{rgb}{0.63,0.44,0}
\lstset{
language=C,%プログラミング言語によって変える。
basicstyle={\ttfamily\small},
keywordstyle={\color{OliveGreen}},
%[2][3]はプログラミング言語によってあったり、なかったり
keywordstyle={[2]\color{colFunc}},
keywordstyle={[3]\color{CadetBlue}},%
commentstyle={\color{Brown}},
%identifierstyle={\color{colID}},
stringstyle=\color{blue},
tabsize=2,
frame=trBL,
numbers=left,
numberstyle={\ttfamily\small},
breaklines=true,%折り返し
backgroundcolor={\color[gray]{.95}},
captionpos=b
}%
\setlength{\textwidth}{\fullwidth}
\setlength{\textheight}{40\baselineskip}
\addtolength{\textheight}{\topskip}
\setlength{\voffset}{-0.2in}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
%
\newcommand{\divergence}{\mathrm{div}\,} %ダイバージェンス
\newcommand{\grad}{\mathrm{grad}\,} %グラディエント
\newcommand{\rot}{\mathrm{rot}\,} %ローテーション
%
\title{...}
\author{...}
\date{\today}
\begin{document}
\maketitle
\include{template}
\end{document}
ひな形をコンパイルしてエラーがでたら逐次パッケージをインストールしてください.
##使い方
- おもむろにディレクトリを作る.
- master.texを入れる
- MacDownでレポートを書き書き
- (画像なんかはディレクトリの直下入れてね)
- 完成したらshellを起動.
mdtex.sh
-> ファイル名を入れる - master.pdfができあがる!
こんな流れになると思う.master.pdfみて気に入らないところがあれば,hoge.texを直していく作業になると思う.
##だれか助けてのコーナー
画像とか式とかlabelを指定できないので参照できなかったりしてつらい.だれか解決策下さい
ラベルが付けられないのが地味に一番きつい
あと,markdownで数式を複数行に渡って数式を使うやつがわからない(これはQitaの中の話ではなくて,markdown標準からtexに変換したときにeqnarrayとかalign*に対応するものがわからないという意味.)
表を書くとき縦線がない(tableをうまいこと正規表現で置換すればできそうだけどわからず)
リアルタイムで反映されて,数式が簡単に入力できて,図の形式も自由で,高速でサクサク動くエディターが天から降ってこないだろうか