在 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
,因为后者不接受参数并且会使所有后续文本也变成蓝色。
我想将文本变量用于 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
,因为后者不接受参数并且会使所有后续文本也变成蓝色。