[英]Unevaluated inline code with formula using \Sexpr{} in knitr
我喜欢将\\Sexpr{''}
用于内联R代码,包括突出显示。 但是,这似乎不适用于公式。 似乎波浪号是个问题。 只是它没有显示在pdf中。
这是一个最小的示例:
\documentclass{article}
\begin{document}
<<setup, echo=FALSE>>=
library("knitr")
knit_hooks$set(inline = function(x) {
if (is.numeric(x)) return(knitr:::format_sci(x, 'latex'))
highr:::hi_latex(x)
})
@
\Sexpr{'plot(x, y)'} works.
\Sexpr{'lm(response ~ treatment, data)'} does not show the tilde.
\end{document}
我得到的是以下内容:
任何帮助表示赞赏。
仔细查看您在设置中定义的内联函数的结果:
inline('lm(response ~ treatment, data)')
"[1] \\hlkwd{lm}\\hlstd{(response} \\hlopt{~} \\hlstd{treatment, data)}"
这里有两个问题:代字号用\\ hlopt {}而不是\\ hlstd {}标记,并且未正确标记为LaTeX的符号。 为此,您需要将其插入为\\textasciitilde
。
我不知道是否有一种方法可以修改highr::hi_latex
来正确解释所有类似代字号的数学符号。 短的,你可以修改,LaTeX输出事后如下:
<<setup, echo=FALSE, message=FALSE>>=
library(knitr)
library(dplyr)
library(stringr)
knit_hooks$set(inline = function(x) {
if (is.numeric(x)) return(knitr:::format_sci(x, 'latex'))
highr:::hi_latex(x) %>%
str_replace("~", "\\\\textasciitilde") %>%
str_replace("hlopt", "hlstd")
})
@
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.