我正在使用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")))
<{1>}中的,这已经适用于~/.emacs
个文件,即使在包含.tex
和章master.tex
的多文件项目中也是如此。通过使用chapter.tex
(或C-c C-v
),可以跳转到相应的行(此功能也称为前向搜索)。
我希望在C-c C-c View
个文件中进行前向搜索,.Rnw
替换为chapter.tex
(Sweave)。但是,通过上述设置,chapter.Rnw
(在C-c C-c View
内执行)会给我chapter.Rnw
。显然,应该打开"Output file "chapter.pdf" does not exist."
。
我尝试在master.pdf
中设置局部变量(这适用于chapter.Rnw
上的纯.tex
个文档,但在两种意义上似乎都忽略了C-c C-_
个文件:首先,.Rnw
不再插入任何内容,其次,在C-c C-_
上,仍尝试打开错误的文件C-c C-c
。在chapter.pdf
,我看到实际调用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
文件中正确的主文件。
这是一个最小的例子:
chapter.Rnw:
.Rnw
master.tex:
% 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:
wrapper.Rnw:
\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:
我使用% patchDVI setup (see vignette)
<<echo=FALSE>>=
.SweaveFiles <- c("chapter.Rnw")
@
编译它(因此使用Duncan Murdoch的R包patchDVI来获得与Rscript -e "patchDVI::SweavePDF('chapter.Rnw', encoding='utf8')"
文件的同步。还可以编译整个项目,只需将.Rnw
替换为{{1} }。
答案 0 :(得分:1)
问题是TeX-normal-mode
文件中.Rnw
丢失,因此.tex
文档的转发搜索不再有效。要保留TeX-normal-mode
,请使用:
(add-hook 'noweb-select-doc-mode-hook
'(lambda ()
(unless (boundp 'in-noweb-select-doc-mode-hook)
(let* ((in-noweb-select-doc-mode-hook t)
(deactivate-mark))
(TeX-normal-mode t)))))