我可以标记knitr代码块和输出并为它们添加标题吗?

时间:2013-01-15 20:59:15

标签: r latex label caption knitr

是否可以添加除图形和表格之外的knitr输出的标签和参考。 我知道我可以分别使用xtable print.xtable为表格设置字幕并按照我的意愿放置它们。数字也可以做类似的事情。但是有可能标记和标题生成的一些输出 只是通过回应一些R代码?所以我可以在我的文字中写下这样的内容:code chunk \ref{mychunk} shows how to do XYZ

3 个答案:

答案 0 :(得分:9)

是的,这是可能的。请参阅example 074,了解如何为R块定义环境,以便您可以使用交叉引用。要完全理解它,您可能需要阅读chunk hooks的文档。

答案 1 :(得分:3)

我希望在标题后面的标题中添加其他文本,因此在序言中使用此文本来使用amsthm自定义我的代码块标题:

\usepackage{amsthm}
\newtheoremstyle{rexample}
    {3pt}%Space above
    {3pt}% Space below
    {}%Body font
    {}%Indent amount
    {\bfseries}%Theorem head font
    {:}%Punctuation after theorem head
    {.5em}%Space after theorem head
    {}%Theorem head spec (can be left empty, meaning `normal')
\theoremstyle{rexample}
\newtheorem{rexample}{Code chunk}

根据这个例子,我使用knit_hooks和选项$ comment:

knit_hooks$set(rexample = function(before, options, envir) {
  if (before) sprintf('\\begin{rexample}%s\\label{%s}\\hfill{}', options$comment, options$label) else '\\end{rexample}'
})

在块定义中,注释被传递以形成标签:

<<setup, echo=TRUE, tidy=FALSE, eval=FALSE, rexample=TRUE, comment='Setups for some management functions and database connections'>>=

这给了我一个不错的标题:

http://gis.washington.edu/phurvitz/knitr/rexample_theorem_caption.png

答案 2 :(得分:2)

不确定这是否正是您所寻找的,但请尝试给这个网站一个镜头:
http://yihui.name/knitr/demo/reference/

不要因为第一句话谈论Sweave大块而烦恼,它完全专注于knitr chunk。

干杯......