5
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.

[備忘録]use-packageを使ったYaTeXのインストール

Last updated at Posted at 2020-06-18

1. はじめに

こちらの記事はYaTeXとその周辺のパッケージをインストールする作業の備忘録です.てぃー氏の記事「私的YaTeX事始め」を参考にしています.

1.1 環境

本稿執筆時の作業環境は以下の通りです.

  • macOS: Catalina 10.15.4
  • Emacs:

##1.2 関連記事

2. YaTeXのインストール

細かい設定は後でできるので,まずはuse-packageを使ってYaTeXパッケージをMELPAからインストールしてみます(2020年5月28日時点で,MELTA StableにはYaTeXは存在しない).

2.1 手順

Step 1: Emacsで初期化ファイルinit.elを開き,下の方(package.eluse-package.el関連より後)に以下を追加する.

~/.emacs.d/init.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のディレクトリが追加されました.

~/.emacs.d/elpa/
$ 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に設定を加えました.

~/.emacs.d/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モードに切り替える(遅延ロードする)指示です.
  • (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といった方法については今後勉強する必要があります.
  • -pdfdvidvipdfmxでPDFファイルを出力する際に必要になります.
  • -pdfdviは(DVIファイルから)PDFファイルを出力するために必要です.
  • -synctex=1: https://texwiki.texjp.org/?SyncTeX
  • (setq tex-command ...)なので,C-c C-t jlatexmkを使った一連のコンパイルを行います.
  • -fはエラーが出ても強制的に最後までコンパイルするための指示.BibTeXで未入力項目が多い場合にエラーが出てPDFが出力されないことがある.なお,一度bibファイルを作成できれば,その後のコンパイルでエラーは出ない.

#4. YaTeX周辺:RefTeXの設定

RefTeXは文献引用や相互参照をする際に役立つツールです.TeX Liveにはデフォルトで同梱されている機能です.例えば,EmacsにおいてC-c [とすれば,BibTeXファイル(.bib)から文献のキーワード検索し,該当するものをRETで挿入することができます(latexmkを適切に設定すれば,参考文献リストがタイプセット時に自動的で作成されます).

##4.1 設定
(use-package yatex ...)の後ろに以下を追加します.

~/.emacs.d/init.el
(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の設定の後に以下を追加する.

~/.emacs.d/init.el
(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
*Compile-Log*
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の設定より後に以下を追加する.

~/.emacs.d/init.el
(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が優先されることは分かっている).
*Compile-Log*
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).
5
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
5
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?