图*环境在twocolumn knitr/Sweave文件中

bap*_*ste 5 r tex sweave knitr

听起来这应该是一个常见的问题,但我没有找到明显的伎俩.考虑下面的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}
Run Code Online (Sandbox Code Playgroud)

我希望这个宽大的数字跨越两列,使用{figure*}LaTeX环境.那有什么钩子吗?

编辑:包装块figure*提供以下输出.

在此输入图像描述

Yih*_*Xie 7

两个事实:

  1. knitr 让一切都可以访问,所以乳头技巧通常是不必要的;
  2. 有一个chunk钩子,你可以用它来包装你的块结果;

一个简单的解决方案是:

knit_hooks$set(chunk = function(x, options) {
                       sprintf('\\begin{figure*}\n%s\n\\end{figure*}', x)
})
Run Code Online (Sandbox Code Playgroud)

我把剩下的工作留给你来处理更多的细节options(例如,当options$fig.keep == 'none'你不应该输出输出时figure*).您可能想要了解如何定义LaTeX 的默认chunk挂钩knitr以更好地了解chunk挂钩的工作原理.

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