2017-02-09 3 views
2

У меня есть RNW файл a.Rnw со следующим содержанием:Как форматировать вывод результатов с помощью выходных крючков в knitr?

\documentclass{beamer} 
\begin{document} 
\begin{frame}[fragile] 
<<>>= 
1+1 
@ 
\end{frame} 
\end{document} 

произвожу в формате PDF по

Rscript -e 'knitr::knit("a.Rnw")' 
pdflatex a.tex 

Выход в a.pdf выглядит следующим образом:

Output of knitr chunk

Как я получаю вывод, чтобы он выглядел так:

R> 1+1 
## [1] 2 

То есть, как положить R> перед кодом R и удалить пустую строку между кодом и выходом?

ответ

1

Чтобы показать R> перед всеми командами R, я установил запрос R, используя options, и сообщите приглашенному, чтобы показать приглашение, используя opts_chunk (код внизу ответа).

Избавление от новой линии немного сложнее, потому что код R и выход R в сгенерированном файле текс выглядит следующим образом:

\begin{alltt} 
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1} 
\end{alltt} 
\begin{verbatim} 
## [1] 2 
\end{verbatim} 

Таким образом, символ новой строки между R кода и его вывод не генерируется в явном виде но из-за нового пункта, начинающегося между \end{alltt} и \begin{verbatim}. Стеновая среда добавляет выше и ниже его текущее значение \topsep (see here). Поэтому я исправляю среду knitrout, так что эта переменная локально установлена ​​на 0pt. Вот новая версия a.Rnw:

\documentclass{beamer} 

% reduce whitespace between R code and R output 
\let\oldknitrout\knitrout 
\renewenvironment{knitrout}{ 
    \begin{oldknitrout} 
    \topsep=0pt 
}{ 
    \end{oldknitrout} 
} 

% show R> prompt before R commands 
<<r setup, echo=FALSE>>= 
options(prompt='R> ') 
knitr::opts_chunk$set(prompt=TRUE) 
@ 

\begin{document} 
\begin{frame}[fragile] 
<<>>= 
1+1 
@ 
\end{frame} 
\end{document} 

и результат выглядит следующим образом:

pdf generated by knitr with reduced whitespace between R code and output

+0

Я пробовал несколько методов, чтобы уменьшить расстояние между R-вывода: это первый один, который работал ! '' \ Renewenvironment {knitrout} {etc.'' – PatrickT

Смежные вопросы