听起来应该是一个普遍的问题,但是我没有找到明显的窍门。
考虑下面的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环境将此宽幅图跨越两列。有钩吗?

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

最佳答案

两个事实:

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

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

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

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

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

    10-12 22:33