繁体   English   中英

在knitr中使用\\ Sexpr {}进行公式计算的未评估内联代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM