如何使用knitr中的输出挂钩格式化结果输出?
我有一个Rnw文件如何使用knitr中的输出挂钩格式化结果输出?,r,knitr,beamer,R,Knitr,Beamer,我有一个Rnw文件a.Rnw,包含以下内容: \documentclass{beamer} \begin{document} \begin{frame}[fragile] <<>>= 1+1 @ \end{frame} \end{document} a.pdf中的输出如下所示: R> 1+1 ## [1] 2 \begin{alltt} \hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1} \end{alltt} \begin{ve
a.Rnw
,包含以下内容:
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
<<>>=
1+1
@
\end{frame}
\end{document}
a.pdf
中的输出如下所示:
R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
如何使输出看起来像这样:
R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
< P > >如何在R代码前放置<代码> R> <代码>,删除代码和输出之间的空行?< P> >在所有R命令前面显示“代码> R> < /代码>,我使用“代码>选项> <代码>设置R提示,并告诉KNITR使用
OPTSuxCuxb/code >(在答案的底部代码)显示提示。
删除新行有点棘手,因为生成的tex文件中的R代码和R输出如下所示:
R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
因此,R代码与其输出之间的换行不是由knitr显式生成的,而是由于在\end{alltt}
和\begin{verbatim}
之间开始了一个新段落。逐字记录环境在其上下添加当前值\topsep
()。因此,我对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}
\documentclass{beamer}
%减少R代码和R输出之间的空白
\let\oldknitrout\knitrout
\更新环境{knitrout}{
\开始{oldnitrout}
\topsep=0pt
}{
\结束{oldnitrout}
}
%在R命令之前显示R>提示
=
选项(prompt='R>')
knitr::opts_chunk$set(prompt=TRUE)
@
\开始{document}
\开始{frame}[易碎]
=
1+1
@
\结束{帧}
\结束{document}
输出如下所示:
R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
我尝试了几种缩小R输出间距的方法:这是第一种有效的方法<代码>\renewenvironment{knitrout}{等。