2014年6月20日金曜日

Ubuntu 14.04でのEmacsの設定(mozc, YaTeX, SyncTeX, フルスクリーン)

最近MacBook Air (mid 2012)の外付けSSDにUbuntu 14.04をインストールしたので,久しぶりに設定をゴニョゴニョしております.

Emacsの日本語入力では,以前はAnthyを使っていましたが,TeXフォーラムの「emacs, mozc, TeX入力」を見て,mozcでもドル記号を入力したときに自動で直接入力に切り替えることが出来そうだったので設定をしてみました.「~/.emacs.d/init.el」に次のように設定しています.
;;; 言語環境の指定
;;mozcの設定
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")

;;yatex-modeでドル記号を入力したときに直接入力に切り替える。
(define-key mozc-mode-map "$" 'YaTeX-insert-dollar-or-mozc-insert)
(defun YaTeX-insert-dollar-or-mozc-insert ()
  (interactive)
  (if (eq major-mode 'yatex-mode)
      (YaTeX-insert-dollar)
    (mozc-handle-event ?$)))

その他にも,SyncTeXの設定がしばらく見ない間に変わっていたので,TeXWikiを参考に設定も行いました.
synctex-for-evince-yatex.el」をダウンロードしてemacsが読める場所に置きます.
init.elには次のように書き込んでおきます.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; synctex関連
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;inverse search
(require 'dbus)

(defun un-urlify (fname-or-url)
  "A trivial function that replaces a prefix of file:/// with just /."
  (if (string= (substring fname-or-url 0 8) "file:///")
      (substring fname-or-url 7)
    fname-or-url))

(defun evince-inverse-search (file linecol &rest ignored)
  (let* ((fname (un-urlify file))
         (buf (find-file fname))
         (line (car linecol))
         (col (cadr linecol)))
    (if (null buf)
        (message "[Synctex]: %s is not opened..." fname)
      (switch-to-buffer buf)
      (goto-line (car linecol))
      (unless (= col -1)
        (move-to-column col)))))

(dbus-register-signal
 :session nil "/org/gnome/evince/Window/0"
 "org.gnome.evince.Window" "SyncSource"
 'evince-inverse-search)



;;forward-serach

  (require 'synctex-for-evince-yatex)
  (synctex-for-evince-dbus-initialize)
  (add-hook 'yatex-mode-hook
            '(lambda ()
               (YaTeX-define-key "f" 'synctex-for-evince-yatex-forward-search)))
これでUbuntuでも快適にLaTeX生活を送れるようになりました.

追記:2014/06/23: フルスクリーンの設定を書くのを忘れていました.
以下のように記述しておけば,F11キーでフルスクリーンモードに移れます.
;;フルスクリーンモード
(defun toggle-fullscreen ()
  "Toggle full screen on X11"
  (interactive)
  (when (eq window-system 'x)
    (set-frame-parameter
     nil 'fullscreen
     (when (not (frame-parameter nil 'fullscreen)) 'fullboth))))

(global-set-key [f11] 'toggle-fullscreen)