45
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Markdown+Texの環境構築と使い方

Posted at

##はじめに
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のスクリプトを書く.

ここは自動で変換されて気に入らない表現なんかを置換してる.

tex.rb
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

mdtex.sh
#!/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してくれるやつも追加してある.こころへんの細かい使い勝手は自由に変えれば良いと思う.
そしてパスを通す.

.bash_profile
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のひな形を晒す

master.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}

ひな形をコンパイルしてエラーがでたら逐次パッケージをインストールしてください.

##使い方

  1. おもむろにディレクトリを作る.
  2. master.texを入れる
  3. MacDownでレポートを書き書き
  4. (画像なんかはディレクトリの直下入れてね)
  5. 完成したらshellを起動.mdtex.sh -> ファイル名を入れる
  6. master.pdfができあがる!

こんな流れになると思う.master.pdfみて気に入らないところがあれば,hoge.texを直していく作業になると思う.

##だれか助けてのコーナー
画像とか式とかlabelを指定できないので参照できなかったりしてつらい.だれか解決策下さい
ラベルが付けられないのが地味に一番きつい
あと,markdownで数式を複数行に渡って数式を使うやつがわからない(これはQitaの中の話ではなくて,markdown標準からtexに変換したときにeqnarrayとかalign*に対応するものがわからないという意味.)
表を書くとき縦線がない(tableをうまいこと正規表現で置換すればできそうだけどわからず)
リアルタイムで反映されて,数式が簡単に入力できて,図の形式も自由で,高速でサクサク動くエディターが天から降ってこないだろうか

45
49
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?