Синтаксическая подсветка свечения в выводе - PullRequest
5 голосов
/ 26 января 2011

Кому-нибудь удалось заставить цветовую подсветку синтаксиса работать в выводе документов Sweave?Я смог настроить стиль вывода, добавив поля и т. Д. В файл Sweave.sty следующим образом:

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

И я могу получить пакет minted для подсветки синтаксиса дословноблоки кода в моем документе примерно так:

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

, но я не уверен, как объединить два для R входных секций.Я попробовал следующее:

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

Есть предложения?

Ответы [ 4 ]

5 голосов
/ 27 января 2011

У меня есть решение, которое сработало для меня, я не пробовал его ни на каких других системах, хотя, возможно, у вас все может не получиться из коробки.Я разместил некоторый код в https://gist.github.com/797478, который представляет собой набор модифицированных функций драйвера Rweave, которые используют четкие блоки вместо дословных блоков.

Чтобы использовать этот драйвер, просто укажите его при вызове Sweaveфункция с параметром driver = RweaveLatexMinted ().

5 голосов
/ 26 января 2011

Да, посмотрите на некоторые виньетки для Rcpp , например (для выбора только одного) Rcpp-FAQ pdf .

Мы используем выделение от Romain, которое само может перейти в двоичный файл hightlight от Andre Simon. Это делает все немного более сложным - Makefiles для виньеток и т. Д. Pp - но мы получаем красочный вывод из кода на R и C / C ++. Что стоит того.

4 голосов
/ 27 января 2011

Вот как я решил эту проблему, начиная с предложения @ daroczig.

\usepackage{minted}

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

Пока я занимался этим, мне нужно было работать с кэшированием, потому что я использую большие наборы данных, а один блок занимал около 3 минут. Итак, я написал эту zsh функцию оболочки для обработки .Rnw файла с кэшированием:

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

Теперь я просто делаю sweaveCache myFile и получаю результат, открытый в Preview (в OS X).

3 голосов
/ 26 января 2011

Эта тема на tex.StackExchange может быть интересна для вас, так как она предлагает загрузить пакет SweaveListingUtils в R для простого решения.

...