如何缩进rmarkdown以输出Word文档?

时间:2018-10-09 14:33:10

标签: r markdown r-markdown

我正在如下所示的循环中编写代码:

for (i in c(1:5)) {

    cat("  ", i,".","**", "Header one","**" , " "  , sep = "\n")
    cat("A)", "Subheader one"  , sep = "\n")
    cat("B)", "Subheader two"  , sep = "\n")
    } 

我希望它在呈现的文件中显示为:

  Header One  
          A) Subtitle one
          B) Subtitle two

该如何实现? 编辑 该文件旨在导出为单词.docx

1 个答案:

答案 0 :(得分:4)

一些想法:

  1. 使用块选项 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://d3js.org/d3.v5.min.js"></script>,这告诉results="asis" 将R中的原始结果写入输出文档(假设它在降价促销中有效)文件)(参考号:https://yihui.name/knitr/options/#text-results

  2. 您实际上不必强行为顶级列表增加数字,pandoc会忽略数字本身并将其转换为顺序列表(参考:https://pandoc.org/MANUAL.html#ordered-lists

  3. 如果在子列表中添加太多空格,则它们可能被视为预格式化的代码块,因此请当心。即8个太多,4个作品。

这有效:

knitr

产生此:

markdown output screenshot

具有以下基本HTML:

---
output: html_document
---

```{r chunk1, echo=FALSE, results="asis"}
for (i in 1:5) {
  cat("1. Header one",
      "    A) Subheader one",
      "    B) Subheader two",
      sep = "\n")
}
```

注意:

  • 我发现在您的示例中有这么多空字符串令人困惑,因此我“高效地”使用了它们。如果您有想要/需要的特定格式,则可以使用<ol style="list-style-type: decimal"> <li>Header one</li> </ol> <ol style="list-style-type: upper-alpha"> <li>Subheader one</li> <li>Subheader two</li> </ol> <ol style="list-style-type: decimal"> <li>Header one</li> </ol> <ol style="list-style-type: upper-alpha"> <li>Subheader one</li> <li>Subheader two</li> ... 做这样的事情:

    sprintf

    产生这个:

    more markdown output screenshot

  • --- output: html_document --- ```{r chunk1, echo=FALSE, results="asis"} for (i in 1:5) { cat(sprintf("1. Header %d", i), sprintf(" A) Subheader one - %d", i), " F) Subheader two", sep = "\n") } ``` c(1:5)相同,没有1:5要求

  • 可以多次调用c(),因为意识到您需要紧密管理一次调用的各个部分之间的cat,以及两次调用sep之间所需的一切(我希望打个电话)

修改

我也通过以下方式将其导出到Word:

cat

和子级别也正确缩进:

screenshot of word output

如果看到的内容有所不同,则可能是由于DOCX中的样式所致。这通常在参考文档ref:https://rmarkdown.rstudio.com/word_document_format#style_reference中进行控制。我正在R-3.5.1上使用--- output: word_document --- ,如果这对您有所不同,请考虑您的升级选项。