我想在LaTeX + knitr文檔中將名爲「test_sample()」的函數作爲內聯R代碼插入。在knitr中帶下劃線的內聯代碼
只包括\Sexpr{'test_sample()'}
導致Missing $
錯誤。
我發現下面直接相關的問題: Pass underscore as inline code to knitR
但已經拷貝在回答有沒有爲我工作的代碼:我得到的R警告消息:
In hilight(code, "latex", ...) :
the syntax of the source code is invalid; the fallback mode is used
,以及爲LaTeX仍然是一個Missing $
錯誤。
我試圖通過在相同的誤差(或多個)
<<>>=
test_ = function(x){gsub("([_])", '\\\\\\_', "test_x")}
@
\Sexpr{test_(sample)}
但這stilll結果採用它。
如果我手動將轉義字符\
放置在由knitr生成的tex文件中的_
前面,它可以工作,但我無法弄清楚如何自動執行此操作。
我也得到了同樣的錯誤,當我複製粘貼此問題的解決方案:R, Sweave, LaTeX - escape variables to be printed in LaTeX?
<<echo=FALSE>>=
sanitize <- function(str) {
result <- str
result <- gsub("&", "\\\\&", result, fixed = TRUE)
result <- gsub("_", "\\\\_", result, fixed = TRUE)
result
}
@
<<>>=
(foo <- "test & _")
sanitize(foo)
@
When sanitized, it's ``\Sexpr{sanitize(foo)}''.
我在做什麼錯?
你有沒有嘗試用大括號替換圓括號? \ Sexpr {'test_sample()'}另外,下劃線在它之前可能需要一個轉義字符,例如, \ _ – lawyeR
是的,我也嘗試過,但它也導致'Missing $'錯誤。如果我手動在''knitr'生成的tex文件中手動放置一個像'\'這樣的轉義字符,那麼它可以工作,但我無法弄清楚如何自動執行。我只是把它放在R代碼中,這導致了R語法錯誤,代碼無法編譯 – user3825755
我剛剛用「test \\ _ sample()」 - 兩個反斜槓 - 和它的工作 – lawyeR