r - 如何在 R 中处理乳胶命令?
问题描述
我使用 knitr() 并希望根据输出目标(Latex 或 HTML)转换内联 Latex 命令,如“\label”和“\ref”。
为此,我需要(以编程方式)生成正确表示反斜杠的有效 R 字符串:例如“\label”应变为“\\label”。目标是用双反斜杠替换文本片段中的所有反斜杠。
但似乎我什至无法读取这些字符串,更不用说处理它们了:如果我定义:
okstr <- function(str) "do something"
然后当我打电话时
okstr("\label")
我直接得到一个错误“无法识别的转义序列”(当然,因为 \l 是错误的)
所以我的问题是:有没有人知道一种在不使用转义机制的情况下读取字符串(在 R 中)的方法?
是的,我知道我可以手动完成,但这就是重点:我需要以编程方式完成。有很多问题与这个问题很接近,我花了一些时间浏览,但我发现没有一个可以为此产生可行的解决方案。
此致。
解决方案
在 R 代码中,您需要遵守 R 的语法约定。并且由于\
in strings 用作转义字符,因此它需要形成有效的转义序列(并且\l
在 R 中不是有效的转义序列)。
根本没有办法解决这个问题。
但是,如果您正在从其他地方读取字符串,例如使用readLines
或scan
任何其他文件读取函数,您已经获得了正确的字符串,并且不需要处理。
或者,如果您绝对想在 R 中的文字字符串中编写类似 LaTeX 的命令,只需为\
;使用不同的字符。例如,+
。只要确保你的函数在任何地方都能正确处理它,并且你保持一种获取文字的方式+
。这里有一个建议:
okstr("+label{1 ++ 2}")
then的实现okstr
需要将 single +
by\
和 double ++
by替换+
(使上述结果为\label{1 + 2}
)。但是请考虑这需要以什么顺序发生,以及您希望如何处理更复杂的情况;例如,以下产量应该是什么:okstr("1 +++label")
?
推荐阅读
- python - 在图像上标记特定的像素位置
- php - php 从现有数组中创建列数组
- ios - UIDatePicker iOS 14 中的错误最短时间
- javascript - React setState 回调和渲染执行顺序
- python - 点击时调整 QListView 行为?
- shell - awk - 计算每个唯一值并匹配 2 个文件之间的值
- html - 富文本编辑器中的文本在 HTML 文档中呈现时是否不继承样式?
- github - 如何获取 GitHub 操作 YAML 文件中特定目录变量中的文件计数?
- c# - 为什么 videocapture.read() 在 opencvsharp4 中不起作用?
- python - Django Model Admin:如何使用当前用户自动分配和隐藏 created_by 字段并在保存后显示?