
Estou usando o WinEdt 9.1 comRManagere pdflatex para unir arquivos PDF a partir de arquivos Rnw. O processo geralmente funciona bem. Mas não posso usar a "pesquisa inversa" dos meus documentos PDF para os meus arquivos Rnw. Quando tento fazer isso, o WinEdt abre o arquivo .tex correspondente - não o arquivo .Rnw que realmente preciso editar. Como posso resolver esse problema?
Eu entendo que SyncTeX"não sabe"sobre arquivos Rnw. Mas entendo que esse é exatamente o problema que o pacote "patchDVI" para R deveria resolver - e é por isso que o RManager exige que o pacote seja instalado. De qualquer forma, tenho o pacote patchDVI instalado, mas a pesquisa inversa dos meus PDFs ainda me leva aos arquivos .tex intermediários, não aos arquivos .Rnw que preciso editar.
Não tenho problemas em usar a pesquisa inversa quando meus documentos são arquivos .tex comuns em vez de arquivos .Rnw.
Uma pesquisa neste site revelou algumas postagens relacionadas, incluindo um link para [esta postagem]. Um comentário na postagem me levou a ter esperança de poder resolver o problema acessando Opções > Modos de execução > PDFLaTeX e adicionando a opção "synctex=-1" quando o pdflatex é chamado. Mas isso não ajudou.
Responder1
A solução acaba sendo simples: ao usar o knitr é preciso incluir
knitr::opts_knit$set(concordance = TRUE)
em um pedaço de código no arquivo. (Esta linha é equivalente \SweaveOpts{concordance=TRUE}
para aqueles que usam Sweave em vez de knitr.) Quando essa linha é incluída, a pesquisa direta e inversa funciona conforme o esperado.
Existe uma qualificação. Por alguma razão, parece haver um conflito entre a cache.lazy = FALSE
opção chunk e a configuração da concordance
opção: se cache.lazy = FALSE
estiver definido para um pedaço e a concordance = TRUE
linha estiver nesse pedaço, a concordance = TRUE
linha não terá efeito. Em outras palavras, cache.lazy = FALSE
parece negar a concordance = TRUE
linha.
Existe uma solução simples: basta especificar knitr::opts_knit$set(concordance = TRUE)
em um trecho inicial, antes de qualquer trecho que tenha a cache.lazy = FALSE
opção.