r - 图* 双列 knitr/Sweave 文档中的环境

标签 r knitr tex sweave

听起来这应该是一个常见的问题,但我没有找到明显的技巧。
考虑下面的 knitr Rnw 文件,

\documentclass[twocolumn, 12pt]{article}
\usepackage{graphicx}
\begin{document}
%\SweaveOpts{dev=pdf, fig.align=center}
\begin{figure*}
<<aaa, fig.width=8, fig.height=5, fig.show=hold>>=
plot(1,1)
@
\end{figure*}
\end{document}

我希望这个宽图跨越两列,使用 {figure*} latex 环境。有钩子(Hook)吗?

编辑:将 block 包装​​在 figure* 中给出以下输出。

enter image description here

最佳答案

两个事实:

  • knitr使您可以访问所有内容,因此通常不需要 LaTeX 技巧;
  • 有一个 chunk hook你可以用它来包装你的 block 结果;

  • 一个简单的解决方案是:
    knit_hooks$set(chunk = function(x, options) {
                           sprintf('\\begin{figure*}\n%s\n\\end{figure*}', x)
    })
    

    我把剩下的工作留给你来处理 options 中的更多细节(例如,当 options$fig.keep == 'none' 时,您不应将输出包装在 figure* 中)。你可能想看看 the default chunk hook对于 LaTeX 的定义在 knitr更好地了解 chunk钩子(Hook)的作品。

    但是,在这种情况下,我倾向于在文档中自己编写 LaTeX 代码,而不是自动创建它。在你得到 figure* 之后,你可能会开始思考\caption{}\label{} ( not hard ,但我仍然想在 LaTeX 中看到它们)。

    关于r - 图* 双列 knitr/Sweave 文档中的环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979887/

    相关文章:

    r - R中的瓦哈卡分解

    svg - 如何将刻度中的文本的原始字符串从 matplotlib 导出到 svg?

    Python & SCons & Matlab : Wrong command input

    python - 如何在 Google App Engine 上使用 MathJax 库

    r - 如何在空间上将不同系列的地毯图分开

    R:根据条件选择数据框的重复行

    r - 在 R - 从 data.frame 中的所有行生成成对 data.frame

    r - 错误 R Studio Knit HTML 与 install.packages 行

    r - 在使用 R、Sweave 和 knitr 的动态报告中使用的绘图中的 Unicode 字符

    r - 如何使用knitr从 block 中插入纯图片(jpeg/png)