Я хотел бы вставить функции с именем «test_sample()» как встроенный код R в документ LaTeX+knitr.
Простое включение \Sexpr{'test_sample()'} приводит к Missing $ ошибкам.
Я нашел следующие непосредственно связанные вопросы: код для вязанияR
Но уже копирование кода в ответе у меня не работает: я получаю предупреждающее сообщение 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)} 
но это все еще приводит к той же ошибке (ам).
Если я вручную поставлю escape-символ \ перед th _ в tex-файле, созданном Knitr, это сработает, но я не могу понять, как это сделать автоматически.
Я также получаю ту же ошибку, когда копирую и вставляю решение из этого вопроса: R, Sweave, LaTeX - escape-переменные для печати в 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)}''.
Что я делаю неправильно?

 
                                                                     
                                                                     
                                                                    
In hilight(code, "latex", ...) : the syntax of the source code is invalid; the fallback mode is used, а не к желаемому результату, а к ```\verb!test \textbackslash{}\textbackslash{}& \textbackslash{}\textbackslash{}_!'' ` вместо этого в LaTeX. Просто для ясности: результат, который я хочу получить в файле tex после обработки с помощью yarn\hlkwd{test\_sample}()31.01.2017hilight(); из какого это пакета? 31.01.2017'\\\\\_'выдает ошибку, потому что это недопустимый синтаксис. Вам нужно четное количество обратных косых черт. 31.01.2017hilight()— это функция из пакета highlight. У меня не загружен ни один пакет, кромеknitr. Если я найду время, я попытаюсь воспроизвести ошибку в полном файле Rnw, который я могу разместить здесь. На данный момент я использовал обходной путь, вручную определив команду LaTeX\newcommand{\test}{\hlkwd{test\_sample}()}01.02.2017\Sexpr, гдеknitrне вызываетhilight. 01.02.2017knit_hooks$set(inline = function(x) { if (is.numeric(x)) return(knitr:::format_sci(x, 'latex')) highr:::hi_latex(x) })в преамбуле, чтобы получить такую же подсветку синтаксиса и для встроенного кода. 01.02.2017