为什么 \caption 与 beamer 冲突?

为什么 \caption 与 beamer 冲突?

我正在尝试使用caption带有 的包beamer。下面的 MWE 运行良好。如果我取消注释captionof,则会显示消息you cannot use '\unskip' in vertical mode。更令人费解的是,如果我更改为文档类回忆录,即使带有 ,也可以captionof编译正常。这是怎么回事?

   \documentclass{beamer}
    %\documentclass{memoir}

    \usepackage{listingsutf8}   % Use program listings
    \usepackage{caption}

    \makeatletter
    \newcommand\SourceFileBad[4][]{
        \lstinputlisting{#2}
    %   \captionof{lstlisting}{#3}%
    }
    \makeatother

    \begin{document}
    \SourceFileBad {sumvec.c}{The file}{lst:sumvec.c}
    \end{document}

    % % % % % % % % % % % % % % % % % The sumvec file, for completeness
    int sumvec(int v[N])
    {
        int i, sum = 0;
        for (i = 0; i < N; i++) longer line to test
          sum += v[i];
        return sum;
    }

答案1

我没有看到任何冲突,你只需要使用一个frame环境:

\begin{frame}
\SourceFileBad{sumvec.c}{The file}{lst:sumvec.c}
\end{frame}

完整 MWE:

\begin{filecontents}{sumvec.c}
int sumvec(int v[N])
{
    int i, sum = 0;
    for (i = 0; i < N; i++) longer line to test
      sum += v[i];
    return sum;
}
\end{filecontents}

\documentclass{beamer}

\usepackage{listingsutf8}   
\usepackage{caption}

\newcommand\SourceFileBad[4][]{
    \lstinputlisting{#2}
   \captionof{lstlisting}{#3}%
}

\begin{document}
\begin{frame}
\SourceFileBad{sumvec.c}{The file}{lst:sumvec.c}
\end{frame}
\end{document}

在此处输入图片描述

相关内容