Pdf knitr 1.5/patchDVI 1.9不';t似乎产生了一种可接受的一致性+;emacs

Pdf knitr 1.5/patchDVI 1.9不';t似乎产生了一种可接受的一致性+;emacs,pdf,emacs,knitr,ess,auctex,Pdf,Emacs,Knitr,Ess,Auctex,设置:这里是sessionInfo(): 我正试图让emacs和AucTeX将我的.Rnw源文件与evince同步,以便从源代码转到漫画文本并返回 我已经检查了.tex源和PDF之间的同步是否正常工作 My.Rnw文件以以下内容开头: \documentclass[a4paper,twoside,12pt]{article} \synctex=1 %% Should force concordance generation \pdfcompresslevel=0 %% Should force

设置:这里是sessionInfo():

我正试图让emacs和AucTeX将我的.Rnw源文件与evince同步,以便从源代码转到漫画文本并返回

我已经检查了.tex源和PDF之间的同步是否正常工作

My.Rnw文件以以下内容开头:

\documentclass[a4paper,twoside,12pt]{article}
\synctex=1 %% Should force concordance generation
\pdfcompresslevel=0 %% Should force avoidance of PDF compression, which patchDVI does
\pdfobjcompresslevel=0 %% not handle
<<include=FALSE>>= %% Modificaton of what Sweave2kinitr does
## opts_chunk$set(concordance=TRUE, self.contained=TRUE) ## No possible effect
opts_knit$set(concordance=TRUE, self.contained=TRUE) ## Seems reasonable
@
%% \SweaveOpts{concordance=TRUE} %% That's where inspiration came from
[已编辑的无关内容]

SyncTeX written on IntroStat.synctex.gz.
Output written on IntroStat.pdf (1 page, 136907 bytes).
SyncTeX written on IntroStat.synctex.gz.
注意:已*生成一致性**

Transcript written on IntroStat.log.
Transcript written on IntroStat.log.
> patchDVI("IntroStat.pdf")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
> patchSynctex("IntroStat.synctex.gz")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
让我们再次执行此操作以修复引用:

> system("pdflatex -synctex=1 IntroStat.tex")
[已编辑的无关内容]

SyncTeX written on IntroStat.synctex.gz.
Output written on IntroStat.pdf (1 page, 136907 bytes).
SyncTeX written on IntroStat.synctex.gz.
注意:已*再次*生成*一致性***

Transcript written on IntroStat.log.
Transcript written on IntroStat.log.
> patchDVI("IntroStat.pdf")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
> patchSynctex("IntroStat.synctex.gz")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
*这我不明白*

Transcript written on IntroStat.log.
Transcript written on IntroStat.log.
> patchDVI("IntroStat.pdf")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
> patchSynctex("IntroStat.synctex.gz")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
*同上*

Transcript written on IntroStat.log.
Transcript written on IntroStat.log.
> patchDVI("IntroStat.pdf")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
> patchSynctex("IntroStat.synctex.gz")
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?"
这组工具中的某些内容似乎不符合广告要求:要么dviPatch不识别法律一致性\特殊性,要么pdflatex dfoes不生成它们。它确实产生了一些东西,但是

我检查了生成的PDF是否允许evice与.tex文件同步,但不允许与.Rnw文件同步。此外,当.Rnw文件在emacs中打开时,使用AucTeX中的“C-C C-v视图”启动查看器确实会启动查看器(在请求打开我授权的服务器之后),但是查看器是空的,我得到以下结果: “TeX evince同步视图:找不到的evince实例file:///home/charpent/Boulot/Cours/ODF/Chapitres/Ch3-StatMath/IntroStat.Rnw.pdf" 在“消息”缓冲区中

所以我们还有第二个问题

第三个是将所有这些透明地整合到AucTeX生产链中,但这是另一个故事

我真的很想把emacs作为R/\LaTeX/Sage工作的主要工具,而不是切换到RStudio,它可能不太喜欢SageTeX和其他我每天/每周需要的各种工具

有什么想法吗?

也许这会有帮助。我在一个简单的文件上试用过,它确实有效

至于第二个和第三个问题,我有这个脚本(注意,我从jan glx获得了上述代码;相应地修改路径):

这些链接是我绕开“找不到实例(…)”的笨拙方式

如果您的.Rnw在Emacs缓冲区中,请转到shell缓冲区并调用该脚本。完成后,Emacs中的C-C-v将打开您配置的PDF查看器(在我的示例中为okular)。在PDF中,按住shift键并单击鼠标左键(至少为okular)将将您带到Emacs.Rnw缓冲区的正确位置


这并不理想:如果跳转到错误,它将转到.tex,而不是.Rnw。我希望能够通过C-C C-C或类似方式调用它(但我不知道如何调用--elisp无知)。

我认为patchDVI不支持knitr(目前);它是为Sweave设计的。RStudio已经为knitr和Sweave完成了这项工作,但我不知道它是如何完成的。亲爱的@Yihui,让我觉得knitr实现了对patchDVI的支持。最好在这一页上更具体一些,或者更好地实现“正确的”“支持。。。因此,据我所知,通过knitr编译的.Rnw文件与其生成的.pdf文件之间不可能进行同步。该死我不想再回到Swave:knitr有太多对我来说不可或缺的东西(图形、缓存等)。还有什么建议吗?我有时间再看一看patchDVI。谢谢一辉在这上面加了一个便条,如果你想跟踪那里的事情!