
Я использую WinEdt 9.1 сRМенеджери pdflatex для сшивания файлов PDF из файлов Rnw. Процесс в целом работает хорошо. Но я не могу использовать "обратный поиск" из моих документов PDF в мои файлы Rnw. Когда я пытаюсь это сделать, WinEdt открывает соответствующий файл .tex, а не файл .Rnw, который мне на самом деле нужно редактировать. Как мне исправить эту проблему?
Я понимаю, что SyncTeX"не знает"о файлах Rnw. Но я понимаю, что это именно та проблема, которую должен решать пакет "patchDVI" для R — и именно поэтому RManager требует установки этого пакета. В любом случае, у меня установлен пакет patchDVI, но обратный поиск из моих PDF-файлов все равно приводит меня к промежуточным файлам .tex, а не к файлам .Rnw, которые мне нужно редактировать.
У меня нет проблем с использованием обратного поиска, когда мои документы представляют собой обычные файлы .tex, а не файлы .Rnw.
Поиск на этом сайте выдал несколько связанных постов, включая ссылку на [этот пост]. Комментарий к посту вселил в меня надежду, что я смогу решить проблему, перейдя в Параметры > Режимы выполнения > PDFLaTeX и добавив переключатель "synctex=-1" при вызове pdflatex. Но это не помогло.
решение1
Решение оказывается простым: при использовании knitr необходимо включить
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
возможность.