Pesquisa inversa SyncTeX com arquivos WinEdt e Rnw

Pesquisa inversa SyncTeX com arquivos WinEdt e Rnw

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 = FALSEopção chunk e a configuração da concordanceopção: se cache.lazy = FALSEestiver definido para um pedaço e a concordance = TRUElinha estiver nesse pedaço, a concordance = TRUElinha não terá efeito. Em outras palavras, cache.lazy = FALSEparece negar a concordance = TRUElinha.

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 = FALSEopção.

informação relacionada