如何使用 knitr 中的输出挂钩格式化结果输出?
How to format output of results using output hooks in knitr?
我有一个包含以下内容的 Rnw 文件 a.Rnw
:
\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
中的输出如下所示:
如何使输出看起来像这样:
R> 1+1
## [1] 2
也就是我如何在R代码前面加上R>
,去掉代码和输出之间的空行?
为了在所有 R 命令前显示 R>
,我使用 options
设置 R 提示,并告诉 knitr 使用 opts_chunk
显示提示(答案底部的代码) .
删除新行有点棘手,因为生成的 tex 文件中的 R 代码和 R 输出如下所示:
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
所以 R 代码和它的输出之间的换行符不是由 knitr 明确生成的,而是由于在 \end{alltt}
和 \begin{verbatim}
之间开始了一个新段落。 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}
输出如下所示:
我有一个包含以下内容的 Rnw 文件 a.Rnw
:
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
<<>>=
1+1
@
\end{frame}
\end{document}
我通过
制作了一个 pdfRscript -e 'knitr::knit("a.Rnw")'
pdflatex a.tex
a.pdf
中的输出如下所示:
如何使输出看起来像这样:
R> 1+1
## [1] 2
也就是我如何在R代码前面加上R>
,去掉代码和输出之间的空行?
为了在所有 R 命令前显示 R>
,我使用 options
设置 R 提示,并告诉 knitr 使用 opts_chunk
显示提示(答案底部的代码) .
删除新行有点棘手,因为生成的 tex 文件中的 R 代码和 R 输出如下所示:
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
所以 R 代码和它的输出之间的换行符不是由 knitr 明确生成的,而是由于在 \end{alltt}
和 \begin{verbatim}
之间开始了一个新段落。 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}
输出如下所示: