latex-math-preview.el

機能

latex-math-preview.el は Emacs で LaTeX を編集するときに一部分だけをプレビュするための拡張機能です。具体的には、数式、選択領域(transient-mark-mode)、beamer の frame (まだ実験段階です)のプレビュとこれらを画像に保存(png や eps などの形式)することができます。また、記号の一覧を表示し、その中から選択して挿入する機能も備えています。

latex-math-preview.el の機能はすべて Emacs のコマンドとして実装されているので、 どのメジャーモードであっても使用することができます。 yatex-mode や org-mode で使用すると便利です。

スクリーンショット

screenshot

ダウンロード

ソースコードをダウンロードしたい場合は gitorious から行ってください。

以前は EmacsWiki に更新していましたが、更新する方法がわからなくなったので 現在は更新されていません。

設定

注意

  • バージョン 0.6.0 でシンボルのリストの画像キャッシュの名前が変更されました。 M-x latex-math-preview-clear-cache-for-insertion でキャッシュを一度削除して作りなおしてください。
  • バージョン 0.5.0 で変数が変わって設定の方法が変更されました。 バージョンアップする場合は設定を見直してください。

インストール

バージョン 0.7.0 から MELPA に登録されています。 MELPA の設定をしてあれば M-x package-install でインストールできます。 MELPA からパッケージをインストールするための設定は http://melpa.org/#/getting-started を参照してください。

Ubuntu の Emacs と Windows の Meadow で動作を確認しています。

latex-math-preview.el は TeX 関係のいくつかのコマンドを使用して画像を作成します。少なくても、数式をプレビュするには

  • emacs 23
  • dvipng
  • latex (or platex)

が必要です。emacs を端末で動かしている場合(emacs -nw で起動させたときなど)は画像を表示できないので、latex-math-preview.el は使えません。

情報が古いですが, Windows での(TeX や Meadown のインストールも含めた)インストールに関しては Windows XP で latex-math-preview.el を使う で説明しています。

autoload

MELPA からインストールした場合は、autoload の設定は不要です。

コマンドを呼び出したときに latex-math-preview.el を読み込むように以下を ~/.emacs.d/init.el (または ~/.emacs.el) に追加します。

(autoload 'latex-math-preview-expression "latex-math-preview" nil t)
(autoload 'latex-math-preview-insert-symbol "latex-math-preview" nil t)
(autoload 'latex-math-preview-save-image-file "latex-math-preview" nil t)
(autoload 'latex-math-preview-beamer-frame "latex-math-preview" nil t)

キーバインド(サンプルは yatex-mode の場合)

TeX を編集するために yatex-mode を使っているならば

(add-hook 'yatex-mode-hook
         '(lambda ()
         (YaTeX-define-key "p" 'latex-math-preview-expression)
         (YaTeX-define-key "\C-p" 'latex-math-preview-save-image-file)
         (YaTeX-define-key "j" 'latex-math-preview-insert-symbol)
         (YaTeX-define-key "\C-j" 'latex-math-preview-last-symbol-again)
         (YaTeX-define-key "\C-b" 'latex-math-preview-beamer-frame)))
(setq latex-math-preview-in-math-mode-p-func 'YaTeX-in-math-mode-p)

のように設定するとよいでしょう。上の設定は、YaTeX-prefix が \C-c であれば、

\C-c p
数式、選択領域のプレビュ
\C-c \C-p
数式、選択領域から画像を作成して保存
\C-c j
記号の一覧、挿入
\C-c \C-j
直前の記号の再挿入
\C-c \C-b
beamer の frame のプレビュ

となります。

最後の一行は、キーバインドではないですが yatex-mode で使用するならば設定した方が良いです。カーソルが数式モード内にあるかどうかを判別するのに YaTeX-in-math-mode-p を使います。

yatex-mode 以外で使用するときは、キーマップに

  • latex-math-preview-expression
  • latex-math-preview-save-image-file
  • latex-math-preview-insert-symbol
  • latex-math-preview-last-symbol-again
  • latex-math-preview-beamer-frame

を割り当てると便利です。

コマンドのパス

コマンドにパスが通っていれば設定は不要です。パスを指定するには latex-math-preview-command-path-alist を変更します。latex-math-preview-command-path-alist は

(setq latex-math-preview-command-path-alist
     '((latex . "/usr/bin/latex") (dvipng . "/usr/bin/dvipng")
       (dvips . "/usr/bin/dvips")))

のようにします。コマンドは以下のものが使用可能で、必要に応じてパスを設定してください。

  • dvipng
  • dvips
  • latex
  • platex
  • pdflatex
  • dvipdf
  • dvipdfm
  • dvipdfmx
  • gs

コマンドの組み合わせ

画像を得るためのコマンドの組み合わせは、以下の変数に設定します。

latex-math-preview-tex-to-png-for-preview
プレビュするときの変換方法
latex-math-preview-tex-to-png-for-save
png 画像を作成するときの変換方法
latex-math-preview-tex-to-eps-for-save
eps 画像を作成するときの変換方法
latex-math-preview-tex-to-ps-for-save
ps 画像を作成するときの変換方法
latex-math-preview-beamer-to-png
beamer の frame をプレビュするときの変換方法

日本語の環境では

(setq latex-math-preview-tex-to-png-for-preview '(platex dvipng))
(setq latex-math-preview-tex-to-png-for-save '(platex dvipng))
(setq latex-math-preview-tex-to-eps-for-save '(platex dvips-to-eps))
(setq latex-math-preview-tex-to-ps-for-save '(platex dvips-to-ps))
(setq latex-math-preview-beamer-to-png '(platex dvipdfmx gs-to-png))

と設定すれば良いと思います。詳しくは、「仕組み」の項目とソースコードを参照してください。

使い方

latex-math-preview.el には次のコマンドが定義されています。M-x で呼び出すか、設定したキーバインドを使って実行します。

latex-math-preview-expression

カーソルの位置の数式をプレビュします。標準では次の書式に対応しています。

  • $ … $
  • [ … ]
  • \begin{math} … \end{math}
  • \begin{displaymath} … \end{displaymath}
  • \begin{equation} … \end{equation}
  • \begin{gather} … \end{gather}
  • \begin{align} … \end{align}
  • \begin{alignat} … \end{alignat}

また、transient-mark-modeで領域が選択されている場合は、その領域を対象にプレビュします。表のプレビュなどに使用します。画像が表示されているバッファは確認が終わったら q ボタンを押すと閉じます。

latex-math-preview-insert-symbol

カーソルが数式内にあるかどうかをチェックして、適した記号の一覧を表示します。矢印キーなどでカーソルを操作し、選択されている記号を RET で挿入します。記号の種類によってページがわかれていて、ページを変えるにはi(次のページ)、u(前のページ)、c(指定のページ)を使います。

数式内かどうかの判別がうまくいかない場合は、数式用のコマンド latex-math-preview-insert-mathematical-symbol と普通のテキスト用のコマンド latex-math-preview-insert-text-symbol があります。連続して同じ記号を挿入するときのためには、直前の記号を再び挿入するコマンド latex-math-preview-last-symbol-again があります。

デフォルトでは ~/.emacs.d/latex-math-preview-cache/ に記号の画像がキャッシュされます。画像がまだ作られていない場合は、画像作成に時間がかかりますが、一度キャッシュされれば、次からは待たされることはなくなります。

また、latex-math-preview-make-all-cache-images で必要なすべての画像を作り、latex-math-preview-clear-cache-for-insertion で画像のキャッシュを削除します。

latex-math-preview-save-image-file

対象の数式や領域は latex-math-preview-expression と同じですがプレビュするのではなく、画像に保存します。画像フォーマットは、出力先の拡張子で判断します。今のところ、png、eps、ps 形式に対応しています。

latex-math-preview-beamer-frame

カーソル位置の beamer のフレームをプレビュします。いろいろな TeX のファイルがあるので、環境によっては動作しないかもしれません。

仕組み

latex-math-preview.el がどのように画像を作っているのかを説明します。もし、上記のインストール方法ではうまく動かなかった場合は、以下を読んで対応を考えてください。

画像の変換

latex-math-preview.el は、対象(数式や選択領域、beamer のフレーム)を抜き出し、一時的な TeX ファイルを作ります。そのファイルを以下のコマンドを組み合わせて、png ファイルを作り、それを Emacs 上に表示します。

  • dvipng
  • dvips
  • latex
  • platex
  • pdflatex
  • dvipdf
  • dvipdfm
  • dvipdfmx
  • gs

したがって、上のコマンド(すべてではなく、必要なものだけでよい)がきちんとインストールされていないと使うことができません。

環境によってコマンドの組み合わせを変えるためには、latex-math-preview-tex-to-png-for-preview などの変数に変換方法を指定します。latex-math-preview-tex-to-png-for-preview のデフォルトの値は ‘(latex dvipng) ですが、これは latex-math-preview-execute-latex と latex-math-preview-execute-dvipng を続けて実行して画像を作成するということを意味します。これらの関数は、元となるファイルのパスを引数に取り、それから作られたファイルのパスを返します。同じようなに動作する関数(latex-math-preview-execute-***)には以下のものがあります。

  • latex-math-preview-execute-latex
  • latex-math-preview-execute-platex
  • latex-math-preview-execute-pdflatex-to-dvi
  • latex-math-preview-execute-pdflatex-to-pdf
  • latex-math-preview-execute-dvipdf
  • latex-math-preview-execute-dvipdfm
  • latex-math-preview-execute-dvipdfmx
  • latex-math-preview-execute-dvipng
  • latex-math-preview-execute-dvips-to-ps
  • latex-math-preview-execute-dvips-to-eps
  • latex-math-preview-execute-gs-to-png

これらを環境に応じて組み合わせ、latex-math-preview-tex-to-png-for-preview などの変数に設定してください。例えば、latex-math-preview-beamer-to-png のデフォルト値は ‘(pdflatex-to-pdf gs-to-png) ですが日本語の TeX の場合は platex -> dvipdfmx -> gs で変換すると思います。この場合は、上に書いたように

(setq latex-math-preview-beamer-to-png '(platex dvipdfmx gs-to-png))

と設定します。

一時的な TeX ファイルの作成

latex-math-preview.el は必要な部分だけの一時的な TeX ファイルを作り、それをコンパイルして画像を作成します。そのため、その TeX ファイルによってはコンパイル時にエラーになる可能性があります。ここでは、どのように一時的な TeX ファイルを作成しているかを説明します。

プレビュや画像作成のための TeX ファイルは

[header]
[usepackage]

\begin{document}

[expression]

\par
\end{document}

のような構造になります。[header] のところには、プレビュのためには latex-math-preview-latex-template-header、画像の作成のためには latex-math-preview-template-header-for-save-image の値が使用されます。[usepackage] のところは、TeX のファイルを編集中であればそのファイルの \usepackage{…} を使い、そうでないならば latex-math-preview-latex-usepackage-for-not-tex-file の値を使います。

[usepackage] の値はバッファローカル変数にキャッシュされていて、再び [usepackage] の値を取得したいときには、latex-math-preview-reload-usepackage コマンドを使います。また、編集している TeX ファイルとは別の他のファイルに \usepackage{…} が記入されている場合、C-u M-x latex-math-preview-reload-usepackage として前置引数つきで実行することで編集中ではないファイルから \usepackage{…} の値を取得します。

したがって、latex-math-preview-latex-template-header、latex-math-preview-template-header-for-save-image、latex-math-preview-latex-usepackage-for-not-tex-file の値を変更すると一時的な TeX ファイルをカスタマイズすることができます。詳細はソースコードを参照してください。

beamer の frame をプレビュする場合は、上のような TeX ファイルだとうまく動かないので、次のような TeX ファイルを作成します。

[編集中の TeX ファイルの \begin{document} より前の部分]
\begin{document}

\frame{
  ...
}
もしくは
\begin{frame}
  ...
\end{frame}
\end{document}

\begin{document} の前の部分がどのようなものになるのか、全く保証ができない方法なので TeX ファイルによってはうまく動かないかもしれません。

カスタマイズ

数式とみなす TeX の書式

latex-math-preview-match-expression で指定されている書式を数式とみなしてプレビュするときに使用します。もし、よく使う書式が指定されていない場合は、latex-math-preview-match-expression に加えてください。latex-math-preview-match-expression の値は次のようなコンスセルのリストです。

(0 . "\\\\\\[\\(.\\|\n\\)*?\\\\]")

数式部分を表す正規表現の括弧の番号(0 ならマッチした部分すべて)と正規表現です。

プレビュ画像の背景色と文字の色

プレビュ画像の色は latex-math-preview-image-foreground-color と latex-math-preview-image-background-colorで指定することができます。デフォルト値は nil になっていて、この場合はバッファの face の色を取得して使用します。

記号一覧

記号の一覧は latex-math-preview-text-symbol-datasets と latex-math-preview-text-symbol-datasets に基づいて作られます。これらの変数をカスタマイズすれば、よく使う記号を一覧に加えることができます。変数は、1ページに対応するデータのリストで、各データは

("Logo"
     ("logo (1)" nil
      ("\\TeX" "\\LaTeX" "\\LaTeXe"))
     ("logo (2)" ("\\usepackage{mflogo}")
      ("\\MF" "\\MP")))

のようなリストで表します。”Logo” はページの見出しで、”logo (1)”、”logo (2)” は項目の見出しです。そのあとに続くのは nil と (“\usepackage{mflogo}”) ですが、これは必要な usepackage のリストです。不要なら nil を指定します。そして、記号のリストが続きます。”\MF” のように文字列の場合と (“\d{“ “o” “}”) のようにリストの場合があります。文字列の場合は単純にその文字列を挿入します。リストの場合は、要素は3つであり、最初と最後の要素が挿入され、中央の要素のところにカーソルが合います。説明がわかりにくいので、カスタマイズする場合はソースコードも参照してください。

latex-math-preview-extra-data.el (obsolete)

latex-math-preview-extra-data.el は latex-math-preview.el 0.7.0 に統合されました。 設定は不要です。

リンク

紹介記事を書いてくださった方々に感謝いたします。

ソースコードに書いてある文書そのままですが、EmacsWiki にも説明を書きました。

ライセンス

latex-math-preview.el は tex-math-preview.el (Copyright 2006, 2007, 2008, 2009 Kevin Ryde) をフォークして開発しました。latex-math-preview.el のライセンスは GPLv3です。latex-math-preview.el は Takayuki Yamaguchi d@ytak.info がメンテナンスしており、要望や不具合については d@ytak.info に連絡をください。

Tags of current page

, , ,