我想将文本变量用于knitr的html,pdf和word输出。 这是我目前在markdown中使用的代码
我要设置一个变量
var <-“只是一些文本”
这样我就不需要在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
答案 0 :(得分:2)
如果您想在 LaTex 中工作,可以使用以下代码:
\usepackage{xspace}
newcommand{\VarName}{text to insert\xspace}
然后随时随地
要插入的文字
例如,您可以执行以下操作:
\color{blue}{\scriptsize{\VarName}}
将按您的意愿以蓝色返回要插入的文本。实际上,这仅适用于文本变量。
编辑:当另一个答案很好时,如果您想用R的方式做,我建议改用pander
软件包,它确实做得很好,甚至更简单。
install.packages("pander")
library("pander")
对于R块中的 LaTeX(PDF),只需:
pander(cat("\\textcolor{red}{", var ,"}"))
对于R块中的 HTML ,只需执行以下操作:
pander(cat("<span style=color:red>", var, "</span>"))
答案 1 :(得分:2)
您可以在不可见的代码块中定义变量,然后以内联表达式输出。这样,您就无需处理<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
,因为后者不带参数,并且会使后面的所有文本也变成蓝色。