SweaveでエディタとDVIビューア間の相互移動
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
//
// Typoレベルの修正では、タイムスタンプをいちいち更新し...
//
#contents
*ねらい [#n33580c9]
[[PDFビューアーからEmacs上のSweaveにカーソルジャンプする...
しかし,この方法はまだ開発中でベータ版の LuaLaTeX の使用...
COLOR(red){そこで,patchDVIパッケージに手を入れて,日本語...
Windows 用の記述がメインですが,Linux での設定方法も加筆...
Mac は持ってないので未確認です.~
もっと簡潔でエレガントな方法を見つけた方は,是非,修正/追...
Windows, Linux の人は以下の事柄に注意すればいいと思います...
- Windows の場合は TeX Live または W32TeX を使用する
- Linux の場合はディストリビューションの TeX Live が Sync...
-- GNOME の場合は Evince を使用する(TeX Wiki の Evince ...
-- KDE の場合は Okular を使用する(TeX Wiki の Okular の...
これまで予想以上の多くの方にダウンロードして頂いた添付の...
残したファイルをリネームしたのでカウンターがリセットされ...
*新着情報 [#e6e0ba62]
COLOR(red){[2014/12/25]} knitrでSweaveファイルを処理する...
COLOR(red){[2014/12/1]} おそらく ver. 1.9.1590 以降,ここ...
COLOR(red){[2014/5/1]} RStudio への対応方法を追記しました...
COLOR(red){[2013/12/18]} patchDVI ver. 1.9.1601が15日にCR...
COLOR(red){[2013/12/9]} patchDVI ver. 1.9.158以降で、dvip...
COLOR(red){[2013/1/17]} 1/10付でpatchDVI Ver. 1.9がCRANに...
なお,SumatraPDFはVer. 1.9以降でForward/Inverse Searchの...
*手順(Windowsの場合) [#ub20160b]
+ (事前準備) TeX レベルでの,エディタ(Emacs 系を仮定)と P...
情報はネット上にいっぱいあります.~
特に [[TeX Wiki:https://texwiki.texjp.org/]] が詳しいです...
R 本体も最新版にしましょう.~
+ patchDVI パッケージをインストールします.~
install.packages("patchDVI", repos="http://R-Forge.R-pro...
+ 上記パッケージの関数patchDVI()とpatchSynctex()を編集し...
ここでは,c:/R/mypatchDVI.Rとして保存すると仮定します(添...
最低限動くようにしただけなので,同じ処理を2度やってしまっ...
なお,patchDVIパッケージの本来の売りの1つである,分割・...
Sweaveファイルの拡張子はRnwとします.~
中で用いている関数DVIspecials()やsetDVIspecials()は,patc...
具体的な修正箇所には添付ファイル内でコメントを入れてあり...
+ C:/Program Files/R/R-3.x.x/share/texmf/tex/latex にある...
[[PDFビューアーからEmacs上のSweaveにカーソルジャンプする...
+ Sweaveファイルを編集しましょう.LaTeXプリアンブルに以下...
\usepackage{Sweave}
\SweaveOpts{concordance=TRUE}
+ 作成したSweaveファイル(test.Rnwと仮定)をRで処理します.~
R-3.x.x から,関数Sweave()の引数にencordingを明示する必要...
UTF-8 なら次のようにします.
Sweave("test.Rnw", encoding = "utf-8")
Shift_JIS なら次のようにします.
Sweave("test.Rnw", encoding = "cp932")
この処理が終わると,test.tex(と,必要に応じた画像ファイル...
これは,test.texの中で\inputされるので,消してはいけませ...
Sweaveファイルを分割/インクルードしている場合は,patchDVI...
ただし,インクルードされるSweaveファイルをサブディレクト...
+ 生成されたTeXファイルをコンパイルします.引数に注意しま...
uplatex の場合は次のようにします.~
uplatex -synctex=1 -guess-input-enc test.tex
platex の場合は次のようにします.~
platex -synctex=1 -guess-input-enc test.tex
引数 -synctex=1 により,LaTeXコンパイル後にtest.synctex.g...
このファイルもSumatraPDFが使うため,消してはいけません.~
また,展開の必要もありません.~
ファイルの文字コードを自動判別する場合は -guess-input-enc...
自動判別せずに文字コードに UTF-8 を指定する場合は -no-gue...
uplatex の場合は次のようにします.~
uplatex -synctex=1 -no-guess-input-enc -kanji=utf8 test....
platex の場合は次のようにします.~
platex -synctex=1 -no-guess-input-enc -kanji=utf8 test.tex
自動判別せずに文字コードに Shift_JIS を指定する場合は -no...
platex -synctex=1 -no-guess-input-enc -kanji=sjis test.tex
最近はPDFでプレビューするケースが多くなってきたかもしれま...
uplatex の場合は次のようにします.~
uplatex -src -synctex=1 -guess-input-enc test.tex
platex の場合は次のようにします.~
platex -src -synctex=1 -guess-input-enc test.tex
+ R側で,DVI/PDFファイルにパッチを当てます.mypatchSyncte...
library(patchDVI)
source("c:/R/mypatchDVI.R")
mypatchSynctex("test.synctex")
mypatchDVI("test.dvi")
latexコンパイルとDVIファイルへのパッチは,まとめてスクリ...
例えば,latexmkと上記内容をRscriptに食わせるバッチファイ...
一応,通常のTeXファイルのコンパイルと併用できるような書き...
call latexmk.bat %~n1
set CONCORD=%~n1-concordance.tex
set DVI=%~n1.dvi
if exist %CONCORD% Rscript -e "Com <- commandArgs();libr...
source(\"C:/home/hoge/R/etc/mypatchDVI.R\");\
DVI <- paste(Com[7], \".dvi\", sep = \"\");\
SYNC <- paste(Com[7], \".synctex\", sep = \"\");\
mypatchSynctex(SYNC);mypatchDVI(DVI)" %~n1
下から5行は実際は1行です.~
行末のバックスラッシュ(円記号)と,行頭のスペースを取り除...
RscriptのRコマンド行部分は,基本的に上のRコードを取り込ん...
これをPATH上のどこかに置き,Windows PowerShell またはコマ...
引数は拡張子なしのtestでも構いません.~
mylatexmk.bat test.tex
ESS使いであれば,ess-swv.elの141行目付近の
(call-process "latex" nil tex-buf 1 latex-filename)
を次のように直すと,M-n lでLaTeXコンパイルとDVIファイルへ...
(call-process "mylatexmk.bat" nil tex-buf 1 latex-filena...
+ SumatraPDFとEmacs間の相互移動は,[[ここ:https://texwiki...
PDFファイルをSumatraPDFで開き,画面上の文字を適当にダブル...
Emacs→SumatraPDFの場合,YaTeX 1.78.1 以降,SumatraPDF 1.9...
元ネタは[[ここ:https://texwiki.texjp.org/?YaTeX#ra95ecfb]...
Emacsのtest.Rnw上でC-c C-gした文字が,SumatraPDF側で青色...
当然ながら,この関数は普通のTeXファイルでも使えます.~
むしろ,SumatraPDF→Emacsの場合と同様,普通のTeXファイル用...
~/.emacs.d/init.elに次の記述をします(YaTeXの利用が...
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "rundll32 shell32,ShellExec_RunDLL Su...
(setq tex-pdfview-command "rundll32 shell32,ShellExec_Ru...
C-c C-g を入力すれば SumatraPDF で forward seasrch ができ...
SumatraPDFを前面に表示させたくない場合はTeX Wikiの[[fwdsu...
(defun sumatrapdf-forward-search ()
(interactive)
(progn
(process-kill-without-query
(start-process
"fwdsumatrapdf"
nil
"fwdsumatrapdf"
(expand-file-name
(concat (file-name-sans-extension (or YaTeX-paren...
(save-excur...
(YaTeX-vi...
buffer-fi...
".pdf"))
(buffer-name)
(number-to-string (save-restriction
(widen)
(count-lines (point-min) (poin...
YaTeXへのキーバインドをアサインします.ここではC-c sにア...
(add-hook 'yatex-mode-hook
'(lambda ()
(define-key YaTeX-mode-map (kbd "C-c s") 's...
Sweave ファイルを分割/インクルードしている場合は,ミニバ...
YaTeXとの連携方法も[[ここ:https://texwiki.texjp.org/?YaTe...
Sweaveファイルの分割・インクルードにも対応しています.~
+ 元々のpatchSynctex()およびmypatchSynctex()は,PDFファイ...
従って,DVIファイルから一般的な方法でPDFファイルを作って...
手元の環境では,dvipdfmx,dvips→Distiller,dvips→ps2pdfの...
完成したPDFを,SumatraPDFで次のように起動します.~
SumatraPDF.exe -reuse-instance -inverse-search "emacscli...
ここではemacsclientwを使いましたが,gnuclientwでも同じよ...
これで,SumatraPDFの画面上でダブルクリックすると,Emacs上...
カーソルが飛ばない場合はM-x server-startを実行します.~
M-x server-startの実行が面倒な場合は~/.emacs.d/init....
(server-start)
を記述しておきます.~
*【番外編】RStudio で UTF-8 または Shift_JIS の日本語 Swe...
RStudio は patchDVI 相当の機能が内蔵されていますが,TeX ...
設定をいじって[[LuaLaTeXを使う方法:http://d.hatena.ne.jp/...
+ TeX Live または W32TeX をインストールします.W32TeX の...
+ R と RStudio を入れます.これを書いている時点での最新版...
+ Shift_JIS を使用する場合は RStudio を起動して,メニュー...
+ UTF-8 を 使用する場合は ptex2pdf を次のように修正します...
texopts = "-synctex=1 -kanji=utf8 -no-guess-input-enc"
uplatex を使用する場合は 175 行目を次のように修正して保存...
use_uptex = 1
同様に,176 行目も次のように修正して保存します.~
lua スクリプトの再コンパイルは必要ありません.~
use_latex = 1
これは,Windows PowerShell またはコマンド プロンプトから
ptex2pdf.exe -l -u -ot "-synctex=1 -kanji=utf8 -no-guess...
または
ptex2pdf.exe -l -ot "-synctex=1 -kanji=utf8 -no-guess-in...
と引数を付与することなく,
ptex2pdf.exe hoge.tex
で同じことができるようにしています.この設定を,ご自身が...
+ Shift_JIS を 使用する場合は ptex2pdf を次のように修正し...
texopts = "-synctex=1 -kanji=sjis -no-guess-input-enc"
同様に,176 行目も次のように修正して保存します.~
lua スクリプトの再コンパイルは必要ありません.~
use_latex = 1
これは,Windows Powershell またはコマンド プロンプトから
ptex2pdf.exe -l -ot "-synctex=1 -kanji=sjis -no-guess-in...
と引数を付与することなく,
ptex2pdf.exe hoge.tex
で同じことができるようにしています.この設定を,ご自身が...
+ 環境変数 RSTUDIO_PDFLATEX を ptex2pdf.exe に設定します...
Sys.setenv("RSTUDIO_PDFLATEX" = "ptex2pdf.exe")
と記入してもいいでしょう.もちろん RStudio の console に...
+ RStudio で Sweave ファイルを編集し,[Compile PDF] ボタ...
*【番外編2】knitr で Sweave ファイルを処理する [#z592e037]
[[knitr:http://yihui.name/knitr/]] は,Sweaveをベースに他...
+ knit()はSweaveファイル中に\usepackage{Sweave}や\SweaveO...
\usepackage{Sconcordance}
\input{tmp-concordance}
<<include=FALSE>>=
opts_knit$set(concordance=TRUE)
@
knit()で生成されるTeXファイルには,\documentclassの最後尾...
opts_knit$set(concordance=TRUE,latex.options.graphicx="d...
+ Sweave固有のチャンクオプションなどを含めないように,kni...
+ ここまでの作業を行ったtmp.Rnwをknit()で処理します.エン...
library(knitr)
knit("tmp.Rnw")
同じフォルダにtmp.texとtmp-concordance.texが作られている...
+ 後の処理はこれまでと同じのため省略します.
既存のSweaveファイルをknit()で処理するために,knitrパッケ...
library(knitr)
Sweave2knitr("sample.Rnw") ## これで sample-knitr.Rnw が...
knit("sample-knitr.Rnw")
しかしSweave2knitr()はconcordance周りに対応できてないのと...
library(knitr)
source("mySweave2knitr.R")
mySweave2knitr("sample.Rnw") ## これで sample-knitr.Rnw ...
knit("sample-knitr.Rnw")
これで,sample.Rnwの
\usepackage{Sweave}
\SweaveOpts{concordance=TRUE}
だった部分が,sample-knitr.Rnwでは上記手順1.と同様に変更...
*手順(Linuxの場合) [#jd47bb41]
まず,Linux の uplatex, platex が SyncTeX に未対応の場合...
GNOME の場合は Evince を使用します.~
Evince バージョン 3.0.0 以降でないと以下の設定が動作しな...
KDE の場合は Okular を使用します.~
Debian/Stable(Wheezy) での動作(ESS+YaTeXを利用)は確認し...
+Windowsの場合の手順1から6は,Linuxでも概ね同じです.~
文字コードが UTF-8 の場合は次のようにします.~
Sweave("test.Rnw", encoding = "utf-8")
文字コードが EUC-JP の場合は次のようにします.~
Sweave("test.Rnw", encoding = "euc-jp")
+uplatex または platex を -synctex=1 オプション付きで起動...
uplatex の場合は次のようにします.~
uplatex -synctex=1 test.tex
platex の場合は次のようにします.~
platex -synctex=1 test.tex
文字コードが EUC-JP の場合は -kanji=euc オプションも付け...
platex -synctex=1 -kanji=euc test.tex
Windows と同様,xdvik などを使う場合は,-src オプションが...
platex -src -synctex=1 -kanji=euc test.tex
latexmk を使うなら,上記コンパイルをシェルスクリプト化(...
$latex = 'platex-sync';
+DVI/PDFへのパッチも,Windowsの場合の手順8と同等の処理を...
#!/bin/bash
BASE=`basename $1 .tex`
latexmk $BASE
if [ -e $BASE.synctex.gz ]
then
SCRIPT='library(patchDVI);source("/home/hoge/mypatchDVI....
mypatchSynctex("'$BASE.synctex'");mypatchDVI("'$BASE.d...
Rscript -e $SCRIPT
fi
SCRIPTから始まる行と,その次の行は実際には1行です.~
SCRIPTから始まる行の最後尾のバックスラッシュと,次の行頭...
なお,添付の mypatchDVI-new.R の文字コードは Shift_JIS な...
+EvinceとEmacs間の相互移動は,[[ここ:https://texwiki.texj...
Evince⇒Emacsは~/.emacs.d/init.elに次の関数を記述しま...
(require 'dbus)
(defun un-urlify (fname-or-url)
"A trivial function that replaces a prefix of file:///...
(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 (decode-coding-string (url-unhex-string ...
(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))
(x-focus-frame (selected-frame)))))
(dbus-register-signal
:session nil "/org/gnome/evince/Window/0"
"org.gnome.evince.Window" "SyncSource"
'evince-inverse-search)
Evince⇒Emacsの実行はCtrl-左クリックです.~
Emacs⇒Evinceは,TeX Wikiの[[ここ:https://texwiki.texjp.or...
Emacs⇒Evinceは,YaTeX 1.78 以降で対応しています.~
fwdevinceはTeX Wikiの[[fwdevince:https://texwiki.texjp.or...
~/.emacs.d/init.elに次の記述をします.~
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "evince")
(setq tex-pdfview-command "evince")
C-c C-g を入力すれば Evince で forward seasrch ができます...
+OkularとEmacs間の相互移動は,[[ここ:https://texwiki.texj...
Okular⇒Emacsは[設定(%%%S%%%)]-[Okular を設定(%%%O%%%)...]...
>
:エディタ:|Emacs client
:コマンド:|emacsclient -a emacs --no-wait +%l %f
<
Okular⇒Emacsの実行はShift-左クリックです.~
カーソルが飛ばない場合はM-x server-startを実行します.~
M-x server-startの実行が面倒な場合は~/.emacs.d/init....
(server-start)
を記述しておきます.~
Emacs⇒Okularは,TeX Wikiの[[ここ:https://texwiki.texjp.or...
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "okular --unique")
(setq tex-pdfview-command "okular --unique")
(with-eval-after-load 'yatexprc
(defun YaTeX-preview-jump-line ()
"Call jump-line function of various previewer on cur...
(interactive)
(save-excursion
(save-restriction
(widen)
(let*((pf (or YaTeX-parent-file
(save-excursion (YaTeX-visit-main ...
(pdir (file-name-directory pf))
(bnr (substring pf 0 (string-match "\\.......
;(cf (file-relative-name (buffer-file-name...
(cf (buffer-file-name)) ;2016-01-08
(buffer (get-buffer-create " *preview-jump...
(line (count-lines (point-min) (point-end-...
(previewer (YaTeX-preview-default-previewe...
(cmd (cond
((string-match "Skim" previewer)
(format "%s %d '%s.pdf' '%s'"
YaTeX-cmd-displayline line ...
((string-match "evince" previewer)
(format "%s '%s.pdf' %d '%s'"
"fwdevince" bnr line cf))
((string-match "sumatra" previewer)
(format "%s \"%s.pdf\" -forward-sea...
previewer bnr cf line))
((string-match "zathura" previewer)
(format "%s --synctex-forward '%d:0...
previewer line cf bnr))
((string-match "qpdfview" previewer)
(format "%s '%s.pdf#src:%s:%d:0'"
previewer bnr cf line))
((string-match "okular" previewer)
(format "%s '%s.pdf#src:%d %s'"
previewer bnr line (expand-...
)))
(YaTeX-system cmd "jump-line" 'noask pdir))))))
C-c C-g を入力すれば Okular で forward seasrch ができます...
+(補足)LinuxのデフォルトロケールがUTF-8だと,ESS起動時...
;; Emacsのデフォルト文字コードはEUC-JP
(set-default-coding-systems 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp-unix)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-keyboard-coding-system 'euc-jp-unix)
;; ESSから呼び出すバッファだけUTF-8にする
(setq ess-pre-run-hook
'((lambda ()
(set-locale-environment "utf-8")
(setenv "LANG" "ja_JP.UTF-8")
)))
*大雑把な説明 [#r77d752c]
Sweave ファイルに \SweaveOpts{concordance=TRUE} を追加す...
開いてみれば分かりますが,これは情報を圧縮した形式なので...
詳細は patchDVI パッケージのマニュアルに説明があります.~
今回定義した関数 mypatchDVI() では,その圧縮した情報を展...
要素数が TeX ファイルの行数と同じで,n 番目の要素は TeX ...
つまり,concord はコードチャンクを除いた Sweave ファイル...
一方,引数 -src をつけてコンパイルした DVI ファイルには,...
mypatchSynctex() でも,原理的には似たようなことを *.synct...
オリジナルの関数 patchSynctex() では pdflatex の利用が前...
しかし、uplatex または platex でコンパイルすると,その情...
したがって,mypatchSynctex() では,mypatchDVI() で処理す...
mypatchSynctex() を mypatchDVI() の前に実行するのはそのた...
なお,mypatchDVI() は,uplatex または platex のコンパイル...
*まとめ [#b4f9242d]
今回の内容で,Sweaveファイルの編集効率もそれなりに上がり...
TexmakerもSweaveに対応しているので,TeXレベルでDVI/PDFビ...
人柱になって頂ける方や,同様の情報を持っている方がいらっ...
#comment
終了行:
//
// Typoレベルの修正では、タイムスタンプをいちいち更新し...
//
#contents
*ねらい [#n33580c9]
[[PDFビューアーからEmacs上のSweaveにカーソルジャンプする...
しかし,この方法はまだ開発中でベータ版の LuaLaTeX の使用...
COLOR(red){そこで,patchDVIパッケージに手を入れて,日本語...
Windows 用の記述がメインですが,Linux での設定方法も加筆...
Mac は持ってないので未確認です.~
もっと簡潔でエレガントな方法を見つけた方は,是非,修正/追...
Windows, Linux の人は以下の事柄に注意すればいいと思います...
- Windows の場合は TeX Live または W32TeX を使用する
- Linux の場合はディストリビューションの TeX Live が Sync...
-- GNOME の場合は Evince を使用する(TeX Wiki の Evince ...
-- KDE の場合は Okular を使用する(TeX Wiki の Okular の...
これまで予想以上の多くの方にダウンロードして頂いた添付の...
残したファイルをリネームしたのでカウンターがリセットされ...
*新着情報 [#e6e0ba62]
COLOR(red){[2014/12/25]} knitrでSweaveファイルを処理する...
COLOR(red){[2014/12/1]} おそらく ver. 1.9.1590 以降,ここ...
COLOR(red){[2014/5/1]} RStudio への対応方法を追記しました...
COLOR(red){[2013/12/18]} patchDVI ver. 1.9.1601が15日にCR...
COLOR(red){[2013/12/9]} patchDVI ver. 1.9.158以降で、dvip...
COLOR(red){[2013/1/17]} 1/10付でpatchDVI Ver. 1.9がCRANに...
なお,SumatraPDFはVer. 1.9以降でForward/Inverse Searchの...
*手順(Windowsの場合) [#ub20160b]
+ (事前準備) TeX レベルでの,エディタ(Emacs 系を仮定)と P...
情報はネット上にいっぱいあります.~
特に [[TeX Wiki:https://texwiki.texjp.org/]] が詳しいです...
R 本体も最新版にしましょう.~
+ patchDVI パッケージをインストールします.~
install.packages("patchDVI", repos="http://R-Forge.R-pro...
+ 上記パッケージの関数patchDVI()とpatchSynctex()を編集し...
ここでは,c:/R/mypatchDVI.Rとして保存すると仮定します(添...
最低限動くようにしただけなので,同じ処理を2度やってしまっ...
なお,patchDVIパッケージの本来の売りの1つである,分割・...
Sweaveファイルの拡張子はRnwとします.~
中で用いている関数DVIspecials()やsetDVIspecials()は,patc...
具体的な修正箇所には添付ファイル内でコメントを入れてあり...
+ C:/Program Files/R/R-3.x.x/share/texmf/tex/latex にある...
[[PDFビューアーからEmacs上のSweaveにカーソルジャンプする...
+ Sweaveファイルを編集しましょう.LaTeXプリアンブルに以下...
\usepackage{Sweave}
\SweaveOpts{concordance=TRUE}
+ 作成したSweaveファイル(test.Rnwと仮定)をRで処理します.~
R-3.x.x から,関数Sweave()の引数にencordingを明示する必要...
UTF-8 なら次のようにします.
Sweave("test.Rnw", encoding = "utf-8")
Shift_JIS なら次のようにします.
Sweave("test.Rnw", encoding = "cp932")
この処理が終わると,test.tex(と,必要に応じた画像ファイル...
これは,test.texの中で\inputされるので,消してはいけませ...
Sweaveファイルを分割/インクルードしている場合は,patchDVI...
ただし,インクルードされるSweaveファイルをサブディレクト...
+ 生成されたTeXファイルをコンパイルします.引数に注意しま...
uplatex の場合は次のようにします.~
uplatex -synctex=1 -guess-input-enc test.tex
platex の場合は次のようにします.~
platex -synctex=1 -guess-input-enc test.tex
引数 -synctex=1 により,LaTeXコンパイル後にtest.synctex.g...
このファイルもSumatraPDFが使うため,消してはいけません.~
また,展開の必要もありません.~
ファイルの文字コードを自動判別する場合は -guess-input-enc...
自動判別せずに文字コードに UTF-8 を指定する場合は -no-gue...
uplatex の場合は次のようにします.~
uplatex -synctex=1 -no-guess-input-enc -kanji=utf8 test....
platex の場合は次のようにします.~
platex -synctex=1 -no-guess-input-enc -kanji=utf8 test.tex
自動判別せずに文字コードに Shift_JIS を指定する場合は -no...
platex -synctex=1 -no-guess-input-enc -kanji=sjis test.tex
最近はPDFでプレビューするケースが多くなってきたかもしれま...
uplatex の場合は次のようにします.~
uplatex -src -synctex=1 -guess-input-enc test.tex
platex の場合は次のようにします.~
platex -src -synctex=1 -guess-input-enc test.tex
+ R側で,DVI/PDFファイルにパッチを当てます.mypatchSyncte...
library(patchDVI)
source("c:/R/mypatchDVI.R")
mypatchSynctex("test.synctex")
mypatchDVI("test.dvi")
latexコンパイルとDVIファイルへのパッチは,まとめてスクリ...
例えば,latexmkと上記内容をRscriptに食わせるバッチファイ...
一応,通常のTeXファイルのコンパイルと併用できるような書き...
call latexmk.bat %~n1
set CONCORD=%~n1-concordance.tex
set DVI=%~n1.dvi
if exist %CONCORD% Rscript -e "Com <- commandArgs();libr...
source(\"C:/home/hoge/R/etc/mypatchDVI.R\");\
DVI <- paste(Com[7], \".dvi\", sep = \"\");\
SYNC <- paste(Com[7], \".synctex\", sep = \"\");\
mypatchSynctex(SYNC);mypatchDVI(DVI)" %~n1
下から5行は実際は1行です.~
行末のバックスラッシュ(円記号)と,行頭のスペースを取り除...
RscriptのRコマンド行部分は,基本的に上のRコードを取り込ん...
これをPATH上のどこかに置き,Windows PowerShell またはコマ...
引数は拡張子なしのtestでも構いません.~
mylatexmk.bat test.tex
ESS使いであれば,ess-swv.elの141行目付近の
(call-process "latex" nil tex-buf 1 latex-filename)
を次のように直すと,M-n lでLaTeXコンパイルとDVIファイルへ...
(call-process "mylatexmk.bat" nil tex-buf 1 latex-filena...
+ SumatraPDFとEmacs間の相互移動は,[[ここ:https://texwiki...
PDFファイルをSumatraPDFで開き,画面上の文字を適当にダブル...
Emacs→SumatraPDFの場合,YaTeX 1.78.1 以降,SumatraPDF 1.9...
元ネタは[[ここ:https://texwiki.texjp.org/?YaTeX#ra95ecfb]...
Emacsのtest.Rnw上でC-c C-gした文字が,SumatraPDF側で青色...
当然ながら,この関数は普通のTeXファイルでも使えます.~
むしろ,SumatraPDF→Emacsの場合と同様,普通のTeXファイル用...
~/.emacs.d/init.elに次の記述をします(YaTeXの利用が...
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "rundll32 shell32,ShellExec_RunDLL Su...
(setq tex-pdfview-command "rundll32 shell32,ShellExec_Ru...
C-c C-g を入力すれば SumatraPDF で forward seasrch ができ...
SumatraPDFを前面に表示させたくない場合はTeX Wikiの[[fwdsu...
(defun sumatrapdf-forward-search ()
(interactive)
(progn
(process-kill-without-query
(start-process
"fwdsumatrapdf"
nil
"fwdsumatrapdf"
(expand-file-name
(concat (file-name-sans-extension (or YaTeX-paren...
(save-excur...
(YaTeX-vi...
buffer-fi...
".pdf"))
(buffer-name)
(number-to-string (save-restriction
(widen)
(count-lines (point-min) (poin...
YaTeXへのキーバインドをアサインします.ここではC-c sにア...
(add-hook 'yatex-mode-hook
'(lambda ()
(define-key YaTeX-mode-map (kbd "C-c s") 's...
Sweave ファイルを分割/インクルードしている場合は,ミニバ...
YaTeXとの連携方法も[[ここ:https://texwiki.texjp.org/?YaTe...
Sweaveファイルの分割・インクルードにも対応しています.~
+ 元々のpatchSynctex()およびmypatchSynctex()は,PDFファイ...
従って,DVIファイルから一般的な方法でPDFファイルを作って...
手元の環境では,dvipdfmx,dvips→Distiller,dvips→ps2pdfの...
完成したPDFを,SumatraPDFで次のように起動します.~
SumatraPDF.exe -reuse-instance -inverse-search "emacscli...
ここではemacsclientwを使いましたが,gnuclientwでも同じよ...
これで,SumatraPDFの画面上でダブルクリックすると,Emacs上...
カーソルが飛ばない場合はM-x server-startを実行します.~
M-x server-startの実行が面倒な場合は~/.emacs.d/init....
(server-start)
を記述しておきます.~
*【番外編】RStudio で UTF-8 または Shift_JIS の日本語 Swe...
RStudio は patchDVI 相当の機能が内蔵されていますが,TeX ...
設定をいじって[[LuaLaTeXを使う方法:http://d.hatena.ne.jp/...
+ TeX Live または W32TeX をインストールします.W32TeX の...
+ R と RStudio を入れます.これを書いている時点での最新版...
+ Shift_JIS を使用する場合は RStudio を起動して,メニュー...
+ UTF-8 を 使用する場合は ptex2pdf を次のように修正します...
texopts = "-synctex=1 -kanji=utf8 -no-guess-input-enc"
uplatex を使用する場合は 175 行目を次のように修正して保存...
use_uptex = 1
同様に,176 行目も次のように修正して保存します.~
lua スクリプトの再コンパイルは必要ありません.~
use_latex = 1
これは,Windows PowerShell またはコマンド プロンプトから
ptex2pdf.exe -l -u -ot "-synctex=1 -kanji=utf8 -no-guess...
または
ptex2pdf.exe -l -ot "-synctex=1 -kanji=utf8 -no-guess-in...
と引数を付与することなく,
ptex2pdf.exe hoge.tex
で同じことができるようにしています.この設定を,ご自身が...
+ Shift_JIS を 使用する場合は ptex2pdf を次のように修正し...
texopts = "-synctex=1 -kanji=sjis -no-guess-input-enc"
同様に,176 行目も次のように修正して保存します.~
lua スクリプトの再コンパイルは必要ありません.~
use_latex = 1
これは,Windows Powershell またはコマンド プロンプトから
ptex2pdf.exe -l -ot "-synctex=1 -kanji=sjis -no-guess-in...
と引数を付与することなく,
ptex2pdf.exe hoge.tex
で同じことができるようにしています.この設定を,ご自身が...
+ 環境変数 RSTUDIO_PDFLATEX を ptex2pdf.exe に設定します...
Sys.setenv("RSTUDIO_PDFLATEX" = "ptex2pdf.exe")
と記入してもいいでしょう.もちろん RStudio の console に...
+ RStudio で Sweave ファイルを編集し,[Compile PDF] ボタ...
*【番外編2】knitr で Sweave ファイルを処理する [#z592e037]
[[knitr:http://yihui.name/knitr/]] は,Sweaveをベースに他...
+ knit()はSweaveファイル中に\usepackage{Sweave}や\SweaveO...
\usepackage{Sconcordance}
\input{tmp-concordance}
<<include=FALSE>>=
opts_knit$set(concordance=TRUE)
@
knit()で生成されるTeXファイルには,\documentclassの最後尾...
opts_knit$set(concordance=TRUE,latex.options.graphicx="d...
+ Sweave固有のチャンクオプションなどを含めないように,kni...
+ ここまでの作業を行ったtmp.Rnwをknit()で処理します.エン...
library(knitr)
knit("tmp.Rnw")
同じフォルダにtmp.texとtmp-concordance.texが作られている...
+ 後の処理はこれまでと同じのため省略します.
既存のSweaveファイルをknit()で処理するために,knitrパッケ...
library(knitr)
Sweave2knitr("sample.Rnw") ## これで sample-knitr.Rnw が...
knit("sample-knitr.Rnw")
しかしSweave2knitr()はconcordance周りに対応できてないのと...
library(knitr)
source("mySweave2knitr.R")
mySweave2knitr("sample.Rnw") ## これで sample-knitr.Rnw ...
knit("sample-knitr.Rnw")
これで,sample.Rnwの
\usepackage{Sweave}
\SweaveOpts{concordance=TRUE}
だった部分が,sample-knitr.Rnwでは上記手順1.と同様に変更...
*手順(Linuxの場合) [#jd47bb41]
まず,Linux の uplatex, platex が SyncTeX に未対応の場合...
GNOME の場合は Evince を使用します.~
Evince バージョン 3.0.0 以降でないと以下の設定が動作しな...
KDE の場合は Okular を使用します.~
Debian/Stable(Wheezy) での動作(ESS+YaTeXを利用)は確認し...
+Windowsの場合の手順1から6は,Linuxでも概ね同じです.~
文字コードが UTF-8 の場合は次のようにします.~
Sweave("test.Rnw", encoding = "utf-8")
文字コードが EUC-JP の場合は次のようにします.~
Sweave("test.Rnw", encoding = "euc-jp")
+uplatex または platex を -synctex=1 オプション付きで起動...
uplatex の場合は次のようにします.~
uplatex -synctex=1 test.tex
platex の場合は次のようにします.~
platex -synctex=1 test.tex
文字コードが EUC-JP の場合は -kanji=euc オプションも付け...
platex -synctex=1 -kanji=euc test.tex
Windows と同様,xdvik などを使う場合は,-src オプションが...
platex -src -synctex=1 -kanji=euc test.tex
latexmk を使うなら,上記コンパイルをシェルスクリプト化(...
$latex = 'platex-sync';
+DVI/PDFへのパッチも,Windowsの場合の手順8と同等の処理を...
#!/bin/bash
BASE=`basename $1 .tex`
latexmk $BASE
if [ -e $BASE.synctex.gz ]
then
SCRIPT='library(patchDVI);source("/home/hoge/mypatchDVI....
mypatchSynctex("'$BASE.synctex'");mypatchDVI("'$BASE.d...
Rscript -e $SCRIPT
fi
SCRIPTから始まる行と,その次の行は実際には1行です.~
SCRIPTから始まる行の最後尾のバックスラッシュと,次の行頭...
なお,添付の mypatchDVI-new.R の文字コードは Shift_JIS な...
+EvinceとEmacs間の相互移動は,[[ここ:https://texwiki.texj...
Evince⇒Emacsは~/.emacs.d/init.elに次の関数を記述しま...
(require 'dbus)
(defun un-urlify (fname-or-url)
"A trivial function that replaces a prefix of file:///...
(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 (decode-coding-string (url-unhex-string ...
(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))
(x-focus-frame (selected-frame)))))
(dbus-register-signal
:session nil "/org/gnome/evince/Window/0"
"org.gnome.evince.Window" "SyncSource"
'evince-inverse-search)
Evince⇒Emacsの実行はCtrl-左クリックです.~
Emacs⇒Evinceは,TeX Wikiの[[ここ:https://texwiki.texjp.or...
Emacs⇒Evinceは,YaTeX 1.78 以降で対応しています.~
fwdevinceはTeX Wikiの[[fwdevince:https://texwiki.texjp.or...
~/.emacs.d/init.elに次の記述をします.~
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "evince")
(setq tex-pdfview-command "evince")
C-c C-g を入力すれば Evince で forward seasrch ができます...
+OkularとEmacs間の相互移動は,[[ここ:https://texwiki.texj...
Okular⇒Emacsは[設定(%%%S%%%)]-[Okular を設定(%%%O%%%)...]...
>
:エディタ:|Emacs client
:コマンド:|emacsclient -a emacs --no-wait +%l %f
<
Okular⇒Emacsの実行はShift-左クリックです.~
カーソルが飛ばない場合はM-x server-startを実行します.~
M-x server-startの実行が面倒な場合は~/.emacs.d/init....
(server-start)
を記述しておきます.~
Emacs⇒Okularは,TeX Wikiの[[ここ:https://texwiki.texjp.or...
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|Suma...
(setq dvi2-command "okular --unique")
(setq tex-pdfview-command "okular --unique")
(with-eval-after-load 'yatexprc
(defun YaTeX-preview-jump-line ()
"Call jump-line function of various previewer on cur...
(interactive)
(save-excursion
(save-restriction
(widen)
(let*((pf (or YaTeX-parent-file
(save-excursion (YaTeX-visit-main ...
(pdir (file-name-directory pf))
(bnr (substring pf 0 (string-match "\\.......
;(cf (file-relative-name (buffer-file-name...
(cf (buffer-file-name)) ;2016-01-08
(buffer (get-buffer-create " *preview-jump...
(line (count-lines (point-min) (point-end-...
(previewer (YaTeX-preview-default-previewe...
(cmd (cond
((string-match "Skim" previewer)
(format "%s %d '%s.pdf' '%s'"
YaTeX-cmd-displayline line ...
((string-match "evince" previewer)
(format "%s '%s.pdf' %d '%s'"
"fwdevince" bnr line cf))
((string-match "sumatra" previewer)
(format "%s \"%s.pdf\" -forward-sea...
previewer bnr cf line))
((string-match "zathura" previewer)
(format "%s --synctex-forward '%d:0...
previewer line cf bnr))
((string-match "qpdfview" previewer)
(format "%s '%s.pdf#src:%s:%d:0'"
previewer bnr cf line))
((string-match "okular" previewer)
(format "%s '%s.pdf#src:%d %s'"
previewer bnr line (expand-...
)))
(YaTeX-system cmd "jump-line" 'noask pdir))))))
C-c C-g を入力すれば Okular で forward seasrch ができます...
+(補足)LinuxのデフォルトロケールがUTF-8だと,ESS起動時...
;; Emacsのデフォルト文字コードはEUC-JP
(set-default-coding-systems 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp-unix)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-keyboard-coding-system 'euc-jp-unix)
;; ESSから呼び出すバッファだけUTF-8にする
(setq ess-pre-run-hook
'((lambda ()
(set-locale-environment "utf-8")
(setenv "LANG" "ja_JP.UTF-8")
)))
*大雑把な説明 [#r77d752c]
Sweave ファイルに \SweaveOpts{concordance=TRUE} を追加す...
開いてみれば分かりますが,これは情報を圧縮した形式なので...
詳細は patchDVI パッケージのマニュアルに説明があります.~
今回定義した関数 mypatchDVI() では,その圧縮した情報を展...
要素数が TeX ファイルの行数と同じで,n 番目の要素は TeX ...
つまり,concord はコードチャンクを除いた Sweave ファイル...
一方,引数 -src をつけてコンパイルした DVI ファイルには,...
mypatchSynctex() でも,原理的には似たようなことを *.synct...
オリジナルの関数 patchSynctex() では pdflatex の利用が前...
しかし、uplatex または platex でコンパイルすると,その情...
したがって,mypatchSynctex() では,mypatchDVI() で処理す...
mypatchSynctex() を mypatchDVI() の前に実行するのはそのた...
なお,mypatchDVI() は,uplatex または platex のコンパイル...
*まとめ [#b4f9242d]
今回の内容で,Sweaveファイルの編集効率もそれなりに上がり...
TexmakerもSweaveに対応しているので,TeXレベルでDVI/PDFビ...
人柱になって頂ける方や,同様の情報を持っている方がいらっ...
#comment
ページ名: