使用 beamerarticle 包自定义 begin-frame 命令

使用 beamerarticle 包自定义 begin-frame 命令

我想使用一个 latex-document 来处理一篇文章和 beamer-frames。为此,我使用了 beamer-article-package。

我注意到 beamer-frames 的标题也显示在文章中,我不想这样。我搜索了互联网并找到了一种修改 beamer-template 的方法(在文章模式下)。然而,这有时会扰乱我与 hyperref 包结合使用的文档结构。

所以我认为最简单的方法是使用自定义命令来定义我的框架内容,但不幸的是这不能按预期工作,因为我的自定义命令没有创建框架(我也尝试使用 \newenvironment,但得到了相同的结果)。

所以问题是:我自己的命令包含开始和结束帧命令有什么问题?

仅产生一个输出帧的示例代码:

% Comment lines below and uncomment this for beamer
\documentclass[ignorenonframetext]{beamer}

% Comment above and uncomment below for article
%\documentclass[12pt,titlepage,a4paper,fleqn]{article}
%\usepackage{beamerarticle}

\mode<presentation>
{
    \newcommand{\MBF}[1]{\begin{frame}{#1}}
    \newcommand{\MEF}{\end{frame}}
}

\mode<article>
{
    \newcommand{\MBF}[1]{}
    \newcommand{\MEF}{}

    % You can use this to hide the title, but this disturbs the layout sometimes.
    %\setbeamertemplate{frametitle}{}
}

\begin{document}

    \begin{frame}{Testframe 1}
        First test page
    \end{frame}

    \MBF{Testframe 2}
        Second test page
    \MEF    
\end{document}

**编辑: **

按照请求提供一个损坏布局的示例。

图像: 布局错误

来源:

    \paragraph{Das Kamerakoordinatensystem}

    Zusätzlich zu dem Objekt- und Weltkoordinatensystem existiert das Kamerakoordinatensystem. Das Kamerakoordinatensystem beschreibt eine Kamera im Weltkoordinatensystem. \\
    Theoretisch könnte das Kamerakoordinatensystem ersetzt werden, indem man alle Geometrien im Weltkoordinatensystem entsprechend transformiert. Aus Gründen der Einfachheit ist es allerdings empfehlenswert ein Kamerakoordinatensystem zu verwenden.

    \begin{frame}{Das Kamerakoordinatensystem}
        \begin{figure}[H]
            \centering
            \includegraphics[width=0.8\textwidth]{Images/MathematicalBasics/Koordinatensysteme/Kamerakoordinatensystem}
            \caption{Das Kamerakoordinatensystem}
            \label{img:mathbasics:kamerakoordinatensystem}
        \end{figure}
    \end{frame}

编辑2:

根据要求创建布局问题结果的源代码: http://pastebin.com/8hgcBfGK

答案1

我绝对不建议创建自定义命令来包装框架。从长远来看,这会导致比它解决的更多的麻烦。

此外,它不会解决根本问题,因为您的[H]浮动说明符只会给 tex 任何其他选项,然后产生这个丑陋的分页符。其他一些可能性:

  • 使用其他浮动说明符,例如[tbph]允许图像位于页面顶部(我会选择此选项)

  • 或者强制显示上一页的所有文本\clearpage


%\documentclass[ignorenonframetext]{beamer}

\documentclass[12pt,titlepage,a4paper,fleqn]{article}
\usepackage{beamerarticle}

\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage{hyperref}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{tikz}

\mode<article>
{
    \usepackage{fancyhdr}

    \setbeamertemplate{frametitle}{}

    % Seitenränder definieren
    \geometry{a4paper, top=28mm, left=20mm, right=20mm, bottom=40mm, headsep=14mm, footskip=12mm}
}

\begin{document}
    \pagestyle{fancy}

    \lipsum
    \begin{frame}
        \begin{figure}[H]
            \centering
            \begin{tikzpicture}
                \draw (0,0) -- (10,10);
            \end{tikzpicture}
        \end{figure}
    \end{frame}

    \lipsum
    \clearpage
    \begin{frame}       
        \begin{figure}[H]
            \centering
            \begin{tikzpicture}
            \draw (0,0) -- (10,10);
            \end{tikzpicture}
        \end{figure}
    \end{frame}
    \lipsum

    \newpage

    \lipsum
    \begin{frame}{Test Frame Title}
        \begin{figure}[H]
            \centering
            \begin{tikzpicture}
            \draw (0,0) -- (10,10);
            \end{tikzpicture}
        \end{figure}
    \end{frame}

    \lipsum
    \begin{frame}{Test Frame Title}
        \begin{figure}[htbp]
            \centering
            \begin{tikzpicture}
            \draw (0,0) -- (10,10);
            \end{tikzpicture}
        \end{figure}
    \end{frame}

    \lipsum

\end{document}

相关内容