簡體   English   中英

如何在R中處理乳膠命令?

[英]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中不是有效的轉義序列)。

根本沒有辦法解決這個問題。

但是,如果您要從其他位置讀取字符串,例如使用readLinesscan或任何其他文件讀取功能,則您已經獲取了正確的字符串,因此無需進行任何處理。

另外,如果您絕對想在R內的文字字符串中編寫類似LaTeX的命令,則只需對\\使用不同的字符即可; 例如+ 只要確保您的函數在任何地方都能正確處理它,並確保您有一種獲取字面值+的方式。 這是一個建議:

okstr("+label{1 ++ 2}")

然后, okstr的實現需要用\\替換單+ ,並用+替換雙++ (在\\label{1 + 2}產生以上結果)。 但是要考慮這需要以什么順序發生,以及您想如何處理更復雜的情況; 例如,下面的結果應該是什么: okstr("1 +++label")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM