2011-01-26 17 views
5

スウィーブ文書の出力でカラーシンタックスハイライトが機能している人はいますか?出力でスウィーブシンタックスの強調表示

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

そして、私は次のように私の文書にそのままコードブロックの構文の強調表示を行うためのmintedパッケージを取得することができます:次のように私はSweave.styファイルになど、ボックスを追加することで、出力形式をカスタマイズすることができましたso:

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

しかし、私は2つの入力セクションをどのように組み合わせるかはわかりません。私は次を試みた:

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

何か提案がありますか?

答えて

3

This topic(tex.StackExchange)は、簡単な解決策のためにSweaveListingUtils packageをロードすることをお勧めします。興味深いかもしれません。

+0

ありがとうございました。 'SweaveListingUtils'を動作させるようには思えませんが、' \ renewenvironment'のものを試してみます。 –

+0

@Ken Williams:パッケージの問題点は何ですか?私はそれが素晴らしい、簡単な解決策としてあなたのために働くことを望んだ。エラーが続く場合は、他の選択肢に幸運を祈る! – daroczig

5

はい、Rcppのビネットの一部を見てください(たとえば、1つだけを選択するなど)Rcpp-FAQ pdf

Romainのhighlightは、Andre Simonがバイナリhightlightにファームウェアできます。すべてのことをもっと複雑にします---ビネットなどのメイクファイルpp ---しかし、RやC/C++コードから多彩な出力を得ることができます。それはその価値がある。

4

ここで、@ daroczigの提案から始めて、どのように解決したかを説明します。

\usepackage{minted} 

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

私はそれであったが、私は大規模なデータセットを使用していますし、1つのチャンクが完了するまでに約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

ところで、 ' - shell-escape'は、' minted'が必要とするのは、Pythonで構文ハイライトを行うためです。 –

+0

r-studioでは、シェルエスケープはツール - グローバルオプション - スウィーブ - シェルエスケープコマンドを有効にして行います。 Mintedにはpythonパッケージ "pygments"も必要です。 Linuxの場合、 "sudo pip2 install Pygments"によってインストールされています。 – everybody

5

私は私のために働いた解決策を持っていますが、他のシステムでは試していませんが、あなたのためにはうまくいかないかもしれません。私はhttps://gist.github.com/797478にいくつかのコードを掲示しました。このコードは、逐語的なブロックではなくmintedブロックを使用する修正されたRweaveドライバ関数のセットです。

このドライバを使用するには、driver = RweaveLatexMinted()オプションを指定してSweave関数を呼び出すときに指定します。

関連する問題