2015-05-29 8 views
5

Ich möchte Knitr Chunks Zeit und Record, wie lange es dauerte, sie mit Kommentaren in LaTeX-Ausgabe zu rendern.Hook zu Zeit Knitr Chunks

Ich habe die folgenden Haken versucht:

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))) 
    } 
}) 

Und es macht den richtigen Kommentar mit dem Timing erzeugen, aber das Problem ist, dass es in kframe gewickelt ist, die in der LaTeX-Ausgabe in hässlichen Lücken Ergebnisse:

\begin{kframe} 

% Chunk rendering time: 12.786 seconds. 

\end{kframe} 

Gibt es eine Möglichkeit, unverpackte Kommentare zu produzieren?

+0

FWIW, es wurde Cross-Posted auf https://github.com/yihui/knitr/issues/1042 –

+0

Haben Sie eine MWE, die die _ugly Lücken _? – Thell

Antwort

3

Try this:

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}') 
    } 
    }) 
}) 

Es ist ein Hack, though. Grundsätzlich entkommst du dem LaTeX-Kommentar aus der kframe-Umgebung.