Ruby Unicode和字符串插值问题

时间:2011-03-21 22:22:32

标签: ruby string latex

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

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}".

我想要两全其美,即字符串插值,而不必逃避每个反斜杠。这可能吗?

1 个答案:

答案 0 :(得分:2)

  

我想要两全其美,即字符串插值,而不必逃避每个反斜杠。这可能吗?

没有真正使用直接的Ruby。问题是,在处理字符串和反斜杠时,你正在深入研究Ruby的预期行为。

通常这些与Rails一起用于输出HTML,但是改变方式可以使用ERBErubis及其相关模板。它们在Ruby的正常字符串处理之外处理,但允许您嵌入变量。他们不使用熟悉的#{foo}插值,而是支持

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

Erubis是ERB的编译版本,因此运行速度更快。 ERB附带Ruby,所以请选择。

相关问题