将R markdown中的代码背景颜色设置为PDF

时间:2013-06-24 06:47:53

标签: r markdown knitr pandoc

当使用RStudio和RnwPDF文件转换为knitr时,代码块具有令人愉快的灰色背景色(就像他们在此处所做的那样)。当我将md文件转换为PDF时,背景颜色为白色,我似乎无法更改它。 knitr code decoration option background仅适用于LaTeX,对md无效。

如何从PDF文件中获取md中的代码块设置背景颜色?我在一些相关问题中看到编辑markdown.css文件可能是相关的,但我不确定这是否适用于此,因为mdPDF文件之间没有html文件。

使用knitr示例可以复制此效果:Rnw source: knitr-minimal.Rnwmarkdown source: 001-minimal.Rmd

要将Rnw转换为PDF,我只需点击RStudio中的“编译PDF”按钮即可。以下是我将md转换为PDF所做的工作:

# 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")))

是否有另一种方法可以将md转换为PDF,以便获得彩色代码背景?

2 个答案:

答案 0 :(得分:6)

马吕斯的回答正是我所追求的。由于评论不能拍摄图像,我在这里粘贴一些截图,以防其他人对此感到好奇。

要获取PDF生成的md中的代码背景,我调整了我的代码:

# 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

答案 1 :(得分:5)

由于您已经使用Pandoc进行了设置,因此您应该可以使用Pandoc的--highlight-style参数来实现此目的。来自docs

  

- highlight-style = STYLE指定要在突出显示的源代码中使用的着色样式。选项是pygments(默认值),kate,   单色,浓咖啡,zenburn,黑线鳕和探戈。

如果您未在markdown文件中指定每个代码块包含的语言,则可能还需要设置--indented-code-classes参数:

  

- indented-code-classes = CLASSES指定用于缩进代码块的类 - 例如,perl,numberLines或haskell。多个班级   可以用空格或逗号分隔。

从内存来看,我认为这可能需要像fancyvrb这样的乳胶软件包,所以你可能需要在它运行之前安装它。