2013-01-16 182 views
2

我運行到與knitr對HTML模板的rinline模式的問題:尖括號

inline.code : chr "<!--\\s*rinline\\s*([^>]*)\\s*-->" 

這種模式的本質意味着knitr不承認任何rinline表達式本身包含有角度的括號。 E.g:

<ul> 
<!--rinline I(paste("<li>",gene.black.list,"</li>",collapse="",sep="")) --> 
</ul> 

是不是由發動機評價,因爲我想(gene.black.list只是一個字符向量,希望我的代碼的意圖很明顯)。爲了避開這個我做了以下內容:

<!--begin.rcode echo=F 
    tagged.gene.black.list = paste("<li>",gene.black.list,"</li>",collapse="",sep="") 
    end.rcode--> 

<ul> 
<!--rinline I(tagged.gene.black.list) --> 
</ul> 

其中一期工程,但似乎與創建多餘的額外的變量和多個碼塊有點不盡人意。有沒有更聰明,整潔的方式我失蹤?

+0

是的,我需要改變正則表達式,但我不知道什麼是正確的。理想情況下,我希望匹配一旦看到' - >'就停下來,這聽起來像是一個非貪婪的匹配,但是''<! - \\ s * rinline(。*?) - >''不會解決問題(我想PCRE應該能夠解決它)。所以我也需要幫助。 –

+0

啊,好的。無論如何,謝謝你的答案(和偉大的工具) - 至少我不會錯過一些明顯的東西! – user1980716

回答

0

我認爲這個問題應該是Github上的fixed now。請從 Github的開發版本。基本上我把<!--\\s*rinline\\s*([^>]*)\\s*-->更改爲<!--\\s*rinline(.+?)-->