【问题标题】:knitr::is_word_output() to check if the current output type is word – just like knitr::is_latex_output() and knitr::is_html_output()knitr::is_word_output() 检查当前输出类型是否为单词——就像 knitr::is_latex_output() 和 knitr::is_html_output()
【发布时间】:2020-10-04 23:12:23
【问题描述】:

knitr::is_latex_output()knitr::is_html_output() 允许检查当前输出类型是否为LaTex or HTML respectively

Word 是否有等效的输出格式?

如果不是,最简单的解决方法是什么?

---
title: "MWE for different file formats in namespace:knitr"
output:
  pdf_document: default
  html_document: default
  word_document: default
---

```{r}
if (knitr::is_html_output()) {
  cat("HTML") 
  }
if (knitr::is_latex_output()) {
  cat("LATEX") 
  }
if (knitr::is_word_output()) {
  cat("WORD")
}
## Error: 'is_word_output' is not an exported object from 'namespace:knitr'
```

【问题讨论】:

  • 看看功能。也许你可以用 knitr:::pandoc_to()

标签: r r-markdown markdown knitr pandoc


【解决方案1】:

knitr 1.31(2021 年 1 月发布)开始,您可以通过以下任一方式使用knitr::pandoc_to()

```{r}
if (knitr::pandoc_to("docx")) {
  cat("Word") 
}
```

```{r, include=knitr::pandoc_to("docx")}
cat("Word")
```

要有条件地输出文字文本内容(而不是 R 代码),最简单的方法是使用 asis chunk(注意我们需要使用 echo 选项而不是 include):

```{asis, echo=knitr::pandoc_to("docx")}
This will only appear in Word documents.
```

```{asis, echo=knitr::pandoc_to("docx", "pdf")}
This will be appear in Word and PDF documents.
```

历史答案

在早期版本的 knitr 中,您可以使用内部 knitr 函数来获取您想要的类型:

is_word_output <- function(fmt = knitr:::pandoc_to()) {
  length(fmt) == 1 && fmt == "docx"
}

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 2018-04-20
    • 2020-10-09
    • 1970-01-01
    • 2023-02-26
    • 2023-03-31
    • 2013-06-20
    • 2023-03-20
    相关资源
    最近更新 更多