2012-03-26 3 views
3

Sweave 파일 인 JMP.Rnw가 동일한 디렉토리에 다른 여러 파일을 입력합니다. (도입 부분에서 당겨) JMP.Rnw에서 관련 발췌은 다음과 같습니다 SweaveInput {} 오류 메시지 (현재 존재하지 않는 파일)

\SweaveInput{intro.tex} 

내가 명령 줄에서 Sweave을 실행할 때 아직, 나는 intro.tex 찾을 수 없다는 오류 메시지가 표시됩니다.

> Sweave("JMP.Rnw") 
Error in SweaveReadFile(c(ifile, file), syntax, encoding = encoding) : 
no Sweave file with name ‘./intro.tex ’ found 
> 

그러나 파일은 확실히있다 :

$ find . -name intro.tex 
./intro.tex 
$ 

이 입력은 다른 입력 파일을 작동하는 것처럼 보인다,하지만 일부는 수입 할 수있는 이유를 다른 사람이 할 수없는 설명 할 패턴을 감지 할 수 없습니다 . 이 Sweave 및 파일 인코딩 (Sweave doesn't seem to get .Rnw file encoding right 참조) 문제의 번호로 보인다,하지만 여기에 문제가 될 것 같지 않습니다 --- 모든 파일의 인코딩 US-ASCII :

$ file -bi JMP.Rnw 
text/x-tex; charset=us-ascii 
$ file -bi intro.tex 
text/x-tex; charset=us-ascii 
$ 

정말 이상한 점은 별도의 Sweave 용지 설정을 사용하고 해당 디렉토리로 intro.tex를 이동하고 해당 마스터 파일에 \ SweaveInput {intro.tex}을 추가하면 완벽하게 작동한다는 것입니다 (즉, 문제없이 빌드됩니다). 이 다른 논문 은 다른 LaTeX 템플릿을 사용하여입니다.하지만 Sweave는 기본적으로 모든 코드 블록이 식별되고 실행될 때까지이 모든 것을 무시한다는 점에서 부적절한 것처럼 보입니다.

x86_64-pc-linux-gnu (64 비트) 컴퓨터에서 R 버전 2.14.2를 실행 중입니다.

업데이트는 : https://stackoverflow.com/users/210673/aaron에서 답을 조사, 나는 하지이 추가로 포함되어 있습니까 존재하지 않는 파일을 호출 할 때 \ SweaveInput는 {} 작업을 수행 내 다른 논문에서, 오류 메시지가 생성 된 것을 발견 공간, 즉,

> Sweave("allocating_visibility.Rnw") 
Error in SweaveReadFile(c(ifile, file), syntax, encoding = encoding) : 
no Sweave file with name ‘./nothere.Rnw’ found 
> 

지금, 나는 더이 후행 공백 것은 한 곳에서 일어나고있는 이유를 생각하지만 다른이 없다, 그러나 이것은 문제의 대부분의 원인처럼 보인다.

업데이트 II : 결국이 문제는 인코딩 문제로 드러났습니다. 원래 마스터 .Rnw 파일을 만들 때 utf-8로 인코딩 된 일부 텍스트를 붙여 넣었습니다. http://billposer.org/Software/uni2ascii.html을 사용하여 파일을 ascii로 다시 변환했으며 Sweave를 실행했을 때 여전히 공백 오류가 발생했습니다. 그러나 원본 \ SweaveInput {} 행을 삭제하고 다시 입력하면 문제가 사라졌습니다 (즉, 올바르게 빌드되고 오류 메시지의 추가 공간이 사라짐).

+0

"intro.tex"를 작동중인 프로젝트로 옮긴 마지막 테스트는 확실히 문제를 복잡하게 만듭니다. – sarnold

+0

예 - 제 생각에 최선의 방법은 hello world + import sweave paper를 만들고 오류를 재현하려고하는 것입니다.하지만 저는 여전히 누군가가 실수를 저지르기를 바라고 있습니다. –

답변

3

난 당신이 \SweaveInput{intro.tex } 대신 오류 메시지로 \SweaveInput{intro.tex}의이 끝 인용 전에 거기에 여분의 공간이있는 것 같아요.

디버그하려면 utils 패키지에서 SweaveReadFile 명령을 편집하여 찾고있는 파일의 이름을 출력하도록 할 수 있습니다.

SweaveReadFileNew <- function(file, syntax, encoding = "") { 
    message(gettextf("looking for Sweave file with name %s", sQuote(file[1L])), domain = NA) 
    SweaveReadFileOrig(file, syntax, encoding) 
} 
SweaveReadFileOrig <- utils:::SweaveReadFile 
assignInNamespace("SweaveReadFile", SweaveReadFileNew, ns="utils") 
+0

그래서 궁금한 점이 있습니다.하지만 필자는 주 파일 (즉, 여유 공간 없음)을 확실히 가지고 있습니다. 나는 이맥스 24와 ​​gedit에서 파일을 보았습니다. 여분의 공백이 없습니다. –

+0

오류 메시지에 공백이 없어야합니다. 찾으려는 파일 이름을 인쇄 할 수있는 방법을 보려면 편집을 참조하십시오. – Aaron

관련 문제