使用 knitr 的 subcaption 包

使用 knitr 的 subcaption 包

如何使用subcaption包中的程序knitr,而不是过时的subfig\subfloat

或者,也许用fig.env = 'subfigure'? 指定其他选项。它需要类似这样的内容:

\begin{subfigure}[b]{0.3\textwidth}
  <code>
\end{subfigure}

但仅使用fig.env会产生,缺少{0.3\textwidth}

\begin{subfigure}[!htb]
  \includegraphics[width=\maxwidth]{}
  \caption[]{}
  \label{}
\end{subfigure}

答案1

看看knitr 选项文档并跟随它到示例代码,似乎您只需重新定义 -command \subfloat,如下所示:\newcommand{\subfloat}[2][need a sub-caption]{\subcaptionbox{#1}{#2}}

以下是一个例子:

\documentclass{article}
\usepackage{subcaption}
\newcommand{\subfloat}[2][need a sub-caption]{\subcaptionbox{#1}{#2}}

\begin{document}
    <<someChunk,cache=T,echo=F,tidy=F, fig.subcap=c("Subfig1", "Subfig2") , fig.cap="TITLE", out.width='.49\\linewidth'>>=
      x=seq(1:10)
      plot(x,x)
      plot(x,x^2)
    @
\end{document}

尽管可能还有其他方法可以实际使用环境而不是命令来显示图形,但我还没有找到。


另请注意,fig.env仅设置“父”环境,例如\begin{figure},因此如果您想使用fig.env,则必须在单独的环境中执行此操作,就像是这:

\begin{figure}
  <<someChunk,cache=T,echo=F,tidy=F, fig.subcap=c("Subfig1", "Subfig2") , fig.cap="TITLE", out.width='.49\\linewidth', fig.env=c('subfigure')>>=
    x=seq(1:10)
    plot(x,x)
  @
  <<someChunk,cache=T,echo=F,tidy=F, fig.subcap=c("Subfig1", "Subfig2") , fig.cap="TITLE", out.width='.49\\linewidth', fig.env=c('subfigure')>>=
    x=seq(1:10)
    plot(x,x^2)
  @
\end{figure}

后一个例子不起作用,因为subfigure需要一个参数,而我不太确定如何做到这一点。

相关内容