听起来这应该是一个常见的问题,但我没有找到明显的技巧。
考虑下面的 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*
中给出以下输出。最佳答案
两个事实:
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/