2013-06-24 82 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