听起来应该是一个普遍的问题,但是我没有找到明显的窍门。
考虑下面的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/