global.par = TRUE не работает в knitr для bg в RSweave doc
Мне нужно изменить фон всех изображений TIFF, созданных моим документом R Sweave, и столкнулся с той же проблемой, как описано здесь:
Уважая глобальные параметры в Knitr
но с par(bg =), который предположительно работает в соответствии с комментарием.
MWE:
\documentclass{article}
\begin{document}
<<setup, cache = FALSE>>=
opts_chunk$set(dev = c('pdf','tiff'))
opts_knit$set(global.par = TRUE)
par(bg='cyan')
@
<<>>=
plot (3,3)
@
\end{document}
(Мне не разрешено комментировать, или я бы остался на этом посту.)
Я также попытался использовать ловушку, основываясь на следующем примере: https://github.com/yihui/knitr/blob/master/inst/examples/knitr-graphics.Rnw
knit_hooks$set(par=function(before, options, envir){
if (before) par(bg='cyan')
})
но это тоже не сработало.
Единственное, что работает, это установить параметр в каждом чанке, например:
<<test, dev = 'tiff'>>=
par(bg = 'cyan')
plot(3,2)
@
(Я на самом деле хочу белый фон, но его легче протестировать цветом. Кстати, я не выбрал TIFF.)
Есть идеи о том, что происходит?
1 ответ
Представленный MWE не означает, что global.par
не работает для bg
, Причина, по которой на графике не используется указанный цвет фона, заключается в том, что global.par = TRUE
влияет только на последующие куски.
Настройки Knitr должны быть установлены в чанке перед тем, как чанки, которые зависят от этих настроек, будут активны. [ источник]
Вы не можете полагаться на глобальную опцию, применяемую в блоке, который вы установили.
Следующий пример демонстрирует, что установка цвета фона в более позднем фрагменте заставляет его использовать график:
\documentclass{article}
\begin{document}
<<setup, cache = FALSE>>=
opts_knit$set(global.par = TRUE)
@
<<>>=
par(bg='cyan')
@
<<>>=
plot (3,3)
@
\end{document}