使用 beamer 文档包时subfiles
,我在子文件框架中获得了错误的标题栏。我的主要文件如下:
% main.tex
\documentclass{beamer}
\usepackage{subfiles}
\begin{document}
\subfile{sub}
\end{document}
子文件如下:
% sub.tex
\documentclass[main]{subfiles}
\begin{document}
\begin{frame}
\frametitle{Hello}
Hello World!
\end{frame}
\end{document}
结果sub.pdf
是错误的。包装有什么问题subfiles
?
答案1
除了subfiles
(我认为使用standalone
),您还可以直接使用standalone
及其对beamer
演示文稿的支持。尝试使用:
% main.tex
\documentclass{beamer}
\usepackage{standalone}% <--------
\usetheme{Warsaw}
\begin{document}
\input{sub}%<---- input not include
\end{document}
和
% sub.tex
\documentclass[beamer]{standalone}%<-- standalone instead of subfiles
\begin{document}
\begin{frame}%<---- (or standaloneframe, I'm not sure)
\frametitle{Hello}
Hello World!
\end{frame}
\end{document}
答案2
这是因为 beamer 修改了\document
,但subfiles
恢复了它。如果 \document
保存了后类加载后,问题就会消失。我建议subfiles.cls
用以下方法替换:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{subfiles}[2012/05/23 Federico Garcia]
\RequirePackage{verbatim}
\DeclareOption*{\typeout{Preamble taken from file `\CurrentOption'}%
\let\preamble@file\CurrentOption}
\ProcessOptions
\newcommand{\documentclass@subfiles}[2][]{%
\global\let\@classoptionslist\relax
\LoadClass[#1]{#2}
\global\let\old@document@subfiles\document
\global\let\old@enddocument@subfiles\enddocument
\global\let\document\comment
\global\let\enddocument\endcomment
}
\let\old@documentclass@subfiles\documentclass
\let\documentclass\documentclass@subfiles
\input{\preamble@file}
{\catcode`\@=11
\global\let\document\old@document@subfiles
\global\let\enddocument\old@enddocument@subfiles
\global\let\documentclass\old@documentclass@subfiles
\global\let\old@document@subfiles\undefined
\global\let\old@enddocument@subfiles\undefined
\global\let\old@documentclass@subfiles\undefined}
\endinput
答案3
我不确定你想做什么。
如果只想包含一些包含框架的文件,请执行以下操作:
% main.tex
\documentclass{beamer}
\usetheme{Warsaw} % Nice theme
\begin{document}
\input{sub}
\end{document}
和子文件:
\begin{frame}
\frametitle{Hello}
Hello World!
\end{frame}
然后,您可以根据需要创建许多文件作为输入,但切勿使用documentclass
、 和begin{frame}
。\end{frame}