钩住时间编织块

god*_*god 7 latex r knitr

我想定时编织块并记录使用LaTeX输出中的注释渲染它们需要多长时间.

我试过以下钩子:

 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))) 
     }
 })
Run Code Online (Sandbox Code Playgroud)

并且它确实产生了正确的时间注释,但问题是它被包装在kframe中,这导致LaTeX输出中的丑陋空白:

\begin{kframe}

% Chunk rendering time: 12.786 seconds.

\end{kframe}
Run Code Online (Sandbox Code Playgroud)

有没有办法产生解开的评论?

Yih*_*Xie 6

尝试这个:

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}')
    }
  })
})
Run Code Online (Sandbox Code Playgroud)

不过,这是一个黑客。基本上你从kframe环境中逃脱 LaTeX 评论。