Ruby Unicode 和字符串插值问题

标签 ruby string latex

我正在尝试使用 Ruby 生成一个长的 Latex 文档。如果我使用普通的 heredoc 类型声明,Ruby 会在 Unicode 转义时检测到反斜杠(Latex 中有很多反斜杠):

doc = <<DOC
\underline{FOO}
DOC #=> invalid Unicode escape \underline{FOO}

如果我在 DOC 周围加上单引号,它会将整个内容视为字符串文字:

doc = <<'DOC'
\underline{FOO}
DOC
puts doc #=> \underline{FOO}

很好,但现在我不能使用字符串插值:

foo = "foo"
doc = <<'DOC'
string interpolation says "#{foo}".
DOC
puts doc #=> string interpolations says "#{foo}".

我想要两全其美,即字符串插值,并且不必转义每个反斜杠。这可能吗?

最佳答案

I'd like the best of both worlds, i.e. string interpolation, and not having to escape every backslash. Is this possible?

并不是真的直接使用 Ruby。问题是,在处理字符串和反斜杠时,您会一头扎进 Ruby 的预期行为中。

通常这些与 Rails 一起使用以输出 HTML,但另一种到达目的地的方法可能是使用 ERBErubis及其关联的模板。它们在 Ruby 的正常字符串处理之外进行处理,但允许您嵌入变量。他们不使用熟悉的#{foo}插值,但支持

string interpolation says "<%= foo %>".

Erubis 是 ERB 的编译版本,因此运行速度更快。 ERB 与 Ruby 一起提供,所以您可以选择。

关于Ruby Unicode 和字符串插值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384446/

相关文章:

用于每四个字符拆分的 Ruby 正则表达式不起作用

c - 如何使用 C 从字符串中获取 UTF-8 字符?

python - Python中的第三方titlecase方法

php - 将字符串转换为日期和日期时间

python - 如何在 pylatex 中添加页面背景图像?

latex - 在 Beamer 中将引用放在上标中

eclipse - Texlipse 拼写检查器不起作用的快速修复

ruby - 你如何终止 Ruby 中的 PTY.spawn 调用?

ruby - 如何指向哈希中的深层嵌套元素?

ruby-on-rails - Ruby 中的线程安全枚举器