1. はじめに
こちらの記事はYaTeXとその周辺のパッケージをインストールする作業の備忘録です.てぃー氏の記事「私的YaTeX事始め」を参考にしています.
1.1 環境
本稿執筆時の作業環境は以下の通りです.
- macOS: Catalina 10.15.4
- Emacs:
##1.2 関連記事
- macOSへのTeX-Emacs環境の構築全体の流れについてはこちらの記事.
2. YaTeXのインストール
細かい設定は後でできるので,まずはuse-package
を使ってYaTeXパッケージをMELPAからインストールしてみます(2020年5月28日時点で,MELTA StableにはYaTeXは存在しない).
2.1 手順
Step 1: Emacsで初期化ファイルinit.el
を開き,下の方(package.el
やuse-package.el
関連より後)に以下を追加する.
(use-package yatex
:ensure t)
Step 2: 変更を保存し(C-x C-s
),Emacsを閉じ(C-x C-c
),改めてEmacsを起動する.
:ensure t
により,(パッケージがインストールされていない場合に)自動でパッケージがインストールされます.Step 2でEmacsを再起動する際にインストールが実行されます.少しだけ時間が掛かる.インストール後にEmacsの*Compile-Log*
バッファを見ると,Warning (bytecomp):
が大量にある.全くわからないので,そっと閉じます...
2.2 結果
MELPAからインストールされたパッケージなので,~/.emacs.d/elpa/
にYaTeXのディレクトリが追加されました.
$ ls -l
drwxr-xr-x 38 hoge staff 1216 5 28 22:30 yatex-20200208.931
3. YaTeXの設定
ここではYaTeXの設定を整理します.編集の手順は2.1 手順と同じなので省略し,ここでは初期化ファイルinit.el
に加える内容に着目します.
3.1 設定
まずは次のように初期化ファイルinit.el
に設定を加えました.
(use-package yatex
:ensure t
:init
(setq YaTeX-inhibit-prefix-letter t)
:mode (("\\.tex\\'" . yatex-mode)
("\\.sty\\'" . yatex-mode)
("\\.ltx\\'" . yatex-mode))
:config
(setq YaTeX-kanji-code 4) ; 1 -> SJIS, 2 -> JIS, 3 -> EUC, 4 -> UTF8
(setq YaTeX-use-AMS-LaTeX t)
(setq tex-command "latexmk -pdfdvi -f -e '$latex=q/platex -synctex=1 %O %S/; $dvipdf=q/dvipdfmx %O -o %D %S/; $bibtex=q/pbibtex %O %B/; $makeindex=q/mendex %O -o %D %S/;'"))
####コメント(latexmk
以外)
-
(setq YaTeX-inhibit-prefix-letter t)
により,YaTeXのキーバインドがC-c 英字
からC-c C-英字
へ変化します.これはyatex.el
を読み込む前に必要なため,:init
の部分に記述しています. -
:mode
の部分は.tex
,.sty
,.ltx
のファイル形式を開いた場合にYaTeXモードに切り替える(遅延ロードする)指示です.- この点は@kai2nenobu氏の記事「use-packageで可読性の高いinit.elを書く」が詳しいです.
-
(setq YaTeX-kanji-code 4)
は文字エンコーディングにUTF8を指定しています. -
(setq YaTeX-use-AMS-LaTeX t)
はAMS-LaTeXを使うため. -
:defer t
は含めていません.これはuse-package
のGitHubページのREADME.md
に次の記述があったためです.
If you aren't using :commands, :bind, :bind*, :bind-keymap, :bind-keymap*, :mode, :interpreter, or :hook (all of which imply :defer; see the docstring for use-package for a brief description of each), you can still defer loading with the :defer keyword:
####コメント(latexmk
に関する内容)
-
-e
オプションで特定の初期化コード(.latexmkrc
に記述するコード)を実行することができ,ざわざわ初期化ファイル.latexmkrc
を用意しなくて済みます.具体的には,-e '$hoge=q/.../'
のような形で使います(詳細はマニュアルを参照).q/ ... /
は引用で,外側の'...'
という引用の中での引用を示すために,この記法を使うようです. - ここでは,pLaTeX+dvipdfmx+pBibTeXの(古い?)組み合わせを前提としています.TeXの新しい処理系やBiber+BibLaTeXといった方法については今後勉強する必要があります.
-
-pdfdvi
はdvipdfmx
でPDFファイルを出力する際に必要になります. -
-pdfdvi
は(DVIファイルから)PDFファイルを出力するために必要です. -
-synctex=1
: https://texwiki.texjp.org/?SyncTeX -
(setq tex-command ...)
なので,C-c C-t j
でlatexmk
を使った一連のコンパイルを行います. -
-f
はエラーが出ても強制的に最後までコンパイルするための指示.BibTeXで未入力項目が多い場合にエラーが出てPDFが出力されないことがある.なお,一度bibファイルを作成できれば,その後のコンパイルでエラーは出ない.
#4. YaTeX周辺:RefTeXの設定
RefTeXは文献引用や相互参照をする際に役立つツールです.TeX Liveにはデフォルトで同梱されている機能です.例えば,EmacsにおいてC-c [
とすれば,BibTeXファイル(.bib
)から文献のキーワード検索し,該当するものをRET
で挿入することができます(latexmk
を適切に設定すれば,参考文献リストがタイプセット時に自動的で作成されます).
##4.1 設定
(use-package yatex ...)
の後ろに以下を追加します.
(use-package reftex
:ensure nil
:hook (yatex-mode . reftex-mode)
:bind (:map reftex-mode-map
("C-c )" . nil)
("C-c (" . reftex-reference))
:defer t)
- てぃー氏のブログ記事によれば,Cleverefというパッケージが存在するようです.これを実装するかは今後の検討課題とします.
#5. YaTeX周辺:company(-math)パッケージのインストール
##5.1 手順:companyパッケージ
Step 1: Emacsで初期化ファイルinit.el
を開き,上記RefTeXの設定の後に以下を追加する.
(use-package company
:ensure t
:hook (after-init . global-company-mode))
Step 2: 変更を記録し(C-x C-s
),Emacsを閉じる(C-x C-c
).再度,Emacsを起動する.
####コメント
-
Step 2でEmacsを再起動した段階でパッケージ
company
が(まだインストールされていない場合に)インストールされます.以下はその際のコンパイルのログとパッケージの情報です. - 使い方:Emacsで入力していると自動で補完候補が表示されたら,
M-n
(リストの下へ移動),M-p
(リストの上へ移動)で候補を選択し,RET
.
Compiling file /Users/hoge/.emacs.d/elpa/company-20200525.101/company-yasnippet.el at Mon Jun 1 13:19:52 2020
Compiling file /Users/hoge/.emacs.d/elpa/company-20200525.101/company.el at Mon Jun 1 13:19:52 2020
Warning (bytecomp): the function ‘eglot--snippet-expansion-fn’ is not known to be defined.
Warning (bytecomp): the function ‘yas-minor-mode’ is not known to be defined.
company is an installed package.
Status: Installed in ‘company-20200525.101/’ (unsigned). Delete
Version: 20200525.101
Summary: Modular text completion framework
Requires: emacs-24.3
Homepage: http://company-mode.github.io/
Keywords: abbrev convenience matching
Other versions: 20200525.101 (melpa), 0.9.12 (melpa-stable), 0.9.12 (gnu).
##5.2 手順:company-mathパッケージ
Step 1: Emacsで初期化ファイルinit.el
を開き,YaTeX及びcompanyの設定より後に以下を追加する.
(use-package company-math
:ensure t
:demand t
:after (company yatex)
:config
(push 'company-math-symbols-latex company-backends)
(push 'company-latex-commands company-backends))
Step 2: 変更を記録し(C-x C-s
),Emacsを閉じる(C-x C-c
).再度,Emacsを起動する.
####コメント
-
:after
でcompanyとYaTeXパッケージがロードされてからcompany-mathをロードすることを指定しています. - 数学記号の補完でYaTeXのイメージ補完を使う場合,
(push 'company-math-symbols-latex company-backends)
を削除する必要があります(てぃー氏のブログ記事). - リポジトリとしてはGNU,MELPA,MELPA stableの3つがありますが,最新のMELPAからインストールが行われました.最新だからなのか,それともGNUやMELPA stableよりもMELPAが優先されるかの判断はわからない(MELPA stableよりMELPAが優先されることは分かっている).
Leaving directory ‘/Users/hoge/.emacs.d/elpa/math-symbol-lists-20200131.2333’
Compiling file /Users/hoge/.emacs.d/elpa/math-symbol-lists-20200131.2333/math-symbol-lists.el at Mon Jun 1 23:50:55 2020
Entering directory ‘/Users/hoge/.emacs.d/elpa/math-symbol-lists-20200131.2333/’
Compiling file /Users/hoge/.emacs.d/elpa/math-symbol-lists-20200131.2333/msl-build.el at Mon Jun 1 23:50:55 2020
Compiling no file at Mon Jun 1 23:50:56 2020
Leaving directory ‘/Users/hoge/.emacs.d/elpa/company-math-20200131.2337’
Compiling file /Users/hoge/.emacs.d/elpa/company-math-20200131.2337/company-math.el at Mon Jun 1 23:50:56 2020
Entering directory ‘/Users/hoge/.emacs.d/elpa/company-math-20200131.2337/’
Compiling no file at Mon Jun 1 23:50:56 2020
Warning (bytecomp): attempt to let-bind nonvariable ‘(lucr (msl--LUCR-filter-LaTeX-aliases lucr))’
Warning (bytecomp): assignment to free variable ‘company-math--unicode-prefix-regexp’
Warning (bytecomp): reference to free variable ‘company-math--unicode-prefix-regexp’ [2 times]
company is an installed package.
Status: Installed in ‘company-20200525.101/’ (unsigned).
Version: 20200525.101
Summary: Modular text completion framework
Requires: emacs-24.3
Required by: company-math-20200131.2337
Homepage: http://company-mode.github.io/
Keywords: abbrev convenience matching
Other versions: 20200525.101 (melpa), 0.9.12 (melpa-stable), 0.9.12 (gnu).