如何在R中处理latex命令?

如何在R中处理latex命令?,r,escaping,latex,backslash,R,Escaping,Latex,Backslash,我使用knitr,希望根据输出目标Latex或HTML转换内嵌Latex命令,如\label和\ref 为此,我需要以编程方式生成正确表示反斜杠的有效R字符串:例如\label应该变成\\label。目标是用双反斜杠替换文本片段中的所有反斜杠 但似乎我甚至无法读取这些字符串,更不用说处理它们了:如果我定义: okstr <- function(str) "do something" 我直接得到一个无法识别的转义序列错误 当然,as\l是错误的 所以我的问题是:有人知道不使用转义机制读取R

我使用knitr,希望根据输出目标Latex或HTML转换内嵌Latex命令,如\label和\ref

为此,我需要以编程方式生成正确表示反斜杠的有效R字符串:例如\label应该变成\\label。目标是用双反斜杠替换文本片段中的所有反斜杠

但似乎我甚至无法读取这些字符串,更不用说处理它们了:如果我定义:

okstr <- function(str) "do something"
我直接得到一个无法识别的转义序列错误 当然,as\l是错误的

所以我的问题是:有人知道不使用转义机制读取R中字符串的方法吗

是的,我知道我可以手动完成,但关键是:我需要以编程方式完成。 有许多问题与此相近,我花了一些时间浏览了一下,但我没有找到一个可行的解决方案

致意。

在R代码中,您需要遵守R的语法约定。由于\in字符串用作转义字符,它需要形成有效的转义序列,\l在R中不是有效的转义序列

根本没有办法解决这个问题

但是,如果您正在从其他地方读取字符串,例如使用readLines、scan或任何其他文件读取函数,则您已经获得了正确的字符串,无需进行任何处理

或者,如果您绝对希望在R中以文字字符串编写类似LaTeX的命令,只需使用另一个字符作为\;例如,+。只要确保你的函数在任何地方都能正确地处理它,并且你保持一种获得literal+返回的方式。这里有一个建议:

okstr("+label{1 ++ 2}")

然后,okstr的实现需要将single+替换为\,将double++替换为+使上述结果成为\label{1+2}。但是考虑一下这需要什么样的顺序,以及你想如何处理更复杂的情况;例如,下面的结果应该是什么:okstr1+++标签?

相关:谢谢你,康拉德。
okstr("+label{1 ++ 2}")