从R到LaTeX的格式化学名(使用Swave或knitr)

从R到LaTeX的格式化学名(使用Swave或knitr),r,latex,knitr,taxonomy,sweave,R,Latex,Knitr,Taxonomy,Sweave,我正在包中实现一个函数print\u name。 例如,我可以为标记设置名称格式: library(taxlist) data(Easplist) print_name(Easplist, 206, style="markdown") 控制台中的输出为: [1] "*Cyperus papyrus* L." 例如,我可以使用此命令通过`ri(print_name(Easplist,206,style=“markdown”)`在标记文档的内容中提到一个物种,其中学名显示为斜体,而作者名不显示

我正在包中实现一个函数
print\u name
。 例如,我可以为标记设置名称格式:

library(taxlist)
data(Easplist)
print_name(Easplist, 206, style="markdown")
控制台中的输出为:

[1] "*Cyperus papyrus* L."
例如,我可以使用此命令通过
`ri(print_name(Easplist,206,style=“markdown”)`
在标记文档的内容中提到一个物种,其中学名显示为斜体,而作者名不显示

我想实现一个选项(即
style=“latex”
)来检索为latex格式化的字符串,它可以通过
\Sexpr{print\u name(Easplist,206,style=“latex”)}
之类的方式插入(这个示例只是一个假设)。 然后输出应该是
\textit{Cyperus papyrus}L.
,但是我的所有尝试都失败了,因为反斜杠是R字符串中的一个scape

有没有办法妥善完成这项任务

注意:该函数目前未在CRAN版本的软件包中实现,因此,要复制该示例,请使用GitHub的最新版本:

devtools::install_github("kamapu/taxlist")

我想你正在做的是:

<<example, echo=FALSE>>=
library(taxlist)
data(Easplist)
\Sexpr{print_name(Easplist, 206, style="markdown")}
@
这将输出您想要的内容

编辑:

如果您试图将“latex”作为输出的样式选项合并,那么当它在latex之外输出时,应该是这样的:

library(taxlist)
data(Easplist)
print_name(Easplist, 206, style="latex")
[1] "\\textit{Cyperus papyrus} L."
“\”将逃逸。我没有将其合并到您的函数中,但下面是一个示例:

<<>>=
example_text <- "Cyperus papyrus L."
example_text <- strsplit(example_text, split = " ")
test1 <- paste0("\\textit{", example_text[[1]][1], " ", example_text[[1]][2], "}", 
            " ", example_text[[1]][3])
@

\Sexpr{test1} is a paper reed. 
=

我为我的困惑道歉,请看我上面编辑的答案。哇!这真的很有效!然而,它仅与
knitr
一起工作,而不与
swave
一起工作。
<<>>=
example_text <- "Cyperus papyrus L."
example_text <- strsplit(example_text, split = " ")
test1 <- paste0("\\textit{", example_text[[1]][1], " ", example_text[[1]][2], "}", 
            " ", example_text[[1]][3])
@

\Sexpr{test1} is a paper reed.