ラベル SyncTeX の投稿を表示しています。 すべての投稿を表示
ラベル SyncTeX の投稿を表示しています。 すべての投稿を表示

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)

2014年5月20日火曜日

emacs内でTeX文書の作成からpdf閲覧まで行う

TeX WikiのEmacsに関する記述を見ていると,sheepheadさんのblog記事:Emacs上のPDFでisearch,occur,imenuとかなんでもしてしまうpdf-toolsの紹介が紹介されていました.Emacs23を導入したときに,EmacsでPDFファイルを表示するDocViewを試したことがありましたが,使い勝手が悪かったためすぐに使わなくなりました.

まずdoc-view-modeの基本的な操作法をまとめておきます.
キーコマンド機能
n'doc-view-next-page次のページ
p'doc-view-previous-page前のページ
C-n'doc-view-next-line-or-next-page1行下方へスクロール
C-p'doc-view-previous-line-or-previous-page1行上方へスクロール
SPACE'doc-view-scroll-up-or-next-page下方スクロールまたは次のページ
DEL'doc-view-scroll-down-or-previous-page上方スクロールまたは前のページ
k'doc-view-kill-proc-and-bufferプロセスを終了しバッファを閉じる
g'revert-bufferバッファを閉じる
+'doc-view-enlarge拡大
-'doc-view-shrink縮小
カーソルキー -上下左右方向へスクロール
M-g M-g 'doc-view-goto-page指定したページへ移動
M->'doc-view-first-page最初のページへ移動
M-<'doc-view-last-page最後のページへ移動

上述の記事ではEmacsのdoc-view-modeの使い勝手を良くするEmacs拡張アプリであるpdf-toolsを紹介していたので,早速試してみました.環境はMac OS X MavericksでEmacs 24.4.50を使用しています.

pdf-toolsを検索してみたのですが,検索上位に現れるGitHubのpolitza/pdf-toolsはLinux環境を前提としているようで,そのままソースをコンパイルしてみるとエラーが出ます.ソースコードを少し書き直すとMacでも使えたという情報も見かけたものの,ソースコードをいじる技術力がないので,誰かMacに対応したものを作っていないか他力本願で探してみるとGitHubにありました.

axot/pdf-toolsからzipファイルをダウンロードして展開し,ソースをコンパイルしてみるとすんなり通りました.するとソースを展開したフォルダにpdf-tools-0.20.tarというファイルが出来たので,Emacs上で
M-x package-install-file RET pdf-tools-0.20.tar RET
としてインストールしました.これでdoc-view-mode上で動作する色々なマイナーモードが使用可能になります.

M-x pdf-tools-helpで各マイナーモードや用意されている関数の説明を見ることができます.


EmacsからC-x, C-fでpdfファイルを選択して開き
  • pdf-isearch-minor-mode
  • pdf-sync-minor-mode
  • pdf-link-minor-mode
を試しました.まずdoc-view-modeはimagemagickのconvertコマンドを使ってpdfファイルをpngファイルに変換してEmacsのウィンドウ内に表示します.数ページのpdfファイルであればその変換にかかる時間が気にならないと思いますが,私は普段から数百ページのファイルを扱うことが多いため変換に時間が掛かり,LaTeXファイルのタイプセットの度にpdfファイルを再読み込みして変換をしなければならないため,この時点ですでにげんなりしてしまいます.画像ファイルの解像度が粗いのも気になりました.

pdf-toolsで今回試したマイナーモードはいずれもよく働きます.
isearchでは,検索した語句がハイライトされました.

pdf-links-minor-modeをonにすると,pdfのhyperlinkでジャンプ出来るようになりました.またpdf-sync-minor-modeでは,pdfのダブルクリックした部分に該当するTeXソースファイルの内容が表示されることを確認できます.
逆にソースファイルからpdfへジャンプする機能については,helpを見ると設定のための関数が用意されているので出来るとは思いますがそこまでは試していません.

ページの遷移がコマンドで済むことやisearchが出来ることは便利なのですが,ページ数の多いファイルをタイプセットする毎にpdfファイルを読み直して画像ファイルへ変換するという手間がかかることを考えるとあまり実用的ではないかなぁ.