我正在使用 Ubuntu 12.04、Emacs 24 和 (pdf) 查看器 Okular 0.14。我希望能够从.Rnw
(Sweave)文件中打开 Okular(并跳转到特定行)。通过使用
(setq TeX-view-program-list
'(("Okular" "okular --unique %o#src:%n`pwd`/./%b")))
在 中~/.emacs
,这已经适用于文件,即使在由 a和 chapter.tex
组成的多文件项目中也是如此。通过使用(或)可以跳转到相应的行(此功能也称为前向搜索)。master.tex
chapter.tex
C-c C-v
C-c C-c View
我也想从.Rnw
文件中进行前向搜索,其中chapter.tex
替换为chapter.Rnw
(Sweave)。但是,通过上述设置,C-c C-c View
(从内部执行chapter.Rnw
)给了我"Output file "chapter.pdf" does not exist."
. 显然,master.pdf
应该已经打开了。
我试图设置局部变量chapter.Rnw
(这适用于纯.tex
文档 on C-c C-_
),但它似乎.Rnw
在两种意义上都被文件忽略了:首先,C-c C-_
不再插入任何内容,其次,on ,仍然尝试打开C-c C-c
错误的文件chapter.pdf
. 在 上,我看到了对 which 、和... 展开C-c C-c View
的实际调用:%o
%n
%b
okular --unique chapter.pdf#src:8`pwd`/./chapter.Rnw
如果我手动替换chapter.pdf
为master.pdf
,那么我可以跳转chapter.Rnw
到master.pdf
. 所以该命令基本上可以工作,但它没有从文件中找到正确的主.Rnw
文件。
这是一个最小的例子:
章节.Rnw:
% patchDVI setup (see vignette)
\SweaveOpts{concordance=TRUE}
<<echo=FALSE>>=
.TexRoot <- "master.tex"
@
foo bar foo bar
\clearpage
<<hist, echo=TRUE, fig=true>>=
X <- rnorm(50, mean=20, sd = 3)
hist(X)
@
foo bar foo bar
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master.tex"
%%% End:
master.tex:
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[american]{babel}
\usepackage{blindtext}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{fancyvrb}
\usepackage{Sweave}
\fvset{listparameters={\setlength{\topsep}{0pt}}}
\renewenvironment{Schunk}{\vspace{\topsep}}{\vspace{\topsep}}
\begin{document}
\input{chapter}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
包装器.Rnw:
% patchDVI setup (see vignette)
<<echo=FALSE>>=
.SweaveFiles <- c("chapter.Rnw")
@
我使用Rscript -e "patchDVI::SweavePDF('chapter.Rnw', encoding='utf8')"
(所以使用 Duncan Murdoch 的 R 包 patchDVI 来与.Rnw
文件同步)编译它。也可以编译整个项目,只需替换chapter.Rnw
为wrapper.Rnw
.