📒

latexmkからSkimで表示中のPDFをリロードさせる

2021/11/23に公開

はじめに

Mac上でのLaTeXによる文書作成において,SkimはPDFリーダーとしてよく用いられる.SkimはPDFの変更に合わせてPDFをリロードする機能を有しているが,この機能の使用は推奨されていない.私の環境でもリロードの際にPDFの表示がうまくいかなくなった(ページが真っ白になった)状況が発生したため,latexmkがコンパイル終了時にSkimの起動スクリプトを実行するようにして対処した.

環境

  • M1 mac 12.0.1
  • TeXLive 2021
    • uplatex: 59450
    • dvipdfmx: 61101
    • latexmk: 60617
      • ※ 本記事ではlatexmkによるコンパイルを想定する
  • skim 1.6.6

やったこと

  1. コンパイルしたい.texファイルがあるディレクトリに.latexmkrcreload_skim.shを作成する
  2. .latexmkrcには$success_cmd = "/bin/bash $out_dir/reload_skim.sh $out_dir/%B.pdf"を書く
  3. reload_skim.shには以下を書く(Skim Wikiより)
#!/bin/bash
/usr/bin/osascript << EOF
  set theFile to POSIX file "$1" as alias
  tell application "Skim"
  activate
  set theDocs to get documents whose path is (get POSIX path of theFile)
  if (count of theDocs) > 0 then revert theDocs
  open theFile
  end tell
EOF

補足・参考記事など

  • latexmkのドキュメント (TeXLiveがインストールされていればtexdoc latexmkで見られます)
  • コンパイルしたいファイルと同じディレクトリにreload_skim.shを置く特別な理由はない(適当なディレクトリにおいて$HOME/.latexmkrcの方で起動スクリプトを設定すれば問題ない).

Discussion