使用 subfiles 包来获取 beamer 文档

使用 subfiles 包来获取 beamer 文档

使用 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}

相关内容