编译独立的 TikZ 图片为或者通过beamerarticle

编译独立的 TikZ 图片为或者通过beamerarticle

我在 TikZ 图片中使用 Beamer 风格的叠加层(\uncover\only等),并将其嵌入到通过以下方式生成的两个不同文档中\usepackage{beamerarticle}

  • <presentation>将覆盖层转换为分段未覆盖内容的Beamer 。
  • 忽略覆盖的文档<article>(这实际上很方便,因为我将其作为演讲后的讲义提供,其中所有信息应该立即可见)。

最小工作示例<presentation>

为了方便地预览我的 TikZ 图片而不必编译它们嵌入的文档,我依赖于通过和standalone支持 Beamer 叠加的类。此机制允许我预览 TikZ 图片,因为它将出现在我的 Beamer 中,如下面的 MWE 所示。\documentclass[beamer]{standalone}\begin{standaloneframe}<presentation>

\documentclass[tikz, beamer]{standalone}%

\begin{document}%

\begin{standaloneframe}{Standalone frame title}%

\begin{tikzpicture}%
  \node at (0,0) {This text is shown on all frames.};%
  \uncover<2->{%
    \node at (0,-1) {This text is shown on the second frame.};%
  }%
\end{tikzpicture}%

\end{standaloneframe}%

\end{document}%

最小工作示例<article>

此外,我还需要能够预览 TikZ 图片在我的<article>文档中的显示效果(即,没有叠加层,并且带有类的默认无衬线字体)。这可以通过以下方式实现

  1. [beamer]standalone类中删除选项
  2. 加载\usepackage{beamerarticle},以及
  3. 删除或评论\begin{standaloneframe}\end{standaloneframe}

正如下面的 MWE 所示。

\documentclass[tikz]{standalone}% EDIT 1: Remove [beamer] option

\usepackage{beamerarticle}% EDIT 2: Load beamerarticle package

\begin{document}%

%\begin{standaloneframe}{Standalone frame title}% EDIT 3: Comment standalone frame

\begin{tikzpicture}%
  \node at (0,0) {This text is shown on all frames.};%
  \uncover<2->{%
    \node at (0,-1) {This text is shown on the second frame.};%
  }%
\end{tikzpicture}

%\end{standaloneframe}% EDIT 3: Comment standalone frame

\end{document}%

如何简化从 到<presentation>的切换<article>

<presentation>我正在寻找一种更方便的解决方案,以在或模式下预览我的 TikZ 图片之间“翻转开关” <article>

为此目的取消注释一行代码是可以接受的,而上述解决方案需要进行太多编辑。我之所以关心尽可能自动化这个过程,是因为我需要在这两种情况下管理大量的 TikZ 图片。

请注意,这将是一个独立于 Beamer 样式叠加的有用功能,因为 TikZ 图形的一个主要优势是它们可以在不同的主机文档(以及字体环境)的上下文中使用。

答案1

当我有一个包含许多带有 tikzpictures 的帧的 Beamer 演示文稿时,我会将每个帧放在一个单独的文件夹中,并对除我正在处理的帧之外的所有帧进行注释。例如,main.tex演示文稿的代码是:

% !TeX root = main.tex
\documentclass{beamer}
\begin{document}
%\input{FramesFolder/frame1}
%\input{FramesFolder/frame2}
\input{FramesFolder/frame3}
\end{document}

frame3.tex并且中的文件FramesFolder可能是:

% !TeX root = ../main.tex
\begin{frame}
\frametitle{My Picture}
\begin{tikzpicture}%
  \node at (0,0) {This text is shown on all frames.};%
  \uncover<2->{%
    \node at (0,-1) {This text is shown on the second frame.};%
  }%
\end{tikzpicture}
\end{frame}

这样编译速度非常快。我只在最后编译所有的帧。% !TeX root =...当你编译时,两个文件中的“特殊注释”frame3.tex都会编译所有的演示文稿。

相关内容