1

我正在使用 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.texchapter.texC-c C-vC-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.pdfmaster.pdf,那么我可以跳转chapter.Rnwmaster.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.Rnwwrapper.Rnw.

4

1 回答 1

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)))))
于 2012-10-23T05:58:04.700 回答