如何从knitr / latex pdf输出中提取数据列表并将其加载到R?

时间:2015-09-13 11:41:06

标签: r latex extract knitr

是否有一种方便的方法来提取并加载到knitrlatex在PDF文档中创建的数据列表?

我的PDF有很多数字;他们非常需要被跟踪和组织,这些数字列表有助于做到这一点。但是在R中使用List会有很多方面的帮助。

从PDF中截取列表,将其粘贴到Excel中,并使用该工作表是一条艰巨的路线,但如果可以找到数据列表并直接加载它(或多或少),它会更快更顺畅进入R.编织过程创建了许多文件,也许列表潜伏在其中一个文件中?

这是一个小例子,只是为了创建一个借用a question on hiding captions here

的数据列表
\documentclass{article}

\usepackage{graphicx}
\setcounter{topnumber}{3}% Just for this example
\begin{document}

\listoffigures

\begin{figure}
  \addcontentsline{lof}{figure}{Example image A}%
  \centering
  \includegraphics[height=4\baselineskip]{example-image-a}

  Example image A
\end{figure}

\begin{figure}
  \addcontentsline{lof}{figure}{\protect\numberline{}Example image B}%
  \centering
  \includegraphics[height=4\baselineskip]{example-image-b}

  Example image B
\end{figure}

\begin{figure}
  \centering
  \includegraphics[height=4\baselineskip]{example-image-c}
  \caption{Example image C}
\end{figure}

\end{document}

1 个答案:

答案 0 :(得分:1)

由于不需要页码,只需从每个块中保存fig.cap即可。

这可以使用一个块挂钩来完成,该挂钩将options$fig.cap保存在全局变量中,并在编织过程结束时将此变量保存到文件中。

\documentclass{article}
\begin{document}

<<setup>>=
library(knitr)

figureCaptions <- c()

knit_hooks$set(listit = function(before, options, envir) {
  if (!before) figureCaptions <<- c(figureCaptions, options$fig.cap)
})

<<fig.cap = "First one", listit = TRUE>>=
plot(1)
@

<<fig.cap = "Second one", listit = TRUE>>=
plot(rnorm(10))
@

<<final>>=
save(figureCaptions, file = "figureCaptions.RData")
@

\end{document}

仅在评估了块(if (!before))之后保存标题应该更好,以避免eval.after出现问题。

要在之后访问字幕,请使用load("figureCaptions.RData")