使用 WinEdt 和 Rnw 檔案進行 SyncTeX 反向搜尋

使用 WinEdt 和 Rnw 檔案進行 SyncTeX 反向搜尋

我正在使用 WinEdt 9.1R經理和 pdflatex 從 Rnw 文件編織 PDF 文件。該過程通常運行良好。但我無法使用從 PDF 文件到 Rnw 文件的“反向搜尋”。當我嘗試這樣做時,WinEdt 會開啟相應的 .tex 文件,而不是我實際需要編輯的 .Rnw 文件。我該如何解決這個問題?

我了解 SyncTeX“不知道”關於 Rnw 檔。但我認為這正是 R 的「patchDVI」套件應該解決的問題——這就是為什麼 RManager 要求安裝該套件。無論如何,我確實安裝了 patchDVI 軟體包,但從 PDF 中進行反向搜尋仍然會將我帶到中間 .tex 文件,而不是我需要編輯的 .Rnw 文件。

當我的文件是普通的 .tex 檔案而不是 .Rnw 檔案時,使用反向搜尋沒有問題。

搜尋該網站發現了一些相關帖子,包括[這篇文章]的連結。對這篇文章的評論讓我希望我可以透過轉到“選項”>“執行模式”> PDFLaTeX 並在調用 pdflatex 時添加“synctex=-1”開關來解決問題。但這沒有幫助。

答案1

解決方案很簡單:使用 knit 時,必須包括

knitr::opts_knit$set(concordance = TRUE)

在文件中的程式碼區塊中。 (此行相當於\SweaveOpts{concordance=TRUE}使用 Sweave 而不是 knitr 的人。)當包含該行時,正向和反向搜尋將按預期工作。

有一項資格。無論出於何種原因,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選項的區塊之前。

相關內容