Tikz 图片对象在每个投影仪框架上改变大小并导致图片和文本位置发生变化?

Tikz 图片对象在每个投影仪框架上改变大小并导致图片和文本位置发生变化?

我正在创建一个包含多张幻灯片的 Beamer 演示文稿,其中的 tikz 图片位于项目列表上方。由于每张幻灯片上的文本图片中的一个对象会改变大小,因此当我更换幻灯片时,文本和 tikz 图片会移动位置。如何才能使文本和 tikz 图片在所有幻灯片上的位置保持不变?我已附上问题的图片和一些演示该问题的 tex 代码。

\documentclass{beamer}

\usepackage{tikz}

\begin{document}

\begin{frame}[t]
\footnotesize
\begin{tikzpicture}
\def\wl{2}
\def\wh{0.8}
\def\posx{210}
\begin{scope}[xshift=-50]
\draw[black,dashed] (0,0) --  (pi*\wl,0);
\end{scope}

\begin{scope}[xshift=\posx,scale=1,transform shape]
\fill[black] (-2,-2) rectangle ++(4,4);
\end{scope}
\end{tikzpicture}
\begin{itemize}
\item This page has 3 lines
\item This page has 3 lines
\item This page has 3 lines
\end{itemize}
\end{frame}  

\begin{frame}[t]
\footnotesize
\begin{tikzpicture}
\path (-2,-2) rectangle ++(4,4);
\def\wl{2}
\def\wh{0.8}
\def\posx{210}
\begin{scope}[xshift=-50]
\draw[black,dashed] (0,0) --  (pi*\wl,0);
\end{scope}

\begin{scope}[xshift=\posx,scale=1,transform shape]
\fill[black] (-1,-1) rectangle ++(2,2);
\end{scope}
\end{tikzpicture}
\begin{itemize}
\item This page has 2 lines
\item This page has 2 lines
\end{itemize}
\end{frame} 

\end{document}

在此处输入图片描述

答案1

这是一个较短的代码,使用[t]框架选项(由@marmot 建议),并在第二张幻灯片上伪造一条与第一张幻灯片中的正方形大小相同的路径。

此外,使用覆盖规范,我们可以将所有内容写入单个文件中frame

\documentclass{beamer}    
\usepackage{tikz}

\begin{document}

\begin{frame}[t]
\footnotesize

\begin{tikzpicture}
\def\wl{2}
\def\wh{0.8}
\def\posx{210}

\begin{scope}[xshift=-50]
\draw[black,dashed] (0,0) --  (pi*\wl,0);
\end{scope}

\uncover<1>{
    \begin{scope}[xshift=\posx,scale=1,transform shape]
    \fill[black] (-2,-2) rectangle ++(4,4);
    \end{scope}
}
\uncover<2>{
    \begin{scope}[xshift=\posx,scale=1,transform shape]
    \fill[black] (-1,-1) rectangle ++(2,2);
    \path (-2,-2) rectangle ++(4,4);  %  <-- transparent path
\end{scope}
}

\end{tikzpicture}

\only<1>{
    \begin{itemize}
        \item This page has 3 lines
        \item This page has 3 lines
        \item This page has 3 lines
    \end{itemize}
}
\only<2>{
    \begin{itemize}
        \item This page has 2 lines
        \item This page has 2 lines
    \end{itemize}
}
\end{frame}  

\end{document}

相关内容