我想创建一系列相关图表,例如突出显示图表中的遍历。使用 beamer 框架中的覆盖效果很好。
我可以在普通文档中做类似的事情吗?当然不是“覆盖”,而是并排的图片,其中第一张仅显示演示文稿中显示的图形的<1>部分,第二张仅显示<2>部分,依此类推。
马丁
答案1
大概是这样?
代码
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{xifthen}
\newcommand{\layerpic}[2]% layers, commands
{ \foreach \x in {1,...,#1}
{ \begin{tikzpicture}
\pgfmathtruncatemacro{\i}{\x+1}
#2
\end{tikzpicture}\\[1cm]
}
}
\newcommand{\mylayer}[2]% layer, layer commands
{ \ifthenelse{\i>#1}
{#2}
{}
}
\begin{document}
\layerpic{4}
{ \mylayer{1}
{ \fill[green!50!gray] (0,0) rectangle (12,4);
}
\mylayer{2}
{ \fill[red!50!gray] (6,2) ellipse (5.5 and 1.5);
}
\mylayer{3}
{ \fill[blue!50!gray] (1,1) circle (0.5);
\fill[blue!50!gray] (11,1) circle (0.5);
\fill[blue!50!gray] (1,3) circle (0.5);
\fill[blue!50!gray] (11,3) circle (0.5);
}
\mylayer{4}
{ \fill[yellow!50!gray] (3,0.1) -- (6,3.9) -- (9,0.1) -- cycle;
}
}
\end{document}
结果
编辑1:以下是一个在投影机和非投影机文件:
代码
\makeatletter
\@ifclassloaded{beamer}
{\xdef\isbeamer{1}}
{\xdef\isbeamer{0}}%
\makeatother
\newcommand{\layerpic}[2]% layers, commands
{ \ifthenelse{\isbeamer=1}
{ \begin{tikzpicture}[scale=0.5]
#2
\end{tikzpicture}
}
{ \foreach \x in {1,...,#1}
{ \begin{tikzpicture}
\pgfmathtruncatemacro{\i}{\x+1}
#2
\end{tikzpicture}\\[1cm]
}
}
}
\newcommand{\mylayer}[2]% layer, layer commands
{ \ifthenelse{\isbeamer=1}
{ \only<#1->{#2}
}
{ \ifthenelse{\i>#1}
{#2}
{}
}
}
输出
在一个非投影机文件(例如scrartcl),输出与之前完全相同。投影机但是(在投影机模式下tikzpicture
缩放到0.5
,因为幻灯片只有 128 毫米宽):