はい、いつもの自分用メモです。結構自分用メモは使わなくなった環境についての記事がアクセス数上位を獲得していたりして、最近あまり書きたくないなと思っていたりもするのですが。
それでも忘れるたびに同じサイトを参照するのは嫌なので書きます。
前提
ここでは TeXLive をインストールするとかいう話はしません。例のごとく、最新の TeXLive を手に入れたければこことかを参考に。もちろんTeXWikiも見ましょう。
あと Spacemacs をインストールするという話もしません。まぁ Spacemacs を使っている人しかこんな記事読まないでしょうから。
あと latexmk
コマンドを使う設定をしますが、latexmkの設定についてはやっぱり書きません。
~/.latexmkrc
に書く内容などはたとえば ここ とかを参照してください。
想定している設定
- Spacemacs の LaTeX Layer をそのまま利用する。
- コンパイルには latexmk コマンドを使う。
C-c C-c
でlatexmk -pvc
を動かす。
Layer の設定
Spacemacs では Layer 機能を使ってその言語を使う際に有益なパッケージなどをあらかじめまとめてインストールしてくれます。LaTeX でも Layer があって、 LaTeX Layer を使用する設定を書くのがまず最初にやることです。
~/.spacemacs
を編集しますが、Vim keybind で設定している場合は SPC f e d
と入力すると目的のファイルを開くことができます。
そのファイルの中に、次のようにいろいろと書かれている場所があるかと思います。
dotspacemacs-configuration-layers
'(
;; auto-completion
...
)
この ()
内に次のように追記します。
(latex :variables latex-build-command "LatexMk")
ここで、 latexmk
でも LaTeXmk
でも LaTeXMk
でもないことに注意。 LatexMk
が正しいです1。
そして .spacemacs
を再評価する。 再起動でもいいですが、 SPC f e R
で設定ファイルを同期できるので、せっかくなので使いましょう。
これで例えば AUC-TeX などの LaTeX 環境パッケージがインストールされるはずです。
コンパイルの方法
LaTeX ファイルを開いた状態で、 SPC m b
あるいは SPC m a
とうつと latexmk
コマンドが起動し、有効な .latexmkrc
に書かれている内容のコンパイルを実行するはずです。
一方で、筆者のように latexmk -pvc
を実施したいという人もいるでしょう。正直うまい方法はまだ発見していないのですが、一応行う方法は発見したので書いておくことにします2。
ここのコードは、 TeXWiki の AUC-TeX の設定 のコードを参考にして書きました。 ~/.spacemacs
の下の方に、
(defun dotspacemacs/user-config ()
"Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."
)
となっている箇所があると思う。これを次のように編集します。
(defun dotspacemacs/user-config ()
"Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."
(add-hook 'LaTeX-mode-hook
(function (lambda ()
(add-to-list 'TeX-command-list
'("Latexmk"
"latexmk -pvc %t"
TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))))))
これで、LaTeX のソースファイルを開いたときに、 C-c C-c
というコマンドを実行し、メニューから Latexmk
を実行すればコンパイルされ、プレビューの起動とファイル変更の監視、自動コンパイルモードになります。
現状、 SPC m a
では上の設定をしても監視モードにはならないです。理由はわからないのでわかる人は教えて欲しかったりします。
追記
現状、
SPC m a
では上の設定をしても監視モードにはならないです。理由はわからないのでわかる人は教えて欲しかったりします。
と書いてますが、コマンド名が間違っていただけでした。上で散々 LatexMk
であると強調しているのに、TeXWiki からうつしてきたコードが Latexmk
になっています。間違いです。
<feff>(defun dotspacemacs/user-config () "Configuration function for user code. This function is called at the very end of Spacemacs initialization after layers configuration. This is the place where most of your configurations should be done. Unless it is explicitly specified that a variable should be set before a package is loaded, you should place your code here." (add-hook 'LaTeX-mode-hook (function (lambda () (add-to-list 'TeX-command-list '("LatexMk" ; ここの名前を変更 "latexmk -pvc %t" TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))))))
これで SPC m b
で latexmk -pvc
ができるようになります。しかしなぜ気づけなかったんだ。。。
Footnotes
1 筆者はここで時間を30分ほど無駄にしました。
2 Spacemacs の設定で行う方法や、 追記しました。SPC m a
などのコマンドを latexmk -pvc
に置き換えられる方法をご存知の方は教えて欲しい。。。切実に。