在投影机中轻松进行绝对定位

在投影机中轻松进行绝对定位

对于我的演示幻灯片,我希望有按时间显示和突出显示的列表,并且每个项目都由适当的图像/图形/表格支持。

考虑到更广泛的应用,我想查找/创建命令:

\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扩展性非常差,我决定硬编码并将这三个元素放入不同的宏中。此解决方案同样非常具体且不灵活,但我认为如何处理列表中的更多项目更为明显。

相关内容