TeX/LaTeX and GNU Emacs

$Id: TeX.html,v 1.31 2005/12/10 20:45:26 ataka Exp $

GNU Emacs に提供されている TeX の入力支援について紹介します。 TeX の入力支援とは、 例えば \begin{document} と入力したら自動的に \end{document} を追加してくれるとか、 長ったらしい \listoffigures のようなマクロを補完入力してくれるとか、 \ref の引数を一覧から選べるようにするとか、 そういったものです。


LaTeX2e Info

Info と呼ばれるオンライン・マニュアルシステムがあります。 これは HTML のようなハイパーテキストの一種で、 文書内のリンクを辿ることが出来ます。 HTML を読むにはウェブ・ブラウザーが必要ですが、 Emacs は Info のブラウズ機能を標準装備しています。 なので、例えば TeX のソースを編集しながら TeX の Info (ヘルプ) を眺めることが出来ます。

LaTeX2e 用の Info が CTAN で公開されています。 是非利用しましょう。(ただし、英語です)

CTAN

CTANComprehensive TeX Archive Network の略称です。 日本語にすれば「包括的な TeX の倉庫」といった意味でしょうか。 世界中のスタイル・ファイル、ドキュメント、TeX 関連のツールが集積されています。

この「包括的な倉庫」はネットワークで結ばれて、いたる所にミラーサイトがあります。 日本では Ring Server などから、CTAN を訪ねることが出来ます。 以下のサイトから最も近いもしくは最も空いている Ring Server に行く事が出来ます。

Ring Server 以下、/pub/text/CTAN で CTAN に着きます。

Install Info

Info は Texinfo という TeX の方言で書かれています。 LaTeX2e 用の Texinfo ファイルは CTAN 以下 documentation/latex2e-help-texinfo/latex2e.texi に置いてあります。 これをダウンロードして下さい。

Texinfo から Info への変換は、Emacs を用います。 latex2e.texi を Emacs で開いて、M-x texinfo-format-buffer を実行します。 すると、Emacs が Texinfo ファイルから Info を作ってくれます。 タイプセットが終了したら出来上った Info を保存します。 (Info ファイルを探す必要はありません。 タイプセットが終了した時点で、 あなたは Texinfo ファイルから Info ファイルへと移動しているはずです。 何も考えず C-x C-s を押しましょう。)

Install for System

Info は通常 /usr/info/usr/local/info (Red Hat 8.0 の場合は /usr/share/info/usr/local/share/info) に納められています。 出来た info ファイル (latex, latex-[123]) をいずれかのディレクトリーにコピーします。

Info システムは、総ての Info ファイルを dir というファイルで管理しています。 簡単に言えば目次のようなものです。 新しい Info を追加するには、dir ファイルを編集します。 dir は info の入っているディレクトリーの中にあります。 開いたら次の一文を適当な所に挿入します。

* LaTeX2e: (latex).                  LaTeXe help 1.6.

Install for your own

システムにインストールしたくない場合や、 インストールしたくとも管理者権限がない場合には、 自分のホームディレクトリー以下にインストールすればよいでしょう。 適当なディレクトリー (例えば ~/info) を作り、 そこに info ファイルをコピーします。

その info ディレクトリーには、dir ファイルが無いことでしょう。 システムの dir ファイルをコピーして流用します。

最後に、.emacs ファイルに新しい info ディレクトリーの所在を教えます。

;; 個人用 Info ディレクトリーの追加
(setq Info-default-directory-list
      (cons "~/info/" Info-default-directory-list))

Browse Info

Info ファイルを見るには Emacs で C-h i とします。 Info では、LaTeX でいう所の section, subsection を階層的に管理し、 ノード (node) と呼んでいます。 Info はスペースを押すだけで全てを見てまわれるようになっています。 スペースの他によく使うコマンドは次の通りです。

key document
n 次のノードへ
p 前のノードへ
u 上のノードへ
t Info のトップへ戻る
d 一番上まで戻る
RET ハイパーリンクを辿る
l 以前いたノードに戻る

詳しくは Info という名前の Info をお読み下さい。

Search LaTeX keyword

Emacs には、キーワードを検索して該当する Info ノードを表示してくれる機能があります。 LaTeX のコマンドを度忘れしてしまった時、詳しい説明が読みたくなった時に重宝します。

例えば、\tableofcontents の説明が読みたくなったら、 \tableofcontents の上にカーソルを置いて C-h C-i (Emacs 22 系の場合は C-h S) とします。 キーワードが自動的に読み取られ、正しいかどうか尋ねてきます。

Describe symbol (defalt \tableofcontents): 

よければ RET を打ちます。 間違っていれば修正しましょう。 キーワードが Info ファイルの中にあれば該当するノードが表示されます。

このコマンドは、使用しているメジャー・モードに合わせて検索する Info を変えます。 例えば C のソースを書いていれば、libc.info を検索してくれます。


X-Symbol

X-Symbol は Emacs に semi-WYSIWYG な環境を与えるパッケージです。 AUCTeX や YaTeX などの TeX 入力支援環境と一緒に使えます。 (TeX の他に HTML, SGML, Texinfo でも動作します) X-Symbol が提供する機能は:

いわゆる「シンボル」の入力支援をします。

数学記号の入力支援では、 ギリシャ文字や \rightarrow などの記号の入力を支援します。 複数種 (8 つ?) の入力方法が用意されています。 ただし amssymb.sty が提供する追加数学記号については、未サポートの部分が残っています。

アクセント付文字の入力も出来ます。 数学記号の入力支援と同様の機能を使って実装しています。 ö や ç などが入力出来ます。

^{text} の中身を上付き (text) で表示したり、 \alpha を α と表示したり、 数学記号を、独自のフォントを追加して、表示します。 [screen shot]。 また、画像をインライン表示します (Windows では未サポートか?)。

Install X-Symbol

X-Symbol の開発環境は XEmacs 上です。 GNU Emacs 20 系でも動くという話ですが、いくつかの機能は使えないそうです。 GNU Emacs で使うなら、Emacs 21 で動作させるのがよいようです。

GNU Emacs 21 以降では、 特殊文字の表示や複数の大きさのフォント表示が出来ます。 X-Symbol の安定版は ver. 3 系ですが、 GNU Emacs 21 上での動作を目的に開発版 ver. 4 の開発が進行中です。 本家ホームページでは、 X-Symbol 4.51 が配布されています。

ダウンロード・ページから、 binary package (x-symbol-4.51-pkg.tar.gz) をダウンロードします。 source package (x-symbol-4.51-src.tar.gz) は使いません。 source package には動作に必要な auto-autoloads.el というファイルが欠けています。 このファイルを補充すれば、source package でも問題なくインストール出来ると思うのですが、試した事はありません。

ホームページ上に (英語で) 書いてある通りにやれば、 X-Symbol はインストール出来ます:

  1. mkdir x-symbol; cd x-symbol
  2. tar xzvf x-symbol-?.??-pkg.tar.gz
  3. cp etc/x-symbol/Makefile.emacs ./Makefile
  4. Makefile 中のパスを環境に合わせて変更 (デフォールトでは次の通り)
  5. make
  6. root になって
  7. make install

最後に .emacs に設定を書きます。 Path は、自分の環境に合うように設定して下さい。

;; -------------------------------
;;   X-Symbol mode customization.
;; -------------------------------

(defvar x-symbol-lisp-directory
  "/usr/local/share/emacs/site-lisp/x-symbol")
(defvar x-symbol-data-directory
  "/usr/local/share/emacs/etc/x-symbol")
(load (expand-file-name "auto-autoloads" x-symbol-lisp-directory))
(x-symbol-initialize)

X-Symbol Usage

例として、ギリシャ文字 π を入力してみましょう。

(1) 一番簡単な方法 --- メニューを使う方法 --- です。 [X-Symbol] からプル・ダウンメニューで、ギリシャ文字を選びます。 とても簡単に入力する事が出来ます。(きっと誰もこの入力方法は使わないでしょう)

(2) C-= C-= で画面が二つに分かれて、記号集が現れます[screen shot]。 π にカーソルを移動させ RET。 π 記号が入力されます。一番分かり易い方法です。

(3) C-= # p と打ちます。 π が入力されます。 π 記号を出す為のキーを知る為には、π の後ろにカーソルを持って行きます。 するとミニ・バッファに情報が表示されます:

BEFORE: π = \pi (greek) C-= +: # p, p #

これは、カーソルの前にある文字は π で、 ソース・ファイルには \pi と入力されていますよ。 入力方法は C-= # p とするか C-= p # としますよ。 という意味です。

第四・第五の方法は C-,C-. を使います。 d の後ろで、C-, とすると、 d は偏微分記号にかわります。 C-. なら、δ にかわります。 前者が記号用の変換、後者がギリシャ文字用の変換です。 π を入力する場合、p の後ろで C-. です。 YaTeX のイメージ入力に似ています。

Customization

X-Symbol は TeX モードの他、bibtex, sgml, html, texinfo モードでも使えます。 同様の操作でアクセント文字や記号が入力出来ます。 特定のモード (例えば texinfo モード) で、 X-Symbol を Off にするには変数 x-symbol-auto-mode-alist をいじります:

(setq x-symbol-auto-mode-alist
      '(((tex-mode latex-mode plain-tex-mode) "\\.tex\\'" 'tex
	 (x-symbol-auto-coding-alist x-symbol-tex-auto-coding-alist 10000) x-symbol-coding t t)
	((bibtex-mode) t 'tex)
	((sgml-mode html-mode) (html-mode) 'sgml
	 (x-symbol-auto-coding-alist x-symbol-sgml-auto-coding-alist 10000) x-symbol-coding t t)
	((texinfo-mode) nil 'texi)))

Bugs

GNU Emacs-21.4 以前では、X-Symbol を使っているとファイルが保存できない、 という致命的なバグがあります。 次のコードを (x-symbol-initialize) より後ろに追加すると、 問題は解決します:

(setq x-symbol-auto-conversion-method 'slowest)

ただし、この解決策は完璧ではなく、 Emacs 上のバージョン・コントロールと競合するそうです。 バージョン管理を行うには、開発版の Emacs を使う方法があります。

X-Symbol 4.4.3 以前のバージョンでは、 ファイル保存時に coding の判定に失敗します。 この不具合は 4.4.4 以降で修正されています。

X-Symbol 4.4.3 付属の Makefile.emacs は info のインストールに失敗します

X-Symbol 4.0f 以前のバージョンは emacs-21.1 の ps-print.el と相性がよくありません。 X-Symbol をロードした後に ps-print を実行すると失敗します。 この不具合は 4.0g 以降で修正されています。 ps-print を併用する場合、X-Symbol のバージョン・アップをお勧めします。 XEmacs ではこのような不具合は起きません。


[Home] [Top]
Masayuki Ataka / 安宅 正之
e-mail: ataka@milk.freemail.ne.jp
Counter