2011年6月29日水曜日

YaTeXとRefTeXの共存

RefTeXは相互参照の入力補完を行うelispです。長い原稿を書く際には必需で、これなしではやってられません。YaTeX側にはprefixキーを自由に選択できる余地があるのですが、RefTeXはAucTeXと合わせて使うことを前提としているためか、prefixキーがCtrl-cに固定されています。YaTeXの幾つかのコマンドと重複して使いづらいので、現在はYaTeXのコマンドをメインにして、RefTeXのキーを変更して使っています。

対処療法的なところがあるのであまりオススメはしませんが、Web上でこのような情報をあまり見かけないので.emacs.elを晒しておきます。本当はRefTeXにも自由に変更出来るprefixキーを定義するなどの変更を行うべきなのでしょうが、elispが読み書き出来無いのでこの程度で勘弁してください。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; RefTex 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; YaTeX-modeでReftex-modeを使う.
;; YaTeX-modeでの色使いを変更する
(add-hook 'yatex-mode-hook
'(lambda()
(progn
;               (reftex-mode)       ; reftex-modeを使う
(turn-on-reftex)
(setq TeX-parse-self t)
;               (setq-default Tex-master nil)
(setq enable-local-variables t)
(YaTeX-font-lock-recenter)
)))


;;数式のラベル作成時にも自分でラベルを入力できるようにする
(setq reftex-insert-label-flags '("s" "sfte"))


;;; YaTeXとの競合の解消 (競合部分はYaTeXを優先する)
;; YaTeXでのコマンドの定義は"yatex.el"の"Define key table"部分を参照せよ

(add-hook 'yatex-mode-hook
#'(lambda ()
(reftex-mode 1)
(define-key reftex-mode-map
(concat YaTeX-prefix ">") 'YaTeX-comment-region)
;指定領域のコメントアウト "C-c >"
(define-key reftex-mode-map
(concat YaTeX-prefix "<") 'YaTeX-uncomment-region)
;コメントアウト解除 "C-c <"
(define-key reftex-mode-map  (concat YaTeX-prefix ")") 'YaTeX-insert-parens-region)
;領域を括弧で括る "C-c )"
))


;; 上でYaTeXに譲り渡したRefTeXのコマンドを定義し直す  
;;;;; labelの参照のコマンドを"C-c )"から"C-h )"に変更(暫定的)
(add-hook 'reftex-mode-hook
 '(lambda ()
               (define-key reftex-mode-map "\C-h)" 'reftex-reference)
               (define-key reftex-mode-map "\C-h=" 'reftex-toc)
               (define-key reftex-mode-map "\C-h(" 'reftex-label)
               (define-key reftex-mode-map "\C-h[" 'reftex-citation)
               (define-key reftex-mode-map "\C-h<" 'reftex-index)
               (define-key reftex-mode-map "\C-h>" 'reftex-display-index)
               (define-key reftex-mode-map "\C-h/" 'reftex-index-selection-or-word)
               (define-key reftex-mode-map "\C-h\\" 'reftex-index-phrase-selection-or-word)
               (define-key reftex-mode-map "\C-h|" 'reftex-index-visit-phrases-buffer)
               (define-key reftex-mode-map "\C-h&" 'reftex-view-crossref)
))

;;;

;;; C-h&でhyperlink, hypertarget間の相互ジャンプを可能にする

(setq reftex-view-crossref-extra
'(("\hyperlink" "\hypertarget{\\(%s\\)}" 1)
("\hypertarget" "\hyperlink{\\(%s\\)}" 1)))


;;; 新たなlabel環境の定義

;; \eqrefを使う
(setq reftex-label-alist 
'(
(nil ?e nil "\\eqref{%s}" nil nil)
("theo"  ?h "theo:"  "\\ref{%s}" t ("定理"))
("axiom"  ?a "axiom:"  "\\ref{%s}" t ("公理"))
("prop"  ?p "prop:"  "\\ref{%s}" nil ("命題"))
("lem"   ?l "lem:"   "\\ref{%s}" nil ("補題"))
("defi"  ?d "defi:"   "\\ref{%s}" nil ("定義"))
("coro"  ?c "coro:"   "\\ref{%s}" nil ("系"))
))

YaTeXで数式括弧の大きさ変更

LaTeX数式で大きさ指定の括弧を書くとき、毎回\bigg(\bigg)などと記述するのは結構面倒なものです。
普段からYaTeXを使っているのですが、括弧の大きさを変更出来る機能があることを最近初めて知りました。

\Bigl( ... \Bigr) などのような括弧の上で [prefix] c と打鍵し、l,L,h,H,r,nの中から好きなものを選択すると括弧の大きさを変更できます。ただし YaTeX-use-AMS-LaTeX を t にしておくことと、 \Big(\Big)のような記述では反応しないので注意が必要です。

2011年6月19日日曜日

お気に入りノート

先日LoftでRoessler Papier社のFlipBookを購入して大変に気に入ったのですが、この間Loftに立ち寄ると既に取り扱いが終わっているようでした。
Webで検索しても海外のサイトしか表示されないし、国内で取り扱っていないのでしょうか。
個人的にはモレスキンよりも好みなのですが。