在 rmarkdown 中使用文本变量

Use text variable in rmarkdown

我想将文本变量用于 html、pdf 和 knitr 的文字输出。 这是我目前在 markdown

中的代码

我想设置一个变量

var <- "just some text"

这样我就不需要写 3 次不同的文字

(请原谅错误的代码,我对此很陌生)

For HTML Only
```{asis, echo=is_html_output()}
  <p>just some text</p>
```
For PDF Only
\color{ecbblue}{\scriptsize{just some text}}

For DOCX Only
```{asis, echo=is_word_output()}
just some text

如果您想在 LaTex 中工作,您可以使用此代码:

\usepackage{xspace}
newcommand{\VarName}{text to insert\xspace}

然后只要你想

text to insert

举个例子,你可以这样做:

\color{blue}{\scriptsize{\VarName}}

会 return 文本插入 蓝色就像你想要的那样。这确实只适用于文本变量。


编辑:虽然另一个答案很好,但如果你想按照 R 的方式来做,我建议改用 pander 包,它做得非常好,甚至更简单。

install.packages("pander")
library("pander")

对于 LaTeX(PDF) 在你的 R 块中简单地做:

pander(cat("\textcolor{red}{", var ,"}"))

对于 HTML 在你的 R 块中简单地做:

pander(cat("<span style=color:red>", var, "</span>"))

您可以在不可见的代码块中定义您的变量,并将其输出到内联表达式中。这样你就不需要处理 <p> 等:

---
output:
  pdf_document: default
  word_document: default
  html_document: default
---

```{r, include=FALSE}
var <- "just some text"
h2 <- "Text2"
```

## `r h2`

`r if(knitr::is_latex_output()) paste("\textcolor{blue}{\scriptsize", var, "}") else var`

请注意,我使用的是 \textcolor 而不是 \color,因为后者不接受参数并且会使所有后续文本也变成蓝色。