Мне удалось написать chunk_hook
, который сканирует выходные данные чанка и добавляет среду надпечатки, а также части \only<i>
вокруг каждого графика:
Вот хук:
library(stringi)
overlay_hook = function(x, options) {
x = knitr:::.chunk.hook.tex(x, options)
if (!is.null(options$overlay_start)) {
ind_matches = stri_locate_all_regex(x, "\\\\includegraphics")[[1]]
stri_sub_all(x, from = ind_matches[,2]+1, length = 0) =
paste0("<", seq_len(nrow(ind_matches)) + options$overlay_start - 1 ,">")
}
return(x)
}
knitr::knit_hooks$set(chunk = overlay_hook)
Чтобы использовать его, вы должны установить значение overlay_start
(например, 1, если оно должно начинаться с первого шага анимации)
<<plot, results='hide', overlay_start = 1, fig.height=3>>=
for (i in 1:3)
plot(function(x) x^i)
@