在 beamer 演示文稿中有条件地打印文本或显示图形
Conditionally print text or show graph in beamer presentation
我在执行 (beamer
) 演示文稿时遇到了一些困难。一切正常,直到我包含一个函数来检查特定条件并相应地 returns 输出(图形 - 打印文本)。没有那个功能它工作正常。那么我怎样才能绘制或打印输出呢?
\documentclass[10pt]{beamer}
\usepackage[T1]{fontenc}
\begin{document}
\begin{frame}{test}
<<echo=FALSE, fig.height = 4>>=
dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days")
b <- c(1,1,1,1,2,2,3,3,3,0)
c <- c(20,30,26,20,30,40,5,10,4,0)
d <- c(11,2233,12,2,22,13,23,23,100,0)
df <- data.frame(dates,b,c,d)
plot(df)
test <- function(df) {
if(sum(tail(df[2:ncol(df)], 1)) > 0) { # check only last date
return(plot(df))
} else {
print("Have a nice day!")
}
}
test(df)
@
\end{frame}
\end{document}
knitr
将输出包装在 verbatim
中,从问题中的 Rnw 产生的 TEX 可以看出:
\begin{frame}{test}
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{verbatim}
## [1] "Have a nice day!"
\end{verbatim}
\end{kframe}
\includegraphics[width=10cm,height=8cm]{figure/unnamed-chunk-2-1}
\end{knitrout}
\end{frame}
但是:
It is straightforward to use Sweave or knitr
with beamer; the only thing you need to be careful of is you have to add the fragile
option to the frames that contain verbatim code. [Source]
因此,框架需要fragile
option:
\begin{frame}[fragile]{test}
使用 fragile
确保 not to indent \end{frame}
。 (这发生在我复制问题的代码后......)
我在执行 (beamer
) 演示文稿时遇到了一些困难。一切正常,直到我包含一个函数来检查特定条件并相应地 returns 输出(图形 - 打印文本)。没有那个功能它工作正常。那么我怎样才能绘制或打印输出呢?
\documentclass[10pt]{beamer}
\usepackage[T1]{fontenc}
\begin{document}
\begin{frame}{test}
<<echo=FALSE, fig.height = 4>>=
dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days")
b <- c(1,1,1,1,2,2,3,3,3,0)
c <- c(20,30,26,20,30,40,5,10,4,0)
d <- c(11,2233,12,2,22,13,23,23,100,0)
df <- data.frame(dates,b,c,d)
plot(df)
test <- function(df) {
if(sum(tail(df[2:ncol(df)], 1)) > 0) { # check only last date
return(plot(df))
} else {
print("Have a nice day!")
}
}
test(df)
@
\end{frame}
\end{document}
knitr
将输出包装在 verbatim
中,从问题中的 Rnw 产生的 TEX 可以看出:
\begin{frame}{test}
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{verbatim}
## [1] "Have a nice day!"
\end{verbatim}
\end{kframe}
\includegraphics[width=10cm,height=8cm]{figure/unnamed-chunk-2-1}
\end{knitrout}
\end{frame}
但是:
It is straightforward to use Sweave or
knitr
with beamer; the only thing you need to be careful of is you have to add thefragile
option to the frames that contain verbatim code. [Source]
因此,框架需要fragile
option:
\begin{frame}[fragile]{test}
使用 fragile
确保 not to indent \end{frame}
。 (这发生在我复制问题的代码后......)