3
3

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 3 years have passed since last update.

[備忘録]SkimとEmacsの連携:Backward/Forward Search

Last updated at Posted at 2020-06-18

#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 やること

  1. latexmk(正確には,latex)のオプション-synctex=1を指定する.
  2. Skimの「環境設定...」の「同期」タグの内容を適切に設定する.
  3. 初期化ファイルinit.elを適切に設定する.

##3.2 手順
上記の3.1 やることをもう少し具体的に整理したのが以下の手順です.

Step 1: Emacsで初期化ファイルinit.elを開き,latexmklatex)のオプションに-synctex=1を追加する.
Step 2: 同じ初期化ファイルinit.elに以下を加筆する.

~/.emacs.d/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にシンボリックリンクが作成され,ターミナルで単にemacsemacsclientと入力しただけで実行できるようになっているためです.

##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に以下を加筆する.

~/.emacs.d/init.el
  (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-commandtex-pdfview-commandはキーバインドでPDFファイルを開くための設定なので,YaTeX-div2-command-ext-alistがforward searchに重要と予測して,初期化ファイルinit.elYaTeX-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!

一部を抜粋しています.

3
3
0

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?