knitr 中未评估的块会生成换行符
Unevaluated chunk in knitr generates a line break
以下 Rnw
文件生成如下所示的输出。有没有一种干净的方法来防止第 2 节中的换行符?
当然,这只是一个最小的可重现示例;我不想删除未评估的块,它在我的实际问题中是否以编程方式评估。
\documentclass{article}
<<setup, include=FALSE>>=
knitr::opts_chunk$set(echo = FALSE)
@
\begin{document}
\section{eval TRUE}
<<results='asis'>>=
cat("Hello.")
@
<<eval=TRUE, results='asis'>>=
cat("How are you?")
@
What's your name?
\section{eval FALSE}
<<results='asis'>>=
cat("Hello.")
@
<<eval=FALSE, results='asis'>>=
cat("How are you?")
@
What's your name?
\end{document}
编辑
目前我有一个解决方案:
<<results='asis'>>=
cat("Hello.")
if(FALSE) cat("How are you?")
@
What's your name?
但我想知道是否有更简单的方法,不需要像这样将块分组为一个。
有趣的是,不管所有选项如何,knitr
显然至少为每个块打印一个换行符(即使 eval = FALSE, echo = FALSE, results = "hide"
)。因此,以下只是一种解决方法,但可能比问题中的解决方法更简洁:
在块中使用 if
(代替块选项 eval
),但如果不应评估块,则打印 %
。这将使 TEX 忽略该行。
\documentclass{article}
<<setup, include=FALSE>>=
knitr::opts_chunk$set(echo = FALSE)
showIt <- FALSE
@
\begin{document}
\section{eval FALSE}
<<results='asis'>>=
cat("Hello.")
@
<<results='asis'>>=
if(showIt) {
cat("How are you?")
} else {
cat("%")
}
@
What's your name?
\end{document}
以下 Rnw
文件生成如下所示的输出。有没有一种干净的方法来防止第 2 节中的换行符?
当然,这只是一个最小的可重现示例;我不想删除未评估的块,它在我的实际问题中是否以编程方式评估。
\documentclass{article}
<<setup, include=FALSE>>=
knitr::opts_chunk$set(echo = FALSE)
@
\begin{document}
\section{eval TRUE}
<<results='asis'>>=
cat("Hello.")
@
<<eval=TRUE, results='asis'>>=
cat("How are you?")
@
What's your name?
\section{eval FALSE}
<<results='asis'>>=
cat("Hello.")
@
<<eval=FALSE, results='asis'>>=
cat("How are you?")
@
What's your name?
\end{document}
编辑
目前我有一个解决方案:
<<results='asis'>>=
cat("Hello.")
if(FALSE) cat("How are you?")
@
What's your name?
但我想知道是否有更简单的方法,不需要像这样将块分组为一个。
有趣的是,不管所有选项如何,knitr
显然至少为每个块打印一个换行符(即使 eval = FALSE, echo = FALSE, results = "hide"
)。因此,以下只是一种解决方法,但可能比问题中的解决方法更简洁:
在块中使用 if
(代替块选项 eval
),但如果不应评估块,则打印 %
。这将使 TEX 忽略该行。
\documentclass{article}
<<setup, include=FALSE>>=
knitr::opts_chunk$set(echo = FALSE)
showIt <- FALSE
@
\begin{document}
\section{eval FALSE}
<<results='asis'>>=
cat("Hello.")
@
<<results='asis'>>=
if(showIt) {
cat("How are you?")
} else {
cat("%")
}
@
What's your name?
\end{document}