_▲ Top ▲ 備忘録

* Meadow

目次 :


参考

  1. めどうさん入門 (Meadow 入門)
  2. Meadow memo
  3. .emacs Framework
  4. dot emacs settings / Petit emacs lisp tips on .emacs.el

* For TeX

* YaTeX Reference

(Last modified '02/11)

野鳥で数式モードで補完される数式記号 イメージとギリシャ文字の入力キーと LaTeX コマンドの一覧表を TeX で打ち直 したものを作ってみました.数式環境中で ; [TAB]: [TAB] で出るやつです.詳しくは Info YaTeX (yatexj)yatexmth.elを参照.

あと,かなり前に作った数式記号一覧表もついでに.当時は秀丸で作ってた.よ く作ったなぁこんな阿呆なの.

例によって無保証です.

YaTeX 数式記号イメージ,ギリシャ文字一覧表
ytxmthsgn.tar.gz [ tex+ps, 25kB ] ,
ytxmthsgn.pdf [ pdf, 92kB ]
LaTeX,AmS-LaTeX 数式記号一覧表
mathsymb.tar.gz [ tex+ps, 47kB ] ,
mathsymb.pdf [ pdf, 160kB ]

Acrobat Reader のダウンロードはこちらから : Get Acrobat Reader


* YaTeX + BibTeX + reftex-mode

(Last modified '03/04/07)

次のような複数のファイルに分割した文書を扱う場合

% This is main.tex
\documentclass{jreport}
\begin{document}

% 分割した各章を読み込む
\input{chapter1}
\input{chapter2}
...

% 参考文献
\bibliographystyle{jplain}
\bibliography{books}

\end{document}

chapter1.tex から reftex 使って他のファイルのラベルを相互参照したい,文 書全体のアウトラインを表示して編集したい, main.tex で載せる books.bib の 文献を参照したい,そして一気にコンパイルしたい,時の設定メモ.

まず, yatex-mode で reftex-mode をオンにする.M-x reftex-mode でもいいけど.

(add-hook 'yatex-mode-hook 'turn-on-reftex) ; with YaTeX mode

親ファイル名を手動で設定する.

(setq TeX-parse-self t)
(setq-default TeX-master nil) ;; Set master-file-name manually

上の設定を .emacs で書いておけば *.tex を開くと自動的に reftex-mode がオ ンになって, reftex で相互参照とか使うときに親ファイル名を尋ねてくるので, ファイル名を入力してやる.

とりあえずここまでやっておけば,分割コンパイルする場合でも子ファイルから 全体の相互参照が可能になる. BibTeX 使って文献参照も可.

ただ, BibTeX 使うと都合 4 回ほどコンパイルを繰り返さねばならいので,latexmk を 使って一気にコンパイルする. latexmk は Q and A on YaTeX で紹介されて ます.要 Perl .使う前に RC ファイル ~/.latexmkrc を作って変数設定をする. 詳しくはマニュアル latexmk (1) 参照.下記 ~/.latexmkrc 設定 例では 角藤 版 pTeX を使ってます.

$latex  = 'platex';
$latex_silent = 'platex -interaction=batchmode';
$bibtex = 'jbibtex';
$dvips  = 'dvipsk';
$dvi_previewer ='start dviout'; # -pv option

Cygwin 使ってれば latexmk.pl を latexmk に名前を変えて,アタマの #!/path/perl をチェックしといて,パスの通ったところにおいて実行可能フラ グを立てとけばよし.親ファイルのアタマに %#!latexmk,子ファ イルなら %#!latexmk main.tex を書いておけば C-c t j で一発コンパイル.

さらに進んで, local-variable を使って親ファイルを設定する方法.詳細は info (Emacs) File Variales とか (RefTeX) Multifile Documents あたりにあります.まず, yatex-mode で local-variable を有効にする.

;; Enable local-variable
(add-hook 'yatex-mode-hook
          '(lambda ()
               (setq enable-local-variables t)))

子ファイルであれば,ファイルの末尾に

%%% Local Variables:
%%% mode: yatex
%%% TeX-master: "main"
%%% End:

と書いておく.親ファイルなら %%% TeX-master: t でいいらしい. local-variable のリセットは M-x normal-mode で行われる.

あと,C-c ) (reftex-reference) , [ efinst] でラベ ルの種類を選択するんだけど, IME をオンにしているといちいち オフにしない といけないので,モードフックで IME コントロールかけて自動的にオフになる ようにしておく.

(add-hook 'reftex-mode-hook
          '(lambda ()
             (wrap-function-to-control-ime 'reftex-reference t nil)))

以下, reftex-mode 超簡易リファレンス.ちなみに,野鳥でも C-c d (Display Document hierarchy) で各ファイルの階層構造を見れるんだ けど, reftec-toc の方がかなり見やすい.別な話になるが, BibTeX-mode の C-c C-e C-a とか,とてもやってられん.メニューバーを活用すべ し.

Key Function Comment
C-c = reftex-toc Table of Contents を見る.
C-c ( reftex-label \label を貼る.
C-c ) reftex-reference \ref :ラベル参照. help:[?]
C-c [ reftex-citation \cite :文献引用.
キーワードは正規表現で検索できる.
\bibliography で bib ファイルを予め指定する必要あり.
C-c & reftex-view-crossref 相互参照先を見る.

[追記] ('05/01/26) : おまけ.reftex-toc と reftex-citation を実行しているときのスクリーンショット(クリックで拡大).

screenshot of
reftex-toc|citation [png, 20KB]

参考サイト.あとは info RefTeX か…. latexmk は CTAN にあ ります.Ring Server Project で検索 かければ出ます.


* RefTeX citation with mcomplete-history

(Last modified '05/01/07)

RefTeX citation は非常に強力なのだが,mcomplete-history を使っていると,過去の検索ヒストリに引っ掛かってしまってうまく検索できな いことがある.たとえば,ある人の文献を一覧したくて人名で単純に検索すると き,その名前が含まれているラベルなんかがヒストリに残っていると,ヒストリ 中から mcomplete-history が補完してしまって,望んだ検索ができなかったり する.

そんなわけで,reftec-citation の前後で mcomplete-history の ON/OFF をす るように wrapping してしまえばいい.

(defun my-reftex-cite (&optional no-insert format-key)
  (interactive)
  (turn-off-mcomplete-mode)
  (condition-case var
      (reftex-citation no-insert format-key)
    (turn-on-mcomplete-mode)
    (error var))
  (turn-on-mcomplete-mode))

(add-hook 'reftex-mode-hook
          '(lambda ()
             (define-key reftex-mode-map "\C-c[" 'my-reftex-cite)))

* Jump to Dviout from Meadow

(Last modified '04/01/05)

元ネタ : meadow->dviout ジャンプ

TeX-master を設定していない場合でも動くようにするのと,dviout -1 の実行に shell を使用するのではなく,subprocess で実行するようにした. novecento さん御指摘ありがとうございます.前のバージョンのはこちらに残してあります.

;; http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/18610.html
;; must typeset tex-source file with -src (source specials) option
(defun dviout-jump-to-line ()
  (interactive)
  (save-excursion
    (save-restriction
      (widen)
      (let ((word (thing-at-point 'word)))
        (beginning-of-line 1)
        (let* ((curr-line (+ 1 (count-lines (point-min) (point))))
               (dvi-master-file (expand-file-name
                                 (cond
                                  ((and (eq major-mode 'yatex-mode)
                                        (fboundp 'YaTeX-get-preview-file-name))
                                   (YaTeX-get-preview-file-name))
                                  ((and (boundp 'TeX-master)
                                        (stringp TeX-master))
                                   TeX-master)
                                  (t
                                   (buffer-file-name)))))
               (dvi-file (concat
                          (file-name-sans-extension dvi-master-file) ".dvi"))
               (master-file (expand-file-name (buffer-file-name))))
          (let ((args (list "-1" dvi-file
                            (concat "# " (int-to-string curr-line) "/" word
                                    " '" master-file "'"))))
            (process-kill-without-query
             (apply 'start-process " *preview-jump*" nil "dviout" args)
             )
            (message (apply 'concat "dviout" args))
            ))))))

タイプセット時に -src オプションを付けて, dvi file に source special を埋め込むのを忘れないように. latexmk を使っているのであ れば,~/.latexmkrc で $latex = 'platex -src'; にしてしまえ ばよし.

dviout の ヘルプ より.逆に, dviout から Meadow へジャンプする方法. [Option]-[Setup Parameter]-[Common] を開いて, srcgnuclientw^s+%d %s を設定.これは gnuserv 使う場合の設定. dviout でジャンプしたい単語をダブルクリックする と, Meadow の該当個所にジャンプしてくれる.詳しくは, dviout help の source specials の項を参照.


* YaTeX Font Lock Settings

(Last modified '03/09/18)

YaTeX の font-lock keywords の追加.\foo 型キーワード(数式 環境中のものか YaTeX が触らないもの)と,括弧関係と改行(\\).

;; Add font-lock keyword
(setq my-YaTeX-font-lock-keywords
      '(("\\(\\\\\\(left\\|right\\)\\([][().|]\\|\\\\[{}]\\)\\)"
         (0 font-lock-warning-face))
        ("\\(|\\|&\\|\\\\[{}]\\|\\\\\\\\\\)" (0 font-lock-warning-face))
        ("\\\\[a-zA-Z]*" (0 font-lock-builtin-face))
        ))
(add-hook 'yatex-mode-hook
          '(lambda ()
             (setq
              YaTeX-font-lock-keywords
              (append YaTeX-font-lock-keywords my-YaTeX-font-lock-keywords))))

font-latex.el も試してみたものの,個人的にはいまひとつだった. 参考 : 野鳥について


* preview-latex on Meadow

(Last modified '03/09/29)

当方 yatex を使っているのですが,preview-latex が便利そうなので,なんと なくインストールしてみました.でも今から AUCTeX に乗り替えるというのもま た大変な話なので,今後あまり使うことはないような気がする.

下記 Meadow-2.00 Beta2-dev (Emacs 21.1.1) に AUCTeX 11.13 + preview-latex 0.7.8 をインストールした際のメモ.ghostscript 7.04, TeX は 角藤版 pTeX です.The first version known to work with preview-latex is Emacs-21.1 とあるので Meadow2 は preview-latex が動くギリギリのバージョンということになる.

参考:

AUCTeX のインストール

$ tar xvzf auctex-11.13.tar.gz 
$ cd auctex-11.13
$ make EMACS=meadow
$ make lispdir=/c/Meadow/site-lisp install

これで site-licp 下に auctec/tex-site.el がインストールされる.tex-jp.el は make install でコピーされなかったのでコピーしておいた.

preview-latex のインストール

$ tar xvzf preview-latex-0.7.8.tar.gz
$ cd preview-latex-0.7.8
$ ./configure --with-emacs=meadow \
 --with-texmf-dir=/c/bin/tex/share/texmf/ \
 --with-tex-site=/c/Meadow/site-lisp/
$ cd ..
$ tar xvzf preview-latex-prebuilt-docs-0.7.8.tar.gz 
$ cd preview-latex-0.7.8
$ make
$ make install

--with-texmf-dir で TeX のインストールされているディレクト リを,--with-tex-site で AUCTeX の tex-site.el のあるディレクトリを指定する.prebuilt-doc (preview-latex の info)のイン ストールをおこなう場合は configure 後にファイルを解凍するらしい.インス トール先が c:/Meadow/2.00b2/share/emacs/site-lisp/preview とかわけわからんことになってしまったので, /c/Meadow/site-lisp/preview-latex/ へ移動.configure で --with-lisp-dir 使っておけばよかったのか.

設定

本当に下記の設定でよいものなのかどうなのか,いまひとつ確信がもてないが, 一応これで動いた.

;; auctex
(setq load-path (cons (expand-file-name
                       "/c/Meadow/site-lisp/auctex/") load-path))
(require 'tex-site)
(require 'tex-jp)
(setq TeX-default-mode 'japanese-latex-mode)
(setq japanese-TeX-command-default "platex")

ghostscript の設定は configure 前に環境変数 GS="/path/to/GhostScript"とかで指定するというような記述がマニュ アルにあるけど,やってなかった.

;; preview-latex
(load "preview.el" nil t t)
(setq preview-gs-command "/c/bin/gs/gs7.04/bin/gswin32c.exe")
(setq preview-dvips-command
      "dvipsk -Pwww -i -E %d -o %m/preview.000")
(setq preview-fast-dvips-command
      "dvipsk -Pwww %d -o %m/preview.ps")

最後にスクリーンショットを一枚(クリックで拡大).映ってないけど,トーラス の図の上にマウスポインタがあります.

screenshot of preview-latex [png, 27KB]