gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:12:00 30 4
gpt4 key购买 nike

听起来这应该是一个常见的问题,但我没有找到明显的技巧。
考虑下面的 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/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com