しゃちの備忘録

プログラミングを中心とした技術関連の備忘録です(今のところ)

macでのlatexmkを使ったTeX環境構築

MacTeX環境を構築したので, それの備忘録をまとめておきます. 最終的な目標は, latexmkで常にtexファイルを監視して常に最新の状態のpdfを見られる状態にすることです.

今回の設定のメリット

tex環境は好みとかいろいろあると思いますが, 個人的に以下のメリットがあると思います.

  • 好きなエディタを使える
  • 環境設定が楽
  • TeXのタイプセットがきわめて楽

TeXのめんどくささの一つに, タイプセットがあると思います. 数式番号をつけたり, bibtexを入れて文献をつけたり…. また, そのたびにコンパイルの手順が変わるので, 必要なコンパイルをし忘れたり, 逆に余計な部分のコンパイルをしてしまったりと, 非常に使い勝手が悪かったです.

そこでlatexmkを導入すると, そういう手順をすべてlatexmkに任せて, しかもtexファイルだけでなく, 参照しているファイルが書き換わったタイミングで必要なタイプセットを必要な分だけ全部自動でやってくれるようになります. また, makefileなども書く必要がないのでノンストレスです.

手順

  1. ターミナルの準備をする(homebrew, homebrew cask)
  2. MacTeXを入れる
  3. pdf出力できるようにする(imagemagick, ghostscript)
  4. pdfビューワーを入れる
  5. latexmkを設定する

ターミナルの準備をする

今回はmacに標準で入っているターミナルからいろいろ導入するため, パッケージ管理システムhomebrewとその拡張版のhomebrew caskの準備をします.

homebrew

詳しい話は過去に書いたので, そちらで... teru0rc4.hatenablog.com

やるべきコマンドは以下のみです.

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

homebrew cask

homebrewの拡張版で, dmgファイルなどを使ってインストールするものをコマンドでインストールできるぞ!ってものらしいです. 今回は, これも使ってなるべく簡単に環境を構築することを目指したいと思います.

homebrewがインストール済みの環境で,

brew install caskroom/cask/brew-cask

と入力してやるだけです.

MacTeXを入れる

続いてMacTeXを入れます. mactexは, macOS用のTeXディストリビューションです. これを使うことで, TeX/LaTeXの環境を簡単に導入できます.

最小限の環境ならBasicTeXと呼ばれるものがありますが, 個人的には様々なパッケージを最初の段階で網羅してくれているMacTeXのほうがよいかな…と感じました.

先ほど準備したhomebrew caskを使ってインストールしてやります.

brew cask install mactex

pdf出力できるようにする

次にTeXで書いた内容をpdf出力できるようにするため, imagemagickghostscriptをインストールします. imagemagickは画像を取り扱うため, ghostscriptはpdfを作成するためにそれぞれ使うようです.

コマンドは以下の通りです.

brew install ghostscript
brew install imagemagick

pdfビューワーを入れる

今回はskimというソフトを選びました. これである必要はないのですが, 今回の目標が, latexmkで常にtexファイルを監視して常に最新の状態のpdfを見れる状態にすることなので, pdfファイルが変更されたときにそれを自動で更新してくれるようなソフトを選んであげる必要があります. ちなみに, AdobeAcrobatだと, ファイルが変更されても更新されないのでだめです.

brew cask install skim

latexmkを設定する

latexmkの設定です. といっても, MacTeXにくっついているのでインストール自体は不要です.

ただし, 以下の設定ファイルを書いてやる必要があります. ~/.latexmkrcに以下の内容を記述して, 保存してあげてください.(最後の行pdf_previewerの部分は, skimを用いる場合です. その他のビューワーの場合は, そのpathを記述してください.)

#!/usr/bin/env perl
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex';
$biber            = 'biber --bblencoding=utf8 -u -U --output_safechars';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3;
$pvc_view_file_via_temporary = 0;
$pdf_previewer    = "open -ga /Applications/Skim.app";

書いてる内容は, 近日中に追記します. だたこれを書くと, synctexが使えたり, コンパイル失敗時に必要以上にエラーメッセージが出ないようになったり, うれしいです(雑).

最低限の設定はこれで以上です. では使ってみましょう.

使ってみる

編集したいtexファイルがあるディレクトリに行って

latexmk -pvc *****.tex

と入力します.(*****は各自対象とするファイル名に置き換えてください)

-pvcオプションをつけることで, ソースや関連ファイルが更新されるたびにコンパイルを実行し, ~/.latexmkrcで記述したpdfビューワーにpdfを出力してくれます. その他のオプションは以下の通りです. -cはよく使うので覚えておくといいと思います.

  • -pv … pvcの自動更新なし版
  • -c … 変換の途中でできたファイルを消してくれます(logファイルとか)
  • -C … 出来たファイル全部消します(dviファイル, pdfファイルとか)

ためしに, 文章を変更するとターミナルががりがり動いて, 逐一pdfを更新してくれるはずです.便利.

伝わりにくいですがこんな感じに使えるはずです.(ターミナルと, エディタと, pdfビューワーの3つで動いてます.) f:id:teru0rc4:20170128003020p:plain

おわりに

アウトプット癖をつけるために, とりあえず書いてみました. 間違い等ありましたら指摘していただけると幸いです.

ここまでお付き合いくださり,どうもありがとうございました.