Rmarkdown 的 render() + knitr 的 spin():如何混合代码块和嵌套项
Rmarkdown's render() + knitr's spin(): How to mix code blocks and nested items
我正在使用 rmarkdown
的函数 render()
和 knitr
的函数从 R
脚本生成 html- 和 pdf 笔记本spin()
。有时我使用嵌套列表并将它们与代码块混合。这是一个使用 rmarkdown
和 knitr
块选项的示例。
#' (1) This is normal text.
#' (a) This is normal text but indented.
#+ echo = TRUE, eval = TRUE
print("This is code")
#' (b) This is supposed to be normal text with the same
#' indentation as (a). However, it will be formatted as code.
#' By this I mean that e.g. in a pdf-notebook it will be
#' correctly indented but the font will be the same font as
#' the code.
但是,列表项 (a) 之后代码之后的所有内容也将被标记为代码(例如 (b))。但我想要实现的是将 (b) 标记为普通文本并使用与 (a) 相同的缩进。可以这样做吗?
你必须使用文档中所谓的The four-space rule
:
http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html#the-four-space-rule
所以下面的代码有效
(1) This is normal text.
Continued.
(a) This is normal text but indented.
```{r, echo = TRUE, eval = TRUE}
summary(cars)
```
(a) This is normal text with the same indentation as (a).
注:有
- (1) 前面的 2 个空格
- 每个 (a) 前面有 4 个空格
- 代码块前面的 8 个空格
导致:
我 运行 使用 rmarkdown::render("test.Rmd")
这是我的会话信息
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] digest_0.6.8 evaluate_0.5.5 formatR_1.0 htmltools_0.2.6 knitr_1.9 rmarkdown_0.5.1
[7] stringr_0.6.2 tools_3.1.1 XML_3.98-1.1 yaml_2.1.13
有一个内部块选项 indent
可以向块输出添加缩进。在您的情况下,您可以指定四个空格,例如
#+ echo = TRUE, eval = TRUE, indent = ' '
我正在使用 rmarkdown
的函数 render()
和 knitr
的函数从 R
脚本生成 html- 和 pdf 笔记本spin()
。有时我使用嵌套列表并将它们与代码块混合。这是一个使用 rmarkdown
和 knitr
块选项的示例。
#' (1) This is normal text.
#' (a) This is normal text but indented.
#+ echo = TRUE, eval = TRUE
print("This is code")
#' (b) This is supposed to be normal text with the same
#' indentation as (a). However, it will be formatted as code.
#' By this I mean that e.g. in a pdf-notebook it will be
#' correctly indented but the font will be the same font as
#' the code.
但是,列表项 (a) 之后代码之后的所有内容也将被标记为代码(例如 (b))。但我想要实现的是将 (b) 标记为普通文本并使用与 (a) 相同的缩进。可以这样做吗?
你必须使用文档中所谓的The four-space rule
:
http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html#the-four-space-rule
所以下面的代码有效
(1) This is normal text.
Continued.
(a) This is normal text but indented.
```{r, echo = TRUE, eval = TRUE}
summary(cars)
```
(a) This is normal text with the same indentation as (a).
注:有
- (1) 前面的 2 个空格
- 每个 (a) 前面有 4 个空格
- 代码块前面的 8 个空格
导致:
我 运行 使用 rmarkdown::render("test.Rmd")
这是我的会话信息
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] digest_0.6.8 evaluate_0.5.5 formatR_1.0 htmltools_0.2.6 knitr_1.9 rmarkdown_0.5.1
[7] stringr_0.6.2 tools_3.1.1 XML_3.98-1.1 yaml_2.1.13
有一个内部块选项 indent
可以向块输出添加缩进。在您的情况下,您可以指定四个空格,例如
#+ echo = TRUE, eval = TRUE, indent = ' '