#1. はじめに
この記事はMacOSで利用できる無償のPDFビューアーSkimのインストールとSkimとEmacsの連携の設定についての手順を整理した備忘録です.YaTeXを使用することを前提としています.
1.1 作業環境
- macOS: 10.15.5
- Homebrew: 2.3.0
##1.2 関連記事
#2. Skimのインストール
##2.1. 手順
Step 1: ターミナルを起動し,以下を実行する.
$ brew cask install skim
##3. Backward Searchの設定
backward searchとは,latexmk
を使ってコンパイルした.tex
ファイルから出力したPDFファイルをPDFビューアーのSkimで開いた状態(かつ,当該.tex
ファイルをEmacsで開いた状態)で,Skim上で「Shift
+command
+クリック」すると対応する.tex
ファイルを表示してくれる機能です.
このたにはいくつかの準備が必要です.以下,Live TeX 2020を前提として整理します.参考資料は以下のサイトです.
##3.1 やること
-
latexmk
(正確には,latex
)のオプション-synctex=1
を指定する. - Skimの「環境設定...」の「同期」タグの内容を適切に設定する.
- 初期化ファイル
init.el
を適切に設定する.
##3.2 手順
上記の3.1 やることをもう少し具体的に整理したのが以下の手順です.
Step 1: Emacsで初期化ファイルinit.el
を開き,latexmk
(latex
)のオプションに-synctex=1
を追加する.
Step 2: 同じ初期化ファイルinit.el
に以下を加筆する.
;; Starts the Emacs server
(server-start)
Step 3: Skimを開き,[環境設定...]->[同期]と進み,「PDF-TeX 同期サポート:」の「初期値:」から「カスタム」を選択し,「コマンド:」がemacsclient
,「引数:」が--no-wait +%line "%file"
となっていることを確認する.
####コメント
-
Step 1について,YaTeXインストールの記事で整理したように,私の場合はわざわざ
latexmk
の初期化ファイル~/.latexmkrc
を用意せず,init.el
のYaTeXの設定で書くようにしています.オプション-synctex=1
をつけることで,.tex
ファイルをタイプセット(コンパイル)したときにhoge.synctex.gz
という圧縮ファイルが吐き出されます.SyncTeXについてはTeX Wikiのページが参考になります. - Step 2について,Skim/Wiki/TeX_and_PDF_Synchronizationにあるauto-raiseの部分は必要ないみたいです(Emacs Stack Changeのこちらの投稿; taipapa氏のブログ記事).
-
Step 3については,カスタムを選んだ際のデフォルトの内容で問題ないようです.以前こちらの記事に書いたように,Homebrew(
brew cask
)でインストールしたEmacs (26.3)の本体は/Application/Emacs.app/
下にあるものの,/usr/local/bin
にシンボリックリンクが作成され,ターミナルで単にemacs
やemacsclient
と入力しただけで実行できるようになっているためです.
##3.3 挙動
実際にSkim上で「Shift
+command
+クリック」してみると,Emacsで開いた.tex
ファイルの該当ページに飛んでくれます.Beamerのファイルで実行した場合,該当するページのフレーム\frame{...}
の}
にカーソルが来るように飛んでくれるようです.
#4. Forward Searchの設定
forward searchとは,エディタ(Emacs)で編集中の.tex
上で何らかの操作をすると,-synctex=1
オプションを使ってタイプセット(コンパイル)して出力されたPDFファイル上の対応する位置に飛んでくれる機能です.ここで,「何らかの操作」とは,YaTeXの場合,Emacs上でC-c C-g
することを意味します.
ここでの設定は以下を参考にしました.設定は簡単です.
なお,ここではPDFビューアとしてSkimを利用することを想定して書きます.それ以外のビューアの場合,上記サイトのコードを参考にすれば良いかと思います.
##4.1 手順
Step 1: Emacsで初期化ファイルinit.el
を開き,YaTeXセクションの:config
に以下を加筆する.
(setq YaTeX-dvi2-command-ext-alist
'(("Skim" . ".pdf")))
(setq dvi2-command "open -a Skim")
(setq tex-pdfview-command "open -a Skim")
Step 2: 変更を保存し(C-x C-s
),Emacsを閉じる(C-x C-c
).
####コメント
- ここで,
dvi2-command
とtex-pdfview-command
はキーバインドでPDFファイルを開くための設定なので,YaTeX-div2-command-ext-alist
がforward searchに重要と予測して,初期化ファイルinit.el
にYaTeX-div2-command-ext-alist
の行だけコメントアウトして,C-c C-g
でforward searchが機能するかを検証しました.結果,forward searchが行われました!ということで,そもそもこのコードは必要ないかもしれない?ちなみに,MELPAからインストールしたYaTeXのバージョンはyatex-20200208.931
です.
##4.2 挙動
Beamerでforward searchを行ってみたところ,.tex
ファイルの位置とは多少ずれる位置ではありますが,Skim上に赤いポイントと該当部分が選択された状態になります.
#A. 付録
##A.1 出力結果
###A.1.1 Skimのインストール
==> Downloading https://downloads.sourceforge.net/skim-app/Skim/Skim-1.5.9/Skim-1.5.9.dmg
==> Downloading from https://jaist.dl.sourceforge.net/project/skim-app/Skim/Skim-1.5.9/Skim-1.5.9.dmg
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'skim'.
==> Installing Cask skim
==> Moving App 'Skim.app' to '/Applications/Skim.app'.
==> Linking Binary 'displayline' to '/usr/local/bin/displayline'.
==> Linking Binary 'skimnotes' to '/usr/local/bin/skimnotes'.
==> Linking Binary 'skimpdf' to '/usr/local/bin/skimpdf'.
🍺 skim was successfully installed!
一部を抜粋しています.