YaTeX でタイプセットからプレビューまで一括して行う

この記事は推奨しません。書きなおしたものをどうぞ。

latex-typeset.el というのを書いた - TIPS

関数 yatex-typeset-and-preview のなかの platex コマンドや dvi ファイルを変換する dvipdfmx などは違うコマンドを使いたい場合は適宜修正のこと。キーバインドも同様。 C-c C-c で全体のタイプセットとプレビュー、 C-c C-r でリージョン選択部分のタイプセットとプレビューにしてある。
aux ファイルは必要になることが多いので該当する行をコメントアウトしておいてもいいかも知れない。

(defun shell-command-sequence (cmd &rest others)
  (mapc 'shell-command `(,cmd ,@others)))

(defun yatex-typeset-and-preview ()
  (interactive)
  (let* ((f (buffer-file-name))
         (dir (file-name-directory f))
         (stem (file-name-sans-extension f)))
    (save-excursion
      (basic-save-buffer)
      (shell-command-sequence (concat "cd " dir)
                              (concat "platex " f)
                              (concat "dvipdfmx " stem ".dvi")
                              (concat "rm " stem ".dvi")
                              (concat "rm " stem ".aux") ;; ここはコメントアウトすべきかも
                              (concat "rm " stem ".log"))
      (pop-to-buffer (find-file-noselect (concat stem ".pdf"))))))
      
(defun yatex-typeset-and-preview-region (beg end)
  (interactive "r")
  (let* ((f (file-name-nondirectory (buffer-file-name)))
         (tmpfile (concat "/tmp/" f))
         (stem (file-name-sans-extension tmpfile))
         (contents (buffer-substring-no-properties beg end))
         header)
    (save-excursion
      (goto-char (point-min))
      (re-search-forward "\\\\begin{document}")
      (setq header (buffer-substring-no-properties (point-min) (1+ (match-end 0))))
      (set-buffer (find-file-noselect tmpfile))
      (insert header)
      (insert contents)
      (insert "\\end{document}")
      (unwind-protect
          (yatex-typeset-and-preview)
        (shell-command (concat "rm " tmpfile))
        (kill-buffer (current-buffer))))))

(add-hook 'yatex-mode-hook
          (lambda ()
            (local-set-key (kbd "C-c C-c") 'yatex-typeset-and-preview)
            (local-set-key (kbd "C-c C-r") 'yatex-typeset-and-preview-region)))

Emacs 23 以降なら pdf も閲覧可能なのでこれで問題ないでしょうが、使っている Emacs が古いとか viewer で見たい場合には yatex-typeset-and-preview の最後の行をコメントアウトして shell-command-sequence の最後の引数に linux なら

(concat "xpdf " stem ".pdf")

あるいは

(concat "acroread " stem ".pdf")

などを入れる。 mac なら例えば

(concat "open -a Preview " stem ".pdf")

でも可。

yatex-typeset-and-preview-region (C-c C-r) は tex ファイルのリージョンを選択した部分だけをプレビューできる。数式の仕上がりをみたりするのに良いです。最近のパソコンなら全体をタイプセットしてしまってもそんなに時間はかからないですが pdf ファイルを目的の場所までたどるのが大変な場合には重宝します。

追記
部分タイプセットでは一時ファイルを/tmp/に作るので、マクロなどを別ファイルにしてプリアンブルに\input{}している場合にはそのファイルをtexのスタイルファイル用のパスが通ったところに置く必要がある。

タイプセット時のエラー箇所がわからないときは yatex のタイプセット(C-c tj)をつかう。