Я хотел бы вставить функции с именем «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