2011-03-21 30 views
2

我想用Ruby生成一個長的Latex文檔。如果我用一個正常的定界符類型聲明,紅寶石檢測反斜槓(其中有乳膠許多)爲Unicode轉義:紅寶石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}". 

我想兩全其美,即串插,也沒有不得不逃脫每個反斜槓。這可能嗎?

回答

2

我想兩全其美,即字符串插值,而不必逃避每個反斜槓。這可能嗎?

不是真正使用直接的Ruby。問題在於,在處理字符串和反斜槓時,你會碰到Ruby預期的行爲。

通常,這些與Rails一起使用來輸出HTML,但更改方式可能會使用ERBErubis及其關聯的模板。它們是在Ruby的正常字符串處理之外處理的,但允許您嵌入變量。他們不使用熟悉的#{foo}插值,但是支持

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

Erubis是ERB的編譯版本,所以它運行速度快了很多。 ERB附帶Ruby,所以請選擇。

+0

好主意。謝謝。 – michaelmichael 2011-03-23 12:48:59

+0

我被告知我擅長於在盒子外思考。我認爲這是因爲我腦部受損。 :-) ERB/Erubis非常靈活,可用於生成電子郵件,文字處理文檔甚至XML。我認爲這是它的問題 - 它不會做只有一件事,它並不華麗,因此被忽視。 – 2011-03-23 21:16:06