CarbonEmacsAndYatex
Carbon Emacs で YaTeX を使うためのノウハウ。
関連ページ
- YaTeX公式サイト - http://www.yatex.org/
- Mac Emacs JP プロジェクトの YaTeX ページ - http://macemacsjp.sourceforge.jp/?YaTeX
- TeX Wiki の YaTeX ページ - http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?YaTeX
インストール
makeコマンドを利用するためには DeveloperTools をインストールしておく必要があります。
- OSX付属のEmacs
makefileの一部を次のように編集し、$ sudo make install、 $ sudo make install-infoを実行。
PREFIX = /usr EMACS = emacs EMACSDIR= ${PREFIX}/share/${EMACS} INFODIR = ${PREFIX}/share/info
- CarbonEmacs (非パッケージ)
makefileの一部を次のように編集し、$ sudo make install、 $ sudo make install-infoを実行。
PREFIX = /usr/local EMACS = emacs EMACSDIR= ${PREFIX}/share/${EMACS}
- Carbon Emacs (パッケージ)
メニューの「Help > Carbon Emacs Package > Net-install > YaTeX」を選ぶと、ネットワーク経由でインストールできます。
- うまくいかない場合は、makefileの一部を次のように編集し、$ sudo make install、 $ sudo make install-infoを実行して下さい。(## Carbon Emacs on Darwin (Sample) と書いてある付近の行をコメントアウト) /Applications/Emacs.app の部分は、自分が Emacs をインストールした場所に置き換えて下さい。
EMACS = /Applications/Emacs.app/Contents/MacOS/Emacs PREFIX = /Applications/Emacs.app/Contents/Resources EMACSDIR = ${PREFIX}
$ sudo apt-get install task-tetex
で利用可能になります。 以下の設定がほぼ反映されています。
- インストールの確認
インストール後、基本設定を行ってから拡張子.texのファイルを開いて以下を確認してください。
基本設定
- YaTeXを起動するには.emacs.elに以下を追加してください。
(setq auto-mode-alist (cons (cons "¥¥.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
- platexコマンドの設定
(setq tex-command "platex")
- 漢字コードが EUCの場合はオプションを追加して下さい(小川版パッケージではコマンドplatex-eucが利用できるが内容は同じ)。
(setq tex-command "platex --kanji=euc --fmt=platex-euc")
- PDFで出力確認を行う場合は適当なスクリプトを用意してそれを実行する。以下の例ではplatex2pdf-utf8 というスクリプトを用意する必要がある。
(setq tex-command "platex2pdf-utf8")
- プレビュアの設定
プレビュアに渡すファイル名(の拡張子)が、設定されているプレビュアの種類をみるようになりました(yatex1.72.za以降)。用意されていないプレビュアを利用するときは再定義が必要です。最新版 1.72.ze 以降ではTeXShopやPreview.appなども定義されています。
(defvar YaTeX-dvi2-command-ext-alist '(("xdvi" . ".dvi") ("ghostview¥¥|gv" . ".ps") ("acroread¥¥|pdf¥¥|Preview¥¥|TeXShop¥¥|Skim" . ".pdf")))
(setq dvi2-command "open -a Skim")
TeXShopのプレビュアをYaTeX(Emacs)から利用できます。TeXShop環境設定パネルの外部エディタの「プレビューを自動更新」にチェックを入れます。TeXShopのプレビュアはDVIファイルではなくPDFファイルをプレビューするので、platexとdvipdfmxを組み合わせてたスクリプトを利用する必要があります(日本語を扱わないならpdflatex)。TeXShopにはそのようなスクリプトが用意されているので、.emacs.elの設定は以下のようになります。
(setq tex-command "~/Library/TeXShop/bin/platex2pdf-sjis" ; eucの場合はplatex2pdf-euc dvi2-command "open -a TeXShop")
- Preview
(setq tex-command "dotexshop" ; eucの場合は"dotexshop-euc" dvi2-command "open -a Preview")
(setq dvi2-command "open -a Mxdvi")
- dotexshopは小川版パッケージにはいっている以下のようなスクリプトです。漢字コードがEUCの場合はplatexにオプション--kanji=euc --fmt=platex-eucを追加します。
#!/bin/sh tex=$* dvi=`/usr/bin/basename "$tex" ".tex"` /usr/local/bin/platex $tex /usr/local/bin/dvipdfmx $dvi
上のdotexshopで/usr/local/bin/platexの代わりにlatexmkと書くと、相互参照がちゃんとするまでplatexやbibtexなどを繰り返し行ってくれる。 latexmk自体はperlスクリプトであり、スクリプト内でplatexにオプションを指定する。下は漢字コードがEUCで、かつsrc-specialを利用する場合。
$latex = 'platex --kanji=euc --fmt=platex-euc --src-specials';
また、jbibtex、mendexを使うように変更したほうがよいかも。
$bibtex = 'jbibtex'; $makeindex = 'mendex';
これらを .latexmkrc に書き込むことで platex, bibtex mendex を繰り返し行うようになります。
- src-specialについてはhttp://www.nn.iij4u.or.jp/~tutimura/tex/src-special.html を参照。
- プレビューにxdviを利用するには.emacsで
(setq dvi2-command "xdvi")
- xdviでsrc-specialを利用するには /usr/local/share/texmf/xdvi/XDviで以下の行のコメントアウトを外す。
*editor: emacsclient --no-wait +%l %f
- 漢字コードの設定(1 SJIS, 2 JIS, 3 EUC, 4 UTF-8)
(setq YaTeX-kanji-code 4)
- エラーメッセージの漢字コード。タイプセット時のエラー出力が文字化けする場合は設定して下さい。
(setq YaTeX-latex-message-code 'utf-8)
- ソースコードの色づけ(font-lockを使う)
(setq YaTeX-use-hilit19 nil YaTeX-use-font-lock t)
カスタマイズ設定
カスタマイズ変数の一覧はYaTeXのinfoにあります。
- AMS-LaTeXを利用する
(setq YaTeX-use-AMS-LaTeX t)
- section型の補完でミニバッファから入力しない
(setq YaTeX-skip-default-reader t)
- YaTeXでは、コマンドの引数をミニバッファから入力するようになっています。しかし、日本語を入力したり、複雑な数式を入力する場合、ミニバッファからの入力がバッファでの入力程度に快適ではない場合があります。yatex-currentでは、ミニバッファで数式記号イメージ補完ができるようになるなど、改良を試みられていますが、別解として最初からミニバッファでの入力をしないというオプションもあります。この設定は好みに応じて決めて下さい。
- Commandキーのショートカットを追加
(setq mac-command-key-is-meta nil) ; metaはoptionキー (add-hook 'yatex-mode-hook '(lambda() (require 'yatexprc) (local-set-key [(alt t)] 'YaTeX-typeset-buffer) (local-set-key [(alt r)] 'YaTeX-preview) ))
- コンパイル、プレビューをCommandキーを使ったショートカットで行えるようにします。YaTeXの補完機能等を、あまり多用しない人には有効かもしれません。
- SKKで「かなモード」のときに「$」を入力すると自動的に「アスキーモード」に切り替える
http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/yatex.html
(add-hook 'skk-mode-hook (lambda () (if (eq major-mode 'yatex-mode) (progn (define-key skk-j-mode-map "¥¥" 'self-insert-command) (define-key skk-j-mode-map "$" 'YaTeX-insert-dollar) )) ))
- ことえり(インラインパッチ)使用時に記号と数字を直接入力する
Inline patch ver. 20060319 以降
;; ことえりの日本語入力時に記号と数字は直接入力する。 (add-hook 'yatex-mode-hook '(lambda () (make-local-variable 'mac-ignore-shortcut) (let (ignore-key-list) (setq ignore-key-list '(? ?! ?\" ?# ?$ ?% ?& ?\' ?* ?+ ?_ ?= ?\\ ?\( ?\) ?< ?> ?@ ?^?` ?\{ ?\} ?| ?~ ?/)) (while ignore-key-list (mac-add-ignore-shortcut (car ignore-key-list)) (setq ignore-key-list (cdr ignore-key-list)))) (let ((i ?0)) (while (<= i ?9) (mac-add-ignore-shortcut i) (setq i (1+ i)) )) )) (add-hook 'yatex-mode-hook '(lambda () (kill-local-variable 'mac-ignore-shortcut)))
- 環境の終わりの \end{document} などを書こうとすると、毎回「今度からはちゃんと ^C b を使いましょう」というメッセージが出てきて煩わしいと感じています。回避策はありませんでしょうか?
- yatex.el の以下の部分をコロンでコメントアウトすれば、補完機能は働きますがメッセージは表示されなくなります。
(momentary-string-display (concat "{" (cond (YaTeX-japan (format "今度からはちゃんと %s b を使いましょう" YaTeX-prefix)) (t (format "You don't understand Zen of `%s b':p" YaTeX-prefix))) "}") (point))
(setq load-path (cons (expand-file-name "場所") load-path))
- pdfTeXでは、図などもPDFファイルを配置するが、Emacs の関数 file-name-completionでPDFファイルが無視される。無視する拡張子のリストに ".pdf" が入っているので取り除いて再定義する。こうすることで、YaTeXの includegraphics の引数のファイル名を補完するときに、候補のファイルがfoo.epsとfoo.pdfと2つある場合に、直ぐにfoo.epsと入力されてしまう問題を回避できる。
(custom-set-variables '(completion-ignored-extensions (quote (".svn/" "CVS/" ".o" "~" ".bin" ".lbin" ".so" ".a" ".ln" ".blg" ".bbl" ".elc" ".lof" ".glo" ".idx" ".lot" ".dvi" ".fmt" ".tfm" ".class" ".fas" ".lib" ".mem" ".x86f" ".sparcf" ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" ".dfsl" ".lo" ".la" ".gmo" ".mo" ".toc" ".aux" ".cp" ".fn" ".ky" ".pg" ".tp" ".vr" ".cps" ".fns" ".kys" ".pgs" ".tps" ".vrs" ".pyc" ".pyo"))))
あるいは
(setq completion-ignored-extensions (remove ".pdf" completion-ignored-extensions))
これは確かに不便な仕様です。どこでデフォルトが定義されているのだろう...
使用方法
info (C-h i) に詳しい解説があります。
- LaTeX コマンドの変更「C-c c」
汎用性の高い機能になっています。例えば、equation環境をalignに変更したいような場合、\begin{equation}または\end{..}のある行で「C-c c」としてみてください。また、section型コマンドなども引数部分をそのままにして変更できます。さらに面白い応用は括弧のサイズ変更です。\exp(\int f dx)の括弧サイズを変更するときは、\Biggl(\Biggr)や\biggl(\biggr) をいろいろ試すことになりますが、こういった場合にも「C-c c」が使えます( l<L<h<H で指定できます)。是非試してみてください。
yahtml
設定例
(autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t) (add-to-list 'auto-mode-alist '("¥¥.html¥¥'" . yahtml-mode))
新しい Emacs 22 では、ファイルの内容のパターンをみてモードを起動する方法が導入されています。次のようにして、magic-mode-alist の html-mode を yahtml-mode に置換すると良いでしょう。
;; Emacs-22 provides magic-mode-alist... (if (boundp 'magic-mode-alist) (or (rassq 'yahtml-mode magic-mode-alist) (setq magic-mode-alist (cons (cons (car (rassq 'html-mode magic-mode-alist)) 'yahtml-mode) magic-mode-alist))))
質問
- 日本語ファイル名のコンパイルができません。ターミナルからは,platex サンプル.tex と入力してコンパイルできますが,Carbon Emacs+YaTeXでコンパイルしようとすると,
##### platex --shell-escape 畳坫.tex This is pTeX, Version 3.141592-p3.1.8 (sjis) (Web2C 7.5.4) \write18 enabled. **
と表示されてしまいます。Copy and Pasteしたら上のようになったのですが,実際の画面ではファイル名のところは,\245\265\245\363\245\327\245\353.tex と表示されます。
- .emacs.el に
(set-default-coding-systems 'utf-8)
を追加すると,メッセージ・バッファーには,\343\202...と表示されるもののコンパイルできました。この10進表示をコピーして貼り付けたところ,サンプル.texとなったので,表示はともかく内部的には認識できているようですね。
- 上の設定ことえり(インラインパッチ)使用時に記号と数字を直接入力するについてですが、shift キーを押して入力する記号がことえりを経由してしまいます。数字などは直接入力になるんですが。