除非我误解了你的问题,否则我认为你已经忽略了latexTranslate
,这也在Hmisc
包中(并记录在同一个帮助页面上?latex
):
'latexTranslate'将字符串中的特定项目转换为LaTeX格式,例如,为变量标签内的上标制作'a ^ 2 = a\$ ^ 2\$'.如果'greek == TRUE',希腊字母的LaTeX名称(例如,'"alpha"')将添加反斜杠.根据需要插入数学模式.'latexTranslate'假设输入文本总是匹配,例如'[)[](]()','\ $\$'周围的条件是OK.
library("Hmisc")
latexTranslate("asdf_text")
## [1] "asdf\\_text"
latexTranslate("a^2")
## [1] "a$^{2}$"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现包reportRx
提供sanitizestr()
:
清理字符串以免破坏 LaTeX
如果由knitr 返回“asis”,具有特殊字符的字符串将破坏LaTeX。每次我们使用主要的 reportRx 函数之一时都会发生这种情况。我们首先用这个函数清理我们的字符串以防止 LaTeX 损坏。
require(reportRx)
sanitizestr("asdf_text")
## [1] "asdf\\_text"
Run Code Online (Sandbox Code Playgroud)
然而,我的抱怨是它带有相当多的依赖项......
另一个解决方案是tikzDevice
提供sanitizeTexString()
,并且具有更少的强制依赖项:
替换字符串中的 LaTeX 特殊字符
当 sanitize=TRUE 时,tikzDevice 使用此函数来替换特殊的 LaTeX 字符 [..]
require(tikzDevice)
sanitizeTexString("asdf_text")
## [1] "asdf{\\_{}}text"
Run Code Online (Sandbox Code Playgroud)