[英]How to process latex commands in R?
我使用knitr(),並且希望根據輸出目標(Latex或HTML)轉換內聯Latex命令,例如“ \\ label”和“ \\ ref”。
為此,我需要(以編程方式)生成有效表示正確反斜杠的R字符串:例如,“ \\ label”應變為“ \\\\ label”。 目標是用雙反斜杠替換文本片段中的所有反斜杠。
但似乎我什至無法閱讀這些字符串,更不用說處理它們了:如果我定義:
okstr <- function(str) "do something"
然后當我打電話
okstr("\label")
我直接得到一個錯誤“無法識別的轉義序列”(當然,因為\\ l是錯誤的)
所以我的問題是:有人知道不使用轉義機制就能讀取字符串(在R中)的方法嗎?
是的,我知道我可以手動執行此操作,但這就是重點:我需要以編程方式執行此操作。 有很多問題與這個問題很接近,我花了一些時間瀏覽,但是我發現沒有一個問題可以為此提供可行的解決方案。
最好的祝福。
在R代碼內部 ,您需要遵守R的語法約定。 並且由於字符串中的\\
用作轉義字符,因此它需要形成有效的轉義序列(並且\\l
在R中不是有效的轉義序列)。
根本沒有辦法解決這個問題。
但是,如果您要從其他位置讀取字符串,例如使用readLines
, scan
或任何其他文件讀取功能,則您已經獲取了正確的字符串,因此無需進行任何處理。
另外,如果您絕對想在R內的文字字符串中編寫類似LaTeX的命令,則只需對\\
使用不同的字符即可; 例如+
。 只要確保您的函數在任何地方都能正確處理它,並確保您有一種獲取字面值+
的方式。 這是一個建議:
okstr("+label{1 ++ 2}")
然后, okstr
的實現需要用\\
替換單+
,並用+
替換雙++
(在\\label{1 + 2}
產生以上結果)。 但是要考慮這需要以什么順序發生,以及您想如何處理更復雜的情況; 例如,下面的結果應該是什么: okstr("1 +++label")
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.