从 R 到 LaTeX 的格式化科学名称(使用 Sweave 或 knitr)
Formatted scientific names from R to LaTeX (using Sweave or knitr)
我正在包 taxlist 中实现一个函数 print_name
。
例如,我可以为 markdown 格式化名称:
library(taxlist)
data(Easplist)
print_name(Easplist, 206, style="markdown")
此时控制台输出为:
[1] "*Cyperus papyrus* L."
例如,我可以使用此命令在 markdown 文档的内容中提及一个物种 `r I(print_name(Easplist, 206, style="markdown"))`
,其中学名显示为斜体,作者姓名不显示。
我想实现一个选项(即 style="latex"
)检索为 LaTeX 格式化的字符串,可以通过 \Sexpr{print_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")}
@
只需将 \Sexpr{}
移动到块外。
<<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.
输出在呈现的 pdf 中看起来像这样。
我正在包 taxlist 中实现一个函数 print_name
。
例如,我可以为 markdown 格式化名称:
library(taxlist)
data(Easplist)
print_name(Easplist, 206, style="markdown")
此时控制台输出为:
[1] "*Cyperus papyrus* L."
例如,我可以使用此命令在 markdown 文档的内容中提及一个物种 `r I(print_name(Easplist, 206, style="markdown"))`
,其中学名显示为斜体,作者姓名不显示。
我想实现一个选项(即 style="latex"
)检索为 LaTeX 格式化的字符串,可以通过 \Sexpr{print_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")}
@
只需将 \Sexpr{}
移动到块外。
<<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.
输出在呈现的 pdf 中看起来像这样。