あと一歩?:quickrun.vimでTeX編集してpdfで見る.

 前回書いたエントリーについたコメントを参考にいたしまして、.vimrcにこういう風に書いてみた.

let g:quickrun_config = { 
\ 'tex' : {
\   'command' : 'platex-utf8',
\   'exec': ['%c %s', 'dvipdfmx %s:r.dvi', 'open %s:r.pdf']                 
\ }
\}

これで、.texを開いて\rすれば、確かにpdfまで見れました!

 で、大満足と行きたかったんですが、まだ問題点がありました.変更を加えて保存せずに(:wしないで)、\rをすると、.dviが開けないぜとエラーがでてしまいます.で、例えば4.log、4.aux、4.dviといったファイルがディレクトリに生成されていた*1

 もちろん、保存してから、\rをすれば、ちゃんと成功します.妥協案として、保存も組み入れておく方法しか僕は思いつかなかったorz つまり

'exec': [':w', '%c %s', 'dvipdfmx %s:r.dvi', 'open %s:r.pdf']                 

とする.が!ダメだった.

 邪推をすると、おそらくdviまでは出力している.けど、dviを出力してる場所がカレントディレクトリじゃなくて、どっか(/varの遥か下)の場所になってる.dvipdfmx %s:r.dviのときに、その場所を指定できれば、pdfを出せると.そして、また同じくその場所にあるpdfを指定して、openをしてやればいいのかなぁーと.
 もしくは、platex-utf8するときに、出力するファイルの場所を指定するように書き換える.
 で、第三の方法としては、ujihisaさんの言うように、別にスクリプトを書いてしまうか.

 僕が今週末まではかなり忙しいので、すぐにやらずに保留にしますが、近日中にどうにか自力で*2解決しよう.

追記

 具体的な設定について.まず僕が使っているquickrun.vimはというと、

" Run commands quickly.
" Version: 0.2.0
" Author : thinca

と書いてあるやつです.そして.vimrcに書いた内容は、上に書いたのと同じで、

let g:quickrun_config = { 
\ 'tex' : {
\   'command' : 'platex-utf8',
\   'exec': ['%c %s', 'dvipdfmx %s:r.dvi', 'open %s:r.pdf']                 
\ }
\}

です.まず、うまくいったとき(つまり、保存しちゃったとき)に表示される内容は、(test.texを編集している)

This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4)             
(/Users/fijixfiji/test.tex
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2003/12/01> patch level 0)
(/opt/local/share/texmf/ptex/platex/base/jarticle.cls
Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class
(/opt/local/share/texmf/ptex/platex/base/jsize10.clo)) (./test.aux) [1]
(./test.aux) )
Output written on test.dvi (1 page, 364 bytes).
Transcript written on test.log.
/Users/fijixfiji/test.dvi -> test.pdf
[1]
6238 bytes written

で、編集を加えたときにでてくる内容は、

This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4)             
(/var/folders/KU/KUrNdBzZE8y-VQXHwba-sE+++TI/-Tmp-/v71632/9
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2003/12/01> patch level 0)
(/opt/local/share/texmf/ptex/platex/base/jarticle.cls
Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class
(/opt/local/share/texmf/ptex/platex/base/jsize10.clo)) 
No file 9.aux.
[1] (./9.aux) )
Output written on 9.dvi (1 page, 360 bytes).
Transcript written on 9.log. 
/var/folders/KU/KUrNdBzZE8y-VQXHwba-sE+++TI/-Tmp-/v71632/9.dvi -> 9.pdf

** ERROR ** Could not open specified DVI file: /var/folders/KU/KUrNdBzZE8y-VQXHwba-sE+++TI/-Tmp-/v71632/9.dvi

Output file removed.

です.


 また、.vimrcの設定の一行を、open %s:t:rに変更する、つまり

'exec': ['%c %s', 'dvipdfmx %s:r.dvi', 'open %s:t:r.pdf']                 

として、実行すると、エラーが出て、

Error detected while processing function <SNR>31_quickrun:                     
line    7:
Vim(call):E716: Key not present in Dictionary: * function <SNR>31_quickrun..203.
.204..207, line 18

となります.

追々記

 今もっとも有力な.vimrcの設定:

let g:quickrun_config = { 
\ 'tex' : {
\   'command' : 'platex-utf8',
\   'exec': ['%c %s', 'dvipdfmx %s:t:r.dvi', 'open %s:t:r.pdf']                 
\ }
\}

 編集途中の.texに:QuickRunを行ってもpdfを見るところまでいきます.
 残された問題点:

  1. 一時フォルダにあるファイルにplatex-utf8をしたときに出力したファイルが、カレントディレクトリに4.log、4.aux、4.dviと出力される.おそらく何度もやると、すごいファイルが生成されてしまう.

 方針:

  1. platexで出力ファイル先の変更ができないか調べ、そう明確に指定する.デフォルトでは、カレントディレクトリなので*3

 各コマンドをきちんと理解しないといけませんね.


 続編があります.
ほぼ完成?:quickrun.vimでTeX編集してpdfで見る. - The Answers to the Questions You Never Ask

*1:知らずに、エラーを何回も出しまくって、ディレクトリが.log、.aux、.dviのファイルばっかりになってて焦ったw

*2:なるべく自力でやって、vimの理解を深めたいですが・・・どうなることやら

*3:man platexして、マニュアルないじゃんって思ったけど、man texで発見した.これは!!