r - asis 的 {Soutput} 环境,在 knit 中带有 render_sweave 钩子(Hook)

标签 r knitr sweave

我正在使用 knitr 处理 Rnw 文件并希望包含结果 "asis" 。简单来说knitr这工作正常,但启用 render_sweave 后钩子(Hook){Soutput}环境围绕"asis"结果。如Sweave()没有这种行为,这对我来说似乎不一致。这是有意/记录的行为吗?我在任何地方都找不到对此的描述(例如 https://yihui.name/knitr/demo/sweave/ )。这让我恼火的原因是我没有直接在输出上运行 LaTeX,而是首先对其进行部分解析(在 R/exams 包中)。

这个问题用最小的 foo.Rnw 来说明。文件在 knitr风格,平纹处理knitr::knit()第一:

writeLines('
<<echo=FALSE, results="asis">>=
writeLines("Hello World!")
@
', "foo.Rnw")

knitr::knit("foo.Rnw", quiet = TRUE)
writeLines(readLines("foo.tex"))
##
## Hello World!
##

但是,设置 render_sweave() 后钩子(Hook):

knitr::render_sweave()
knitr::knit("foo.Rnw", quiet = TRUE)
writeLines(readLines("foo.tex"))
## 
## \begin{Soutput}
## Hello World!
## \end{Soutput}
## 

相比之下,在 Sweave 中执行此操作样式产量:

writeLines('
<<echo=FALSE, results=tex>>=
writeLines("Hello World!")
@  
', "foo.Rnw")

utils::Sweave("foo.Rnw", quiet = TRUE)
writeLines(readLines("foo.tex"))
## 
## Hello World!

我可以采取任何措施来避免这种行为,例如修改 render_sweave手动 Hook ?

最佳答案

这是 knitr 的一个错误(非常感谢您的报告)和 I just fixed it在 Github 上。基本上我忘记在 output Hook 中考虑 results='asis' 。现在,您可以尝试 knitr 的开发版本:

remotes::install_github('yihui/knitr')

关于r - asis 的 {Soutput} 环境,在 knit 中带有 render_sweave 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57571790/

相关文章:

r - 具有 lavaan 交互作用的分类变量的效果编码?

r - 计算 AME、MEM、MER 的最简单方法?

r - 通过 R markdown 和 knit 加载并打印新页面中的每个表格

r - 使用 knitr 打印 data.table 包的 .onAttach 消息

r - 如何使用 R 以编程方式将多个表包含到 Sweave 文档中

r - 如何从 R 生成报告质量表?

javascript - R Shiny 的AngularJS工作

r - 对于每组汇总数据帧中所有变量的平均值(ddply?拆分?)

html - 使用 Firefox 或 Chrome 打开时,Rmarkdown 生成的 html 文件中未显示 Pdf 图

r - 更改 Sweave 中 ggplot2 图的大小,而不使文本/数字过大