Orgモードで数式をプレビューするためのLaTeX設定

Orgモードで数式をプレビューするためのLaTeX設定

Emacsで数式をプレビューするためのLaTeX環境を構築した。

“Emacs”, “LaTeX”、で検索するとLaTeXで執筆するための解説記事が出てくるが、 私はOrgモードで数式プレビューができれば十分なので、そのための最小限の設定をまとめた。

  • 対象環境: MacOS

インストール

GUIなしのMacTeXをインストールするために、以下のコマンドを実行。

brew install --cask mactex-no-gui

Elisp

AUCTeXをインストールし、以下の設定を追加した。

(leaf auctex
  :ensure t
  :hook
  (TeX-mode-hook . LaTeX-math-mode)
  (TeX-mode-hook . auto-image-file-mode)
  :init
  (setq org-preview-latex-default-process 'dvipng)
  (setq org-format-latex-options
        (plist-put org-format-latex-options :scale 1.5))
  :config
  (leaf latex-math-preview
    :ensure t
    :after auctex
    :config
    (setq latex-math-preview-in-math-mode-p-func 'latex-math-preview-in-math-mode-p
          latex-math-preview-tex-to-png-for-preview '(platex dvipng)
          latex-math-preview-tex-to-png-for-save '(platex dvipng)
          latex-math-preview-tex-to-eps-for-save '(platex dvips-to-eps)
          latex-math-preview-beamer-to-png '(platex dvipdfmx gs-to-png)))

  (leaf company-math
    :ensure t
    :hook (TeX-mode-hook . company-math-mode-setup)
    :config
    (defun company-math-mode-setup ()
      (require 'company-math)
      (setq-local company-backends
                  (append '((company-math-symbols-latex company-latex-commands))
                          company-backends))))
  ;; インラインプレビューの高速化
  (add-hook 'TeX-mode-hook (lambda () (setq preview-image-type 'dvipng)))
  ;; インラインプレビューの文字化け回避
  (add-hook 'TeX-mode-hook
            (lambda ()
              (setq preview-default-option-list
                    '("displaymath" "floats" "graphics" "textmath" "footnotes")))))

この設定で、OrgファイルにLaTeX形式で数式を書いたら、 C-c C-x C-l でプレビューできるようになった。 デフォルトではプレビュー文字が小さかったため、以下の設定で文字サイズを大きくしている。

(setq org-preview-latex-default-process 'dvipng)
(setq org-format-latex-options
      (plist-put org-format-latex-options :scale 1.5))

いきなりOrgファイルに直接LaTeXを書くのは難しいので、texlab というLaTeX用のLSPサーバを導入して .sty ファイルでLSPのサポートを受けながら書いたものをOrgモードに写している。

:hook
(go-ts-mode-hook . eglot-ensure)
(LaTeX-mode-hook . eglot-ensure)
:config
(add-to-list 'eglot-server-programs '(LaTeX-mode . ("texlab"))))

こちらを参考にして数式の書き方を覚えていきたい。

参考