2013-10-21 5 views
2

설정 : 여기 sessionInfo()이다 : 나는 이맥스를 얻으려고 노력하고 있고 AucTeX 내 .Rnw 소스를 동기화 할knitr 1.5/patchDVI 1.9 명시하다 할 허용 일치 + 이맥스를 생성하지 않는 것

R version 3.0.2 (2013-09-25) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=fr_FR.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=fr_FR.UTF-8  LC_COLLATE=fr_FR.UTF-8  
[5] LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8 
[7] LC_PAPER=fr_FR.UTF-8  LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] patchDVI_1.9 knitr_1.5 

loaded via a namespace (and not attached): 
[1] compiler_3.0.2 evaluate_0.5.1 formatR_0.9 highr_0.2.1 stringr_0.6.2 
[6] tcltk_3.0.2 tools_3.0.2 

소스와 뒤에서 comiled 텍스트로 이동 evince와 파일.

이미 동기화가 .tex 소스와 PDF간에 잘 작동하는지 확인했습니다.

> options("knitr.concordance") 
$knitr.concordance 
[1] TRUE 

> opts_knit$get("concordance") 
[1] TRUE 
> knit("IntroStat.Rnw") 


processing file: IntroStat.Rnw 
    |......................           | 33% 
    ordinary text without R code 

    |...........................................      | 67% 
label: unnamed-chunk-1 (with options) 
List of 1 
$ include: logi FALSE 

    |.................................................................| 100% 
    ordinary text without R code 


output file: IntroStat.tex 

[1] "IntroStat.tex" 
> system("pdflatex -synctex=1 IntroStat.tex") 

[편집 irrelevancies]

SyncTeX written on IntroStat.synctex.gz. 

참고 :

\documentclass[a4paper,twoside,12pt]{article} 
\synctex=1 %% Should force concordance generation 
\pdfcompresslevel=0 %% Should force avoidance of PDF compression, which patchDVI does 
\pdfobjcompresslevel=0 %% not handle 
<<include=FALSE>>= %% Modificaton of what Sweave2kinitr does 
## opts_chunk$set(concordance=TRUE, self.contained=TRUE) ## No possible effect 
opts_knit$set(concordance=TRUE, self.contained=TRUE) ## Seems reasonable 
@ 
%% \SweaveOpts{concordance=TRUE} %% That's where inspiration came from 

가 다음 로그 (편집 unrelevant 부분을) 고려 :

내 .Rnw 파일로 시작 : 일치어 *되었습니다. 이 생성되었습니다. !!!

> system("pdflatex -synctex=1 IntroStat.tex") 

[편집 irrelevancies]

Output written on IntroStat.pdf (1 page, 136907 bytes). 
SyncTeX written on IntroStat.synctex.gz. 

참고 : 색인 항목 *하고 * 있다 **

Transcript written on IntroStat.log. 

은의이 참조를 해결하기 위해 다시 해 보자 * again * !!! **

Transcript written on IntroStat.log. 
> patchDVI("IntroStat.pdf") 
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?" 

*이 이해가 안 *

> patchSynctex("IntroStat.synctex.gz") 
[1] "0 patches made. Did you set \\SweaveOpts{concordance=TRUE}?" 

* 저두 * 광고 된대로 도구 세트에 뭔가가 작동하지 않는 것 같습니다

: dviPatch는 법적 일치 \ specials를 인식하지 못하거나 pdflatex를 생성하지 않습니다. 그러나 이 무엇인가를 생성합니까?

결과 PDF로 evince가 .tex 파일과 동기화되지만 .Rnw 파일과 동기화 할 수 없음을 확인했습니다. 게다가 .Rnw 파일이 emacs에서 열리면 AucTeX에서 'Cc Cv View'로 뷰어를 시작하면 뷰어가 실제로 시작되지만 (뷰어가 비어있는 서버를 열어달라고 요청한 후) 뷰어가 비어있는 상태입니다. : "TeX-evince-sync-view : 파일에 대한 Evince 인스턴스를 찾을 수 없습니다 : ///home/charpent/Boulot/Cours/ODF/Chapitres/Ch3-StatMath/IntroStat.Rnw.pdf" " 메시지 "버퍼

여기에 초임 문제가 있습니다.

정말 R/\ LaTeX의 내 주요 도구로 이맥스를 유지하고 싶습니다 ... 세 번째 사람은 투명하게 AucTeX 생산 체인에이 모든 것을 통합하는 것입니다, 그러나 이것은 또 다른 이야기입니다/Sage 작업, 오히려 그게 아마 매일 SageTeX과 내가 매일/매주 필요한 다양한 도구를 좋아하지 않을 것입니다 RStudio로 전환 ...

어떤 생각?

+1

patchDVI가 knitr (아직)을 지원하지 않는다고 생각합니다. 그것은 Sweave를 위해 설계되었습니다. RStudio는 knitr과 Sweave 모두에 대한 작업을 수행했지만 어떻게 수행되었는지 거의 알지 못합니다. –

+0

@Yihui 님, [This] (https://github.com/yihui/knitr/issues/133)는 patchDVI *에 대한 지원 *이 knitr *에 의해 구현되었다고 생각하게했습니다. 이 페이지에서보다 구체적으로, 또는 더 나은 "올바른"지원을 구현하는 것이 좋을 것입니다 ... 그래서, 알 수있는 한, knitr을 통해 컴파일 된 .Rnw 파일과 결과 .pdf. 젠장! 나는 Sweave로 돌아가고 싶지 않습니다. knitr은 나에게 없어서는 안될 중요한 요소 (그래픽, 캐시 등)를 가지고 있습니다. 더 이상의 제안? – user2903730

+0

시간이 있으면 patchDVI를 다시 살펴 보겠습니다. 감사! –

답변

2

아마도 https://github.com/jan-glx/patchKnitrSynctex이 도움이 될 것입니다. 나는 간단한 파일에 그것을 시도하고, 그것은 작동하지 않습니다.

#!/bin/bash 
FILE=$1 
BASENAME=$(basename $FILE .Rnw) 
Rscript -e 'library(knitr); opts_knit$set("concordance" = TRUE); knit("'$1'")' 
pdflatex --synctex=1 --file-line-error --shell-escape "${1%.*}" 
Rscript -e "source('~/Sources/patchKnitrSynctex.R'); patchKnitrSynctex('${1%.*}.tex')" 
ln -s $BASENAME.synctex.gz $BASENAME.Rnw.synctex.gz 
ln -s $BASENAME.pdf $BASENAME.Rnw.pdf 

링크 주변에 점점 내 미봉책 방법 : 두 번째와 세 번째 문제에 관해서는

,이 스크립트 (그에 따라 경로를 수정 내가 1 월 GLX에서 위의 코드를 소스 참고)가 "인스턴스를 찾을 수 없습니다 (...)".

Emacs 버퍼에 .Rnw가있는 경우 셸 버퍼로 이동하여 해당 스크립트를 호출하십시오. 끝나면 Emacs의 C-c C-v가 구성된 PDF 뷰어를 엽니 다 (필자의 경우 okay). PDF에서 Shift + 마우스 왼쪽 버튼을 클릭하면 Emacs .Rnw 버퍼의 올바른 위치로 이동합니다.

이상적인 것은 아닙니다. 오류로 점프하면 .Rnw가 아닌 ​​.tex로 이동합니다. 그리고 나는 C-C C-C 또는 유사하게 그것을 호출 할 수 있기를 원한다. (그러나 나는 어떻게 ...- 무지를 모른다).