使用 WinEdt 和 Rnw 文件进行 SyncTeX 反向搜索

使用 WinEdt 和 Rnw 文件进行 SyncTeX 反向搜索

我正在使用 WinEdt 9.1关系经理和 pdflatex 可以将 Rnw 文件合并为 PDF 文件。这个过程通常很顺利。但我无法使用“反向搜索”从我的 PDF 文档到我的 Rnw 文件。当我尝试这样做时,WinEdt 打开了相应的 .tex 文件——而不是我实际需要编辑的 .Rnw 文件。我该如何解决这个问题?

我理解 SyncTeX“不知道”关于 Rnw 文件。但我认为这正是 R 的“patchDVI”包应该解决的问题——这就是 RManager 要求安装该包的原因。无论如何,我确实安装了 patchDVI 包,但从我的 PDF 进行反向搜索仍然会将我带到中间 .tex 文件,而不是我需要编辑的 .Rnw 文件。

当我的文档是普通的 .tex 文件而不是 .Rnw 文件时,使用反向搜索没有任何问题。

搜索此网站后,我找到了一些相关文章,其中包括指向 [此文章] 的链接。文章中的一条评论让我希望通过转到“选项”>“执行模式”>“PDFLaTeX”并在调用 pdflatex 时添加“synctex=-1”开关来解决问题。但这没有帮助。

答案1

解决方案其实很简单:使用 knitr 时,必须包含

knitr::opts_knit$set(concordance = TRUE)

在文件的代码块中。(对于使用 Sweave 而不是 knitr 的人来说,此行相当于\SweaveOpts{concordance=TRUE}。)当包含该行时,正向和反向搜索将按预期工作。

cache.lazy = FALSE有一个限制。无论出于什么原因,块选项和选项的设置之间似乎存在冲突concordance:如果cache.lazy = FALSE为某个块设置了,并且该concordance = TRUE行位于该块中,则该concordance = TRUE行将不起作用。换句话说,cache.lazy = FALSE似乎否定了该concordance = TRUE行。

有一个简单的解决方案:只需knitr::opts_knit$set(concordance = TRUE)在任何具有该选项的块之前在早期块中指定即可cache.lazy = FALSE

相关内容