【问题标题】:Size of PDF files generated by knitrknitr 生成的 PDF 文件的大小
【发布时间】:2020-12-15 21:16:02
【问题描述】:

我在 Rnw 文件中使用以下块。

<<scatter,dev='pdf',include=TRUE>>=
a <- rnorm(1e4)
b <- rnorm(1e4)
plot(a,b)
@

我分别在R3.6.3R4.0.2 下编织了相同的Rnw 文件。但是,R4.0.2 下生成的 PDF 图形比 R3.6.3 下生成的 PDF 图形大得多(约 8 倍)。

我想知道是否有办法(例如块选项)减少R4.0.2 下的 PDF 大小。

两个不同版本的R的会话信息如下所示。

R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.29

loaded via a namespace (and not attached):
[1] compiler_4.0.2 magrittr_1.5   tools_4.0.2    stringi_1.4.6  highr_0.8      stringr_1.4.0 
[7] xfun_0.16      evaluate_0.14
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 Normal:  Inversion 
 Sample:  Rounding 
 
locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.28

loaded via a namespace (and not attached):
[1] compiler_3.6.3 magrittr_1.5   tools_3.6.3    stringi_1.4.6  highr_0.8      stringr_1.4.0 
[7] xfun_0.12      evaluate_0.14 

【问题讨论】:

    标签: r latex knitr sweave


    【解决方案1】:

    最近release notes 中对 pdf 的唯一引用与 dingbats 字体有关。查看参考资料,它说(强调我的):

    useDingbats 合乎逻辑。小圆圈是否应该通过 Dingbats字体?默认为 TRUE,这会产生 smaller 和更好 输出。将此设置为 FALSE 可以解决字体显示问题 损坏的 PDF 查看器:虽然这种字体是 14 种保证的字体之一 可在所有 PDF 查看器中使用,但并不总是保证 很荣幸。

    您可以通过以下方式更改默认值

    pdf.options(useDingbats = TRUE)
    

    在 Rnw 文档的第一个代码块中。此更改对您的文档是全局的。如果您只想为特定的代码块更改它,您可以使用块选项dev.args,例如,

    <<scatter, dev='pdf', dev.args=list(useDingbats = TRUE)>>=
    a <- rnorm(1e4)
    b <- rnorm(1e4)
    plot(a,b)
    @
    

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多