【LaTeX】文章を自動でコンパイルする

こんにちは、しきゆらです

時期的に、卒論や修論を書き始める時期でしょうか?

 

論文を書くときは、おそらくTeXで書くと思いますが

これがまた面倒なやつ

文章を直すたびにコンパイルをし直す必要があったり

画像を埋め込むときは複数回コンパイルしないといけなかったりと

何かと面倒

これをなんとかすることはできないかと思って調べてみたら・・・

 

ありました!

latexmkというコマンドがありました

どうもMacTexを入れて少しばかり設定すれば使えるようになりました

詳しくは続きからどうぞ

 


 

手順

使うための手順としては

  • MacTexをインストールする
  • brewでghostscript、skimをインストールする
  • .latexmkrcファイルに設定を書き込む
  • TeX文章を書く

こんな感じ

一つ目のMacTeXに関しては配布サイトからダウンロードしてインストールしてください

 

 

brewでghostscript、skimをインストールする

homebrewが入っていない場合は、こちらのサイトをもとにインストールしてください

といっても、以下のスクリプトをターミナルから実行するだけなんですが

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrewはいわゆるパッケージ管理のためのソフトです

これを入れておけば大半のアプリケーションをコマンド一つでインストールできます

 

brewが使えるようになったら上記の2つをインストールします

# ghostscriptのインストール
brew install ghostscript

# skimをインストール
brew cask install skim

エディタが入ってない場合は、Atomとかを入れておけばいいのではないかと

# atomをインストール
brew cask install atom

 

skimをインストールしたら、設定をしましょう

skimの設定を開きます

skim

画像のように、「同期する」タブの「ファイルの変更をチェック」にチェックを入れます

ただし、これだけだとファイルを更新するたびに確認ダイアログが出てきてしまうので

ターミナルから以下のコマンドを実行します

defaults write -app Skim SKAutoReloadFileUpdate -boolean true

 

.latexmkrcファイルに設定を書く

適当なエディタを開いて、以下の内容を書き込みます

#!/usr/bin/env perl 
$latex = 'platex -synctex=1 -halt-on-error %O %S';
$bibtex = 'upbibtex %O %B';
$dvipdf = 'dvipdfmx %O -o %D %S'; 
$makeindex = 'mendex -U %O -o %D %S';
$max_repeat = 5;
$pdf_mode = 3;
# generates pdf via dvipdfmx 
# Prevent latexmk from removing PDF after typeset. 
# This enables Skim to chase the update in PDF automatically. 
$pvc_view_file_via_temporary = 0;# Use Skim as a previewer
$pdf_previewer = 'open -a /Applications/Skim.app'; # Skimの場所を指定する

スクリプト内の$latexの部分は、コンパイルする時に使うものを指定できます

これを~/.latexmkrcとなるように置きます

 

また、論文内の「、」「。」を「,」「.」に置き換える必要がある場合は

#!/usr/bin/env perl
$latex = "find . -type f -name '*.tex' | xargs sed -i '' -e 's/、/,/g' -e 's/。/./g'; uplatex -synctex=1 -halt-on-error %O %S";

これを.latexmkrcファイルに書き込み

TeXファイルと同じところに置きます

 

TeXで文章を書く

これまでの設定が終わったらあとは文章を書くだけ

・・・と行きたいのですが最後に一つだけ

ターミナルから以下のコマンドを実行します

latexmk -pvc hogehoge.tex

hogehoge.texは現在書いているTeXファイルに置き換えてください

 

なんの意味があるかというと

hogehoge.texの更新があるときに自動でコンパイルしてね

というようなコマンドです

 

あとは文章を作成するだけですね

画像を入れたり、参考文献をbibで作っていても

いい感じにすべて自動でやってくれます

 

これで毎回面倒なコンパイルを勝手にやってくれます

結果はSkimに反映されるので確認も楽

 

今回はTeXでの文章を書くときの環境を作りました

おわり

 

参考