ESS で Sweave 出力

前回、日本語のSweave出力でauctexで用いる方法を示したが、もちろん、ESSは、Sweave のlatex変換に対応している。おそらくRnwファイルを開いていれば、auctexが実行できるだけでなく、メニューに「Noweb」という項目があるはずである。ないのなら、「M-x ess-noweb-mode」でたちあげればよい。

そのもとで、あらかじめ、「M-x R」でRをたちあげておいて、「M-n s」を実行すれば、Sweaveが実行されて、Texファイルが作られる。これは、日本語が含まれている場合、自動的にUTF8モードで変換してくれる。さらに、「M-n l」でlatexの実行ができるが、デフォルトでは、その実行が「pdflatex」なので日本語のはいったRnwファイルは扱えない。

しかしながら、

http://stackoverflow.com/questions/11060023/ess-auctex-sweave-synctex-integration-from-rnw-pdfviewer

を参考にして、

(defun ess-makePDFandView ()
(interactive)
(setq namestem (substring (buffer-name) 0 (search ".Rnw" (buffer-name))))
(setq tex-filename (concat "\"" namestem "\".tex"))
(setq my-command-string (concat "latexmk" tex-filename))
(shell-command my-command-string)
(setq my-command-string (concat "/Applications/Skim.app/Contents/MacOS/Skim \"" namestem ".pdf\" &"))
(shell-command my-command-string))

(define-key ess-noweb-minor-mode-map "\M-nv" 'ess-makePDFandView)

を作成する。オリジナルから5行目が「latexmk」に変更しているのと、最後の行が「ess-noweb-minor-mode-map」になっている。これはmac用で「Skim」を使っているが、他機種も対応可能である。
たとえば、Ubuntuでは7行目を

(setq my-command-string (concat "evince \"" namestem ".pdf\" &"))

と変更すればよい。

こうすることで、日本語のRnwのファイルを開いたままで、texファイルを開くことなく、一気にPDFファイルが作られて見ることができる。英語のみのRnwファイルの場合は、Auctexのもとで、「C-c C-c LatexSweave」でPDFファイルを生成し、「C-c C-v」でファイルを閲覧すればよい。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中