Размер PDF-файлов, сгенерированных knitr

#r #latex #knitr #sweave

#r #Латекс #knitr #sweave

Вопрос:

Я использую следующий фрагмент в Rnw файле.

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

Я связал тот же Rnw файл под R3.6.3 и R4.0.2 , соответственно. Однако PDF-файл, сгенерированный под R4.0.2 , намного больше (~ в 8 раз), чем тот, из R3.6.3 .

Мне интересно, есть ли способ (например. опция фрагмента) для уменьшения размера PDF под R4.0.2 .

Информация о сеансе двух разных версий 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 
  

Ответ №1:

Единственная ссылка на pdf в примечаниях к выпуску в последнее время была связана со шрифтом dingbats. Глядя на ссылку, в ней говорится (курсив мой):

Использование битов логично. Следует ли отображать маленькие круги с помощью шрифта Dingbats? По умолчанию используется значение TRUE, что дает меньший и лучший результат. Установка значения 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)
@