使用knitr,HTML / markdown和PDF / Latex实现一致的图形字体大小

时间:2015-03-26 01:14:26

标签: r rstudio knitr r-markdown

我在尝试比较为knitr文档生成的图时,尝试解决字体大小的明显差异。 HTML /降价输出似乎是我认为正确的大小,而PDF / Latex输出大约2-4磅(例如,如果我期望12pt,输出更接近14或16分)。请注意,问题似乎仅限于绘图/图形文本,并且似乎不会与输出文档中的其他文本一起显示。

我演示这个的最简单方法是使用创建新*.Rmd文件时RStudio(版本0.99.329)填充的默认内容。可以通过this link进行并排比较。在我看来,HTML版本的大小合适,而PDF / Latex版本则没有。

据我所知,我的.Rprofile或其他可能影响此问题的位置没有任何自定义设置。我尝试过禁用/启用pdf crop,这似乎也没有影响到这个问题。我在同事机器上复制了这个问题(同时运行OS X和相同版本的RStudio)。

rmarkdown框架之外(即,只运行R代码),PDF和PNG输出之间似乎没有这样的差异。例如,以下代码生成非常相似的输出:

library(ggplot2)
r <- ggplot(data = diamonds, 
    aes(x = carat, y = price, color = cut, group = cut))
r + geom_smooth(size = 2) + 
    ggtitle("Plant growth with\ndifferent treatments")

ggsave(file="test.pdf")
ggsave(file="test.png")

鉴于上面的代码生成的输出图非常相似,我怀疑我看到的问题与knitr或rmarkdown / pandoc转换过程有关。

所以,我的主要问题是我是否期望在输出格式之间看到的差异程度如何?我是唯一一个?它对我的系统来说是独特的吗?

如果是预期的行为,那么人们如何协调这个问题呢?对于ggplots,我一直在使用theme_bw(8.5)缩小PDF /乳胶输出的字体。这可行,但在为同一*.Rmd文件创建多个平台/用途的输出时,会增加另一层复杂性...... rmarkdown的主要优势之一。

我的设置和系统的规格

  • OS X 10.10.2,MacBook Pro(Retina,15英寸,2013年初)
  • RStudio版本0.99.329
  • R版本3.1.2(2014-10-31) - &#34;南瓜头盔&#34;
  • rmarkdown 0.5.1
  • pandoc 1.13.1

1 个答案:

答案 0 :(得分:2)

您是否尝试过this解决方案,为不同的输出格式设置不同的输出设备?这是:

通过在Makefile中为knitr设置特定选项,从独特的Markdown文件生成pdf和html输出的解决方案:

$(PDF): $(SRC) Makefile
Rscript \
  -e "library(knitr)" \
  -e "opts_chunk[['set']](dev = 'pdf')" \
  -e "pat_gfm()" \
  -e "knit('$<', 'temp.md')"
$(PANDOC) temp.md -o $@
rm temp.md

This回答也有一些有趣的想法。

这是:

尝试将此代码块放在Rmd文档的开头。

```{r setup, cache=FALSE, include=FALSE}
library(knitr)
output <- opts_knit$get("rmarkdown.pandoc.to")
if (output=="html") opts_chunk$set(fig.width=11, fig.height=11)
if (output=="docx") opts_chunk$set(fig.width=6,  fig.height=6)
```

opts_knit $ get()返回的一个包选项是markdown.pandoc.to。根据所选的输出格式(HTML,Word或PDF),这显然设置为“html”,“docx”或“latex”。因此,您可以测试并相应地设置块选项fig.width和fig.height。