2013-06-24 84 views
4

Rnw文件與RStudio和knitr一起轉換爲PDF時,代碼塊具有令人愉快的灰色背景色(就像它們在SO中一樣)。當我將md文件轉換爲PDF時,背景顏色爲白色,我似乎無法改變它。針織者code decoration optionbackground僅適用於乳膠,並且在md中沒有效果。將R markdown中的代碼背景色設置爲PDF

如何在我的md文件中獲得PDF中的代碼塊的背景顏色?我在一些相關的問題中看到,編輯markdown.css文件可能是相關的,但我不確定這是否適用於此,因爲mdPDF文件之間沒有html文件。

這個效果可以使用knitr的例子複製:Rnw source: knitr-minimal.Rnwmarkdown source: 001-minimal.Rmd

要將Rnw轉換爲PDF我只需單擊RStudio中的「編譯PDF」按鈕即可。這裏就是我做的轉換mdPDF

# Load packages 
require(knitr) 
require(markdown) 

setwd("C:/Users/.../Desktop/") 

# Process .md and .pdf files 
filen <- "myfile" 
knit(paste0(filen,".md")) 
system(paste0("pandoc -s ", paste0(filen,"-out.md"), " -t latex -o ", paste0(filen,".pdf"))) 

有另一種方式來轉換mdPDF這樣我就可以得到一個彩色代碼背景?

+1

的'系統()'命令,這就是'pandoc()'函數的用途:http://yihui.name/knitr/demo/pandoc/ –

+0

感謝您的登記!我們可以有一個選項來爲您的pandoc函數提供panodoc參數嗎?而不是在md文件中有配置文件或嵌入配置文件(或是否會影響功能的目的......) – Ben

+0

聽起來像是個好主意。我可能需要考慮一下。在這種情況下,我猜'system()'和'pandoc()'需要大致相同的打字工作,所以請隨意使用'system()':) –

回答

5

由於您已經與Pandoc建立了關係,您應該可以使用Pandoc的--highlight-style參數來實現此目的。來自docs

--highlight-style = STYLE指定在高亮顯示的源代碼中使用的着色風格。選項是pyils(默認),kate, 單色,濃咖啡,禪宗,黑線鱈和探戈。

如果你沒有指定每個代碼塊中包含的降價文件中的語言,你可能還需要設置--indented-code-classes說法:

--indented代碼類= CLASSES指定用於縮進代碼塊的類 - 例如,perl,numberLines或haskell。多個類 可以用空格或逗號分隔。

從內存中,我認爲這可能需要一個乳膠包像fancyvrb,所以你可能需要安裝,它的作品前。

+0

是的,這是完成這項工作,謝謝。我發現--indent-code-classes沒有必要,也沒有fancyvrb(除非我以前安裝它並忘記它)。 – Ben

6

馬呂斯的回答正是我所追求的。由於評論無法拍攝圖像,因此我在此粘貼一些截圖以防其他人對此感到好奇。

要獲得代碼的背景從md產生的PDF,我調整我的代碼如下所示:

# Load packages 
require(knitr) 
require(markdown) 

setwd("C:/Users/.../Desktop/") 

# Create .md and .pdf files 
filen <- "test" 
knit(paste0(filen,".md")) 
system(paste0("pandoc -s ", paste0(filen,"-out.md"), " -t latex -o ", paste0(filen,".pdf"), " --highlight-style=tango -S")) 

在測試中七pandoc突出顯示選項,我發現只有這三個都給出代碼背景。以下是三種選項生成的PDF格式的截圖,供將來參考。

這是探戈,最符合我與淺灰色後我的一個:

enter image description here 這是zenburn: enter image description here 這是咖啡 enter image description here