CarbonEmacsAndYatex

提供: MacWiki
移動: 案内検索

Carbon Emacs で 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

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のファイルを開いて以下を確認してください。

    • モード行に「やてふ」と表示
    • C-c ?としてから、ミニバッファからsectionなど適当なLaTeXのコマンドを入力するとYaTeX HELPが読める
    • C-h i (またはM-x info)でinfoにYaTeXの項目がある

基本設定[編集]

  • YaTeXを起動するには.emacs.elに以下を追加してください。
(setq auto-mode-alist
      (cons (cons "¥¥.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
  • ptex2pdfコマンド (upLaTeX) の設定
(setq tex-command "ptex2pdf -u -l")
    • SyncTeXを使用する場合はオプションを追加して下さい。
(setq tex-command "ptex2pdf -u -l -ot \"-synctex=1\"")
  • プレビュアの設定

プレビュアに渡すファイル名(の拡張子)が、設定されているプレビュアの種類をみるようになりました(yatex1.72.za以降)。用意されていないプレビュアを利用するときは再定義が必要です。最新版 1.72.ze 以降ではTeXShopやPreview.appなども定義されています。

(defvar YaTeX-dvi2-command-ext-alist
  '(("xdvi\\|PictPrinter" . ".dvi")
    ("ghostview¥¥|gv" . ".ps")
    ("acroread¥¥|pdf¥¥|Preview¥¥|TeXShop¥¥|Skim" . ".pdf")))
(setq tex-command "ptex2pdf -u -l -ot \"-synctex=1\""
     dvi2-command "open -a Skim")

TeXShopのプレビュアをYaTeX(Emacs)から利用できます。TeXShop環境設定パネルの外部エディタの「プレビューを自動更新」にチェックを入れます。TeXShopのプレビュアはDVIファイルではなくPDFファイルをプレビューするので、uplatexとdvipdfmxを組み合わせてたスクリプトを利用する必要があります(日本語を扱わないならpdflatex)。TeX Liveにはそのようなスクリプトが用意されているので、~/.emacs.d/init.elの設定は以下のようになります。

(setq tex-command "ptex2pdf -u -l -ot \"-synctex=1\""
     dvi2-command "open -a TeXShop")
    • Preview
(setq tex-command "ptex2pdf -u -l -ot \"-synctex=1\""
     dvi2-command "open -a Preview")

ptex2pdfの代わりにlatexmkと書くと、相互参照がちゃんとするまでuplatexやupbibtexなどを繰り返し行ってくれる。
latexmk自体はperlスクリプトであり、スクリプト内でuplatexにオプションを指定する。下はsynctexを利用する場合。
また、upbibtex、mendexを使うように変更する。

$latex = 'uplatex %O -synctex=1 %S';
$pdflatex = 'lualatex %O -synctex=1 %S';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
$makeindex = 'mendex %O -U -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf %O %S %D';
$pdf_mode = 3;
$pvc_view_file_via_temporary = 0;
$pdf_previewer = 'open -ga /Applications/Skim.app';

これらを .latexmkrc に書き込むことで uplatex, upbibtex mendex, dvipdfmx を繰り返し行うようになります。

  • 漢字コードの設定(nil 文字コードを変更しない, 1 SJIS, 2 JIS, 3 EUC, 4 UTF-8)
(setq YaTeX-kanji-code nil)
  • エラーメッセージの漢字コード。タイプセット時のエラー出力が文字化けする場合は設定して下さい。
(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)
    • 数式を含んだ書類を作成する場合は、AMS-LaTeXを利用することをお勧めします(\usepackage{amsmath))。AMS-LaTeXのコマンドの補完機能を追加します。
  • 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))
    • YaTeXユーザとしては、メッセージの通りに^C-bで入力するか、endで閉じるときに ^C-e とするのが良いとは思います。
    • 改造したYaTeXを利用する場合は、YaTeXのディレクトリを自分のホームの適当な場所において、次のような設定を.emacs.elなどに書くと優先的に読み込まれます。
(setq load-path (cons (expand-file-name "場所") load-path))


  • pdfTeX では図のフォーマットもPDFだが、Emacs の関数 file-name-completion がPDFファイルを無視する。このためYaTeXで includegraphics の引数のファイル名を補完するときに、候補のファイルがfoo.epsとfoo.pdfと2つある場合に、直ちにfoo.epsと入力されてしまう。これを防ぐためには、無視する拡張子のリストから ".pdf" を取り除けば良い。
(setq completion-ignored-extensions
      (remove ".pdf" completion-ignored-extensions))

これは確かに不便な仕様です。どこでデフォルトが定義されているのだろう... 「completion-ignored-extensions is a variable defined in `C source code'.」 らしいです。

使用方法[編集]

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))))

質問[編集]

  • 日本語ファイル名のコンパイルができません。ターミナルからは,uplatex サンプル.tex と入力してコンパイルできますが,Carbon Emacs+YaTeXでコンパイルしようとすると,
##### uplatex 畳坫.tex
This is e-upTeX, Version 3.14159265-p3.5-u1.11-130605-2.6 (utf8.uptex) (TeX Live 2014) (preloaded format=uplatex)
 restricted \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 キーを押して入力する記号がことえりを経由してしまいます。数字などは直接入力になるんですが。

Wiki内の関連ページ[編集]