钩住时间编织块

时间:2015-05-29 12:46:13

标签: r latex 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))) 
     }
 })

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

\begin{kframe}

% Chunk rendering time: 12.786 seconds.

\end{kframe}

有没有办法制作无包装的评论?

1 个答案:

答案 0 :(得分:4)

试试这个:

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}')
    }
  })
})
但是,这是一个黑客攻击。基本上你从kframe环境中逃避了LaTeX评论。

相关问题