2015-05-29 14 views
5

Chciałbym czas podzielić kawałków i nagrać, ile czasu zajęło, aby je za pomocą komentarzy w LaTeX wyjścia.Hook to time knitr chunks

Próbowałem następujące Hak:

now = Sys.time() 
knit_hooks$set(timeit = function(before) { 
    if (before) { now <<- Sys.time() } 
    else { 
     paste("%", sprintf("Chunk rendering time: %s seconds.\n", round(Sys.time() - now, digits = 3))) 
    } 
}) 

I robi produkować prawidłowy komentarz z czasu, ale problemem jest to, że zawinięte w kframe co powoduje brzydkie luk w wyjściu LaTeX:

\begin{kframe} 

% Chunk rendering time: 12.786 seconds. 

\end{kframe} 

Czy istnieje sposób na tworzenie nieopakowanych komentarzy?

+0

FWIW, został przekierowany na https://github.com/yihui/knitr/issues/1042 –

+0

Czy masz MWE wskazujące _ugly gap_? – Thell

Odpowiedz

3

Spróbuj tego:

local({ 
    now = Sys.time() 
    knit_hooks$set(timeit = function(before) { 
    if (before) { 
     now <<- Sys.time() 
    } else { 
     x = round(Sys.time() - now, digits = 3) 
     x = sprintf("%% Chunk rendering time: %s seconds.", x) 
     paste('\\end{kframe}\n', x, '\n\\begin{kframe}') 
    } 
    }) 
}) 

Jest to hack, choć. Zasadniczo unikasz komentarza LaTeX ze środowiska kframe.