2017-11-03 15 views
0

ハイライトを含むインラインRコードに\Sexpr{''}を使用するのが好きです。しかし、これは数式ではうまくいかないようです。チルダが問題であるようです。それは単にpdfには表示されません。ここでニットで Sexpr {}を使用した未評価のインラインコード

は、最小限の例です。

\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} 

私は何を得る次のとおりです。

enter image description here

すべてのヘルプは高く評価されます。

答えて

2

は、セットアップで定義インライン関数の結果を詳しく見:

inline('lm(response ~ treatment, data)') 

"[1] \\hlkwd{lm}\\hlstd{(response} \\hlopt{~} \\hlstd{treatment, data)}" 

は、2つの問題がここにあります:チルダは、\ 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") 
    }) 
@ 
+0

は '使用することですhighr ::: hi_latex(X)%>%str_replace( "hlopt"、" textalltt ")とtextallttの定義(ここ[https://tex.stackexchange.com/questions/70652/alltt-packages-alltt-makes-a-newline])を比較します。それは私が望んでいたものをまさにやってしまう。あなたの助けが私をそこに連れて来ました。ありがとう! – Heidi

+0

それは更新のおかげでさらにうまくいく! –

関連する問題