gpt4 book ai didi

r - knitr 中带下划线的内联代码

转载 作者:行者123 更新时间:2023-12-04 03:14:57 25 4
gpt4 key购买 nike

我想在 LaTeX+knitr 文档中插入名为“test_sample()”的函数作为内联 R 代码。

仅包括 \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)}

但这仍然会导致相同的错误。

如果我手动放置一个转义字符 \前面 _在 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)}''.

我究竟做错了什么?

最佳答案

这与 knitr 没有任何关系或者 R,就是在 LaTeX 中插入下划线。最简单的方法是将其放入 \verb命令,例如

When sanitized, it's ``\verb!\Sexpr{sanitize(foo)}!''.

knitr运行,这变成了
When sanitized, it's ``\verb!test \\& \\_!''.

并显示您可能想要的内容,即
enter image description here

您可以更改 sanitize()添加 \verb 的函数如果你愿意,包装。任何产生“After”行的东西。

编辑添加:

如果你真的想保持代码高亮,你需要做类似 https://tex.stackexchange.com/questions/70652/alltt-packages-alltt-makes-a-newline 的事情创建一个宏来做一些事情 \verb有,但不是全部。这也将需要更改您的
sanitizer 功能。

关于r - knitr 中带下划线的内联代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com