knitr::is_word_output() 检查当前输出类型是否为单词——就像 knitr::is_latex_output() 和 knitr::is_html_output()

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_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 1.31 (released in January 2021), you can use 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"
}