对于我的演示幻灯片,我希望有按时间显示和突出显示的列表,并且每个项目都由适当的图像/图形/表格支持。
考虑到更广泛的应用,我想查找/创建命令:
\abspos{<anchor-spec>}{<coords>}{<content>}
在哪里:
<anchor-spec>
指定定位对象的锚点。例如,NE 表示东北角点等,<coorrds>
使用标准 LaTeX 尺寸指定框架上的 xyz 坐标,<content>
包含定位的图形、表格或文本。
我的目的的代码想法:
\begin{minipage}{.5\textwidth}
\begin{itemize}
\item<1-> Foo
\item<2-> Bar
\end{itemize}
\end{minipage}
\begin{minipage}{.5\textwidth}
\uncover<1>\abspos{C}{.5\textwidth,.5\textheight,1}{\includegraphics{foo}}
\uncover<2>\abspos{C}{.5\textwidth,.5\textheight,1}{\includegraphics{bar}}
\end{minipage}
答案1
好的,这是我的尝试:
\documentclass{beamer}
\usepackage{tikz, etoolbox}
\usepackage{etoolbox}
\newcount\mycount
\def\mytempcoord{}
\def\mytempopa{}
%
\newcommand\doatpos[3]{%
\bgroup
\renewcommand*{\do}[1]{\ifnum\mycount<2
\edef\mytempcoord{\mytempcoord ##1%
\ifnum\mycount<1
,
\fi
}
\else
\edef\mytempopa{##1}
\fi
\advance\mycount by 1
}
\docsvlist{#2}\global\advance\mycount by -3
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=#1, opacity=\mytempopa] at (\mytempcoord) {#3};
\end{tikzpicture}%
%
%
\egroup
%
}
\begin{document}
\frame{
\doatpos{west}{0cm, 3cm,.5}{This is text \rule{1cm}{1cm}}
\doatpos{west}{1cm, -3 cm,.7}{This is text a\rule{1cm}{1cm}}
}
\end{document}
我基本上编写了一个解析器,它将这三个项的逗号列表划分为这样一种方式,即普通序列(例如此处的 TikZ 叠加层)可以使用它。您可能会发现第三个参数(伪 z 变量)不需要维度。嗯,是的。在这里涉及某个键处理程序可能会很有用。但是,我的看法不同。我宁愿引入一个新参数(用括号括起来)。这会让事情变得容易得多。(我个人的观点是,模仿完全不同的系统的行为是毫无意义的。)
输出相同,但没有etoolbox
:
\documentclass{beamer}
\usepackage{tikz}
\def\mytemparray{}
%
\newcommand\doatpos[3]{%
\bgroup
\def\mytemparray{{ #2 }}
\pgfmathparse{\mytemparray[0]} \edef\mya{\pgfmathresult}
\pgfmathparse{\mytemparray[1]} \edef\myb{\pgfmathresult}
\pgfmathparse{\mytemparray[2]} \edef\myc{\pgfmathresult} %also possible \pgfmathsetmacro
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=#1, opacity=\myc] at ( \mya pt, \myb pt) {#3};
\end{tikzpicture}%
%
%
\egroup
%
}
\begin{document}
\frame{
\doatpos{west}{0, 3 cm, .5}{This is text \rule{1cm}{1cm}}
\doatpos{west}{1cm, -3 cm,.7}{This is text a\rule{1cm}{1cm}}
}
\end{document}
此替代方案pgfmath
用于列表处理。由于pgfmathparse
扩展性非常差,我决定硬编码并将这三个元素放入不同的宏中。此解决方案同样非常具体且不灵活,但我认为如何处理列表中的更多项目更为明显。