【问题标题】:Hook to time knitr chunks钩到时间编织块
【发布时间】:2015-05-29 12:46:13
【问题描述】:

我想计时 knitr 块并记录在 LaTeX 输出中使用 cmets 渲染它们所花费的时间。

我尝试了以下钩子:

 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}

有没有办法产生展开的 cmets?

【问题讨论】:

标签: r latex knitr


【解决方案1】:

试试这个:

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

不过,这是一个 hack。基本上,您从 kframe 环境中转义 LaTeX 评论。

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多