Sweave: интерпретировать вывод R как код LaTeX - PullRequest
8 голосов
/ 15 июня 2011

Я написал некоторый пользовательский код R, который оборачивает сторонний двоичный файл. Одной из особенностей этого двоичного файла является создание документа LaTeX с рисунком и текстом. Одна из функций моего кода - это анализ этого документа и возврат кода LaTeX для рисунка.

Цель состоит в том, чтобы встроить мой код R в документ Rnw. Когда Sweave запущен, я хочу, чтобы мой код создавал документ с использованием стороннего двоичного файла, затем извлекал код LaTeX для рисунка и помещал его в вывод .tex Sweave. Затем, когда я запустил латекс с этим выводом, в моем отчете должна появиться фигура, сгенерированная сторонним двоичным файлом, автоматически и с хорошим форматированием.

Вместо этого код LaTeX распечатывается так:

[1] " %\\begin{landscape}"
[1] " \\begin{center}"
[1] "\\psset{linecolor=black,tnsep=2pt,tnheight=0cm,treesep=.3cm,levelsep=40pt,radius[1] "% \\def\\psedge#1#2{\\ncangle{#2}{#1}}"
[1] "% \\pstree[treemode=R]"
[1] " \\pstree{\\Tcircle{ 1 }~[tnpos=l]{\\shortstack[r]{nwsprec\\\\$\\leq$ 1.93}}}{"

И так далее ...

Есть ли способ заставить Sweave рассматривать вывод R как код LaTeX?

Спасибо заранее. -Wesley

1 Ответ

9 голосов
/ 15 июня 2011

Я понял это!Код Sweave должен выглядеть следующим образом:

<<echo=False, results=tex, include=True>>=
...R code goes here...
@

Где параметр results=tex является критическим изменением, которое говорит Sweave интерпретировать вывод R как код LaTeX.

И получитьизбавившись от кавычек и номеров строк, мне нужно было использовать команду cat в R вместо print.В частности, я изменил print(line) на cat( paste(line, "\n", sep='') ).

...