2011-01-26 13 views
5

Sweave 문서의 출력에서 색상 구문 강조 표시를 관리 할 수있는 사람이 있습니까?출력의 구문 강조 표시

\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontseries=bc,frame=single} 
\DefineVerbatimEnvironment{Soutput}{Verbatim}{frame=leftline} 
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontseries=bc} 

그리고 내가 좋아하는 내 문서에 그대로 코드 블록의 구문 강조를 할 수있는 minted 패키지를 얻을 수 있습니다 다음과 같이 나는 Sweave.sty 파일에 추가 상자 등으로 출력 스타일을 사용자 정의 할 수있었습니다 그래서 :

\begin{minted}{perl} 
use Foo::Bar; 
... 
\end{minted} 

그러나 나는 두 개의 입력 섹션을 결합하는 방법을 잘 모르겠습니다. 나는 다음을 시도했다 :

\DefineVerbatimEnvironment{Sinput}{minted}{r} 
\DefineVerbatimEnvironment{Scode}{minted}{r} 

어떤 제안?

답변

3

This topic (tex.StackExchange)은 쉽게 해결책을 찾기 위해 SweaveListingUtils package을로드하는 것이 좋습니다.

+0

감사합니다. 'SweaveListingUtils'를 사용할 수없는 것 같지만'\ renewenvironment'에 시도해 볼 것입니다. –

+0

@Ken Williams : 패키지의 문제점을 구체적으로 설명해 주시겠습니까? 나는 그것이 당신을 위해 쉽고 좋은 해결책으로 일할 수 있기를 바랬다. 오류가 지속되면 다른 대안을 통해 행운을 빈다. – daroczig

5

예, Rcpp의 비 네트 (예 : 하나만 선택)는 Rcpp-FAQ pdf입니다.

Romain에서 highlight을 사용합니다.이 자체는 Andre Simon이 바이너리 hightlight으로 배포 할 수 있습니다. 모든 것을 조금 더 복잡하게 만든다 --- 비네트 etc pp를위한 Makefile --- 그러나 우리는 R과 C/C++ 코드로부터 다채로운 출력을 얻는다. 그것은 그만한 가치가 있습니다.

4

다음은 @ daroczig의 제안에서 시작하여 어떻게 해결 되었습니까? 나는 그것을 동안

\usepackage{minted} 

\renewenvironment{Sinput}{\minted[frame=single]{r}}{\endminted} 
\DefineVerbatimEnvironment{Soutput}{Verbatim}{frame=leftline} 
\DefineVerbatimEnvironment{Scode}{Verbatim}{} 

, 나는 내가 큰 데이터 세트를 사용하고 하나의 덩어리를 완료하는 데 약 3 분 정도 복용했기 때문에 작업 캐싱을 얻을 필요가 있었다. 그래서 나는 캐시와 함께 .Rnw 파일을 처리하기 위해이 zsh 쉘 기능을 썼다 :

function sweaveCache() { 
    Rscript -e "library(cacheSweave); setCacheDir(getwd()); Sweave('$1.Rnw', driver = cacheSweaveDriver)" && 
    pdflatex --shell-escape $1.tex && 
    open $1.pdf 
} 

지금 난 그냥 sweaveCache myFile을하고 난 (OS X에) 미리보기에서 연 결과를 얻을.

+1

BTW,'--shell-escape'은'minted'에 의해 필요합니다. 왜냐하면 파이썬에서 구문 강조를하기 때문입니다. –

+0

r-studio에서 쉘 탈출은 Tools - Global Options - Sweave - 쉘 이스케이프 명령을 사용합니다. Minted에는 python 패키지 "pygments"도 필요합니다. Linux의 경우 "sudo pip2 install Pygments"설치 – everybody

5

나는 나를 위해 일한 해결책이 있지만, 다른 시스템에서는 시도하지 않았기 때문에 상황이 해결되지 않을 수도 있습니다. https://gist.github.com/797478에 일부 코드를 게시했습니다.이 코드는 축 어적 블록 대신 발행 된 블록을 사용하는 수정 된 Rweave 드라이버 함수 집합입니다.

이 드라이버를 사용하려면 driver = RweaveLatexMinted() 옵션을 사용하여 Sweave 함수를 호출 할 때 지정하십시오.