2013-03-04 29 views
5

在試圖爲this question尋找解決方案時,我發現自己試圖編寫有效的Rd標記。我想要的是添加一個名爲Raw Function Code的部分,並將該函數的代碼放在它下面。我已經寫一個腳本來修改Rd文件實現在這方面有限的成功,包括如何在編寫Rd文檔時保留一行中的最初空格?

\section{Raw Function Code}{\code{ 
# some piece of R script will eventally provide this part of the text 
}} 

然而,即使我手動(使用空格或製表符)適當間隔文成.Rd文件時,每條線的最初的空白區域似乎被剝離,留下不希望看到的功能。我注意到,如果我在白色空間之前提供了一個起始字符,則會保留空白區域。但是,我不想提供一個起始字符,因爲我希望人們能夠直接從生成的PDF中複製和粘貼。

我已閱讀parseRd並且我知道有三種類型的文本LaTeX- 類似於R和逐字。我試圖把我的函數代碼放在\ code和\ verb中,並且都沒有產生想要的結果。我能做些什麼來保持我最初的空白空間?

+0

當您使用R CMD Rd2pdf時,您是否嘗試過'\ begin {verbatim} ... \ end {verbatim}' – 2013-03-04 05:30:11

+0

\ begin和\ end是未知的宏。也許我必須使用Rdconv,然後在乳膠中添加我的額外代碼而不是Rd。看起來很奇怪,沒有辦法給代碼添加縮進。 – russellpierce 2013-03-04 05:50:55

回答

1

\section宏包含文本的乳液型,但只要你想編寫代碼,你可以使用\synopsis宏,即

\synopsis 
# some piece of R script will eventally provide this part of the text 
} 

有一個問題,這雖然;你不能給這個部分命名,它會自動命名爲另一個使用部分。通過使用\examples宏也可以達到同樣的效果,但是現在該部分的名稱是Examples,這可能更加可疑(更不用說您可能已經有了Examples部分)。

+0

哇,令人沮喪。 '\ examples'和'\ usage'宏正是我想要的。他們處於類似R的模式。 '\ synopsis'處於逐字模式,這是可行的,但低於標準。看起來\ Sexpr應該能夠提供我想要的,但部分? ==有時候......所以誰知道這意味着什麼。 – russellpierce 2013-03-04 21:31:15

+1

它看起來像'\ Sexpr'可以在部分工作,並與選項eval = FALSE,results = rd和echo = TRUE它會做你想要的,但我可以得到它正常工作... – 2013-03-05 04:58:32

+0

它應該工作在理論。在實踐中,我無法實現它的工作。我偶然發現了「舞臺」和「結果」選項,但還沒有找到可靠的組合。我不知道你是說你還是無法工作。如果你是,請分享.Rd代碼作爲答案。 – russellpierce 2013-03-05 06:08:05

1

不修改Rd代碼的用法或示例部分是不可能的。請參閱Hemmo的答案以獲得可用的解決方法。它以逐字模式生成文本,這是次優的,但遠勝於沒有。

(這個答案設爲社區維基的情況下的事務改變這種狀態。這樣的結果是R-2.15.1的電流)

0

如果你想要一個超級哈克的方式做到這一點,你可以用\Sexpr使零個字符寬度以及它們之間添加空格:但是

#' first line \cr 
#'\Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} indented line 

一個警告 - 你的包將建立罰款,但[R CMD檢查將拋出一個合適的。

相關問題