
Ich verwende WinEdt 9.1 mitRManagerund pdflatex, um PDF-Dateien aus Rnw-Dateien zusammenzufügen. Der Vorgang funktioniert im Allgemeinen gut. Aber ich kann die „inverse Suche“ von meinen PDF-Dokumenten zu meinen Rnw-Dateien nicht verwenden. Wenn ich dies versuche, öffnet WinEdt die entsprechende .tex-Datei – nicht die .Rnw-Datei, die ich eigentlich bearbeiten muss. Wie kann ich dieses Problem beheben?
Ich verstehe, dass SyncTeX"weiß nicht"über Rnw-Dateien. Aber ich nehme an, dass dies genau das Problem ist, das das „patchDVI“-Paket für R lösen soll – und deshalb erfordert RManager, dass das Paket installiert ist. Auf jeden Fall habe ich das patchDVI-Paket installiert, aber die umgekehrte Suche von meinen PDFs führt mich immer noch zu den Zwischendateien .tex, nicht zu den .Rnw-Dateien, die ich bearbeiten muss.
Ich habe kein Problem mit der inversen Suche, wenn meine Dokumente normale .tex-Dateien und keine .RNW-Dateien sind.
Eine Suche auf dieser Site ergab einige verwandte Beiträge, darunter einen Link zu [diesem Beitrag]. Ein Kommentar zu dem Beitrag ließ mich hoffen, dass ich das Problem lösen könnte, indem ich zu Optionen > Ausführungsmodi > PDFLaTeX gehe und den Schalter „synctex=-1“ hinzufüge, wenn pdflatex aufgerufen wird. Aber das hat nicht geholfen.
Antwort1
Die Lösung ist einfach: Wenn man knitr verwendet, muss man Folgendes einbinden:
knitr::opts_knit$set(concordance = TRUE)
in einem Codeblock in der Datei. (Diese Zeile ist gleichwertig für \SweaveOpts{concordance=TRUE}
diejenigen, die Sweave statt knitr verwenden.) Wenn diese Zeile eingefügt wird, funktionieren die Vorwärts- und Rückwärtssuche wie erwartet.
Es gibt eine Einschränkung. Aus irgendeinem Grund scheint es einen Konflikt zwischen der cache.lazy = FALSE
Chunk-Option und der Einstellung der concordance
Option zu geben: Wenn cache.lazy = FALSE
für einen Chunk festgelegt ist und die concordance = TRUE
Zeile sich in diesem Chunk befindet, concordance = TRUE
hat die Zeile keine Auswirkung. Mit anderen Worten, cache.lazy = FALSE
es scheint die Zeile zu negieren concordance = TRUE
.
Es gibt eine einfache Lösung: Geben Sie sie einfach knitr::opts_knit$set(concordance = TRUE)
in einem frühen Block an, vor jedem Block, der diese cache.lazy = FALSE
Option hat.