![编译独立的 TikZ 图片为或者通过beamerarticle](https://linux22.com/image/435606/%E7%BC%96%E8%AF%91%E7%8B%AC%E7%AB%8B%E7%9A%84%20TikZ%20%E5%9B%BE%E7%89%87%E4%B8%BA%E6%88%96%E8%80%85%E9%80%9A%E8%BF%87beamerarticle.png)
我在 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>
文档中的显示效果(即,没有叠加层,并且带有类的默认无衬线字体)。这可以通过以下方式实现
[beamer]
从standalone
类中删除选项- 加载
\usepackage{beamerarticle}
,以及 - 删除或评论
\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
都会编译所有的演示文稿。