我正在尝试使用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}