Я пытаюсь создать длинный латексный документ с помощью Ruby. Если я использую обычное объявление типа heredoc, Ruby обнаруживает обратную косую черту (которых в 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}".
Я хотел бы получить лучшее из обоих миров, то есть интерполяцию строк, и не нужно избегать каждого обратного слеша. Это возможно?