SyncTeX-Inversesuche mit WinEdt- und Rnw-Dateien

SyncTeX-Inversesuche mit WinEdt- und Rnw-Dateien

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 = FALSEChunk-Option und der Einstellung der concordanceOption zu geben: Wenn cache.lazy = FALSEfür einen Chunk festgelegt ist und die concordance = TRUEZeile sich in diesem Chunk befindet, concordance = TRUEhat die Zeile keine Auswirkung. Mit anderen Worten, cache.lazy = FALSEes 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 = FALSEOption hat.

verwandte Informationen