como alinhar várias imagens tikz exibidas usando \only

como alinhar várias imagens tikz exibidas usando \only

Eu tenho uma sequência de tikzpicture que são todas semelhantes, mas de tamanhos ligeiramente diferentes (eles têm coisas que se destacam. Mas eu gostaria que todos estivessem alinhados no mesmo ponto do tikzpicture.

Eu teria pensado que definir uma linha de base para todos eles alinharia esse ponto coordenado, mas eles ainda "mexeriam".

Aqui está um MWE. Quero que o nó do círculo aberto em (0,0) esteja no mesmo lugar na página para cada sobreposição. Mas parece centralizar a caixa delimitadora de cada imagem tikz; o tamanho da caixa muda devido ao grande nó verde. Achei que a baselineopção teria conseguido isso, mas isso não acontece.

\documentclass{beamer}

\usepackage{tikz}


\begin{document}

\newcommand\grf[1]{
  \begin{tikzpicture}%[baseline={(0,0)}]
    \node[circle,draw] (0) at (0,0) {} ;  % <-- this circle node should not move  
    \node[circle,fill] (1) at (+1,+1) {} ;
    \node[circle,fill] (2) at (+1,-1) {} ;
    \node[circle,fill] (3) at (-1,-1) {} ;
    \node[circle,fill] (4) at (-1,+1) {} ;
    \node[circle,fill,green,inner sep=1em] at (#1) {} ;
  \end{tikzpicture}
}

\begin{frame}
  \only<1>{\grf{1}}%
  \only<2>{\grf{2}}%
  \only<3>{\grf{3}}%
  \only<4>{\grf{4}}%
\end{frame}


\end{document}

Responder1

Definir a linha de base não evita saltos em geral, pois a caixa delimitadora ainda pode mudar. Uma solução muito rápida é excluir o nó extra da caixa delimitadora adicionando a overlaychave.

\documentclass{beamer}

\usepackage{tikz}
\begin{document}

\newcommand\grf[1]{
  \begin{tikzpicture}%[baseline={(0,0)}]
    \node[circle,draw] (0) at (0,0) {} ;  % <-- this circle node should not move  
    \node[circle,fill] (1) at (+1,+1) {} ;
    \node[circle,fill] (2) at (+1,-1) {} ;
    \node[circle,fill] (3) at (-1,-1) {} ;
    \node[circle,fill] (4) at (-1,+1) {} ;
    \node[circle,fill,green,inner sep=1em,overlay] at (#1) {} ;
  \end{tikzpicture}
}

\begin{frame}
  \only<1>{\grf{1}}%
  \only<2>{\grf{2}}%
  \only<3>{\grf{3}}%
  \only<4>{\grf{4}}%
\end{frame}


\end{document}

insira a descrição da imagem aqui

Em geral, o TikA biblioteca Z overlay-beamer-stylestem muitas opções para evitar saltos. Aqui você poderia usar

\documentclass{beamer}

\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}

\begin{document}


\begin{frame}
  \begin{tikzpicture}%[baseline={(0,0)}]
    \node[circle,draw] (0) at (0,0) {} ;  % <-- this circle node should not move  
    \node[circle,fill] (1) at (+1,+1) {} ;
    \node[circle,fill] (2) at (+1,-1) {} ;
    \node[circle,fill] (3) at (-1,-1) {} ;
    \node[circle,fill] (4) at (-1,+1) {} ;
    \path foreach \X in {1,...,4}
     {node[circle,fill,green,inner sep=1em,visible on=<\X>] at (\X) {} };
  \end{tikzpicture}
\end{frame}


\end{document}

insira a descrição da imagem aqui

informação relacionada