So richten Sie mehrere Tikz-Bilder aus, die mit \only angezeigt werden

So richten Sie mehrere Tikz-Bilder aus, die mit \only angezeigt werden

Ich habe eine Abfolge von Tikz-Bildern, die alle ähnlich sind, aber leicht unterschiedliche Größen haben (es stehen Dinge hervor). Ich möchte sie aber alle am gleichen Punkt des Tikz-Bildes ausgerichtet haben.

Ich hätte gedacht, dass das Festlegen einer Grundlinie für alle diesen Koordinatenpunkt ausrichten würde, aber sie „wackeln“ immer noch

Hier ist ein MWE. Ich möchte, dass der offene Kreisknoten bei (0,0) für jede Überlagerung an derselben Stelle auf der Seite ist. Aber es scheint, als würde die Begrenzungsbox für jedes Tikz-Bild zentriert; die Größe der Box ändert sich aufgrund des großen grünen Knotens. Ich dachte, die baselineOption hätte dies bewirkt, aber das tut sie nicht.

\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}

Antwort1

Durch das Festlegen der Grundlinie werden Sprünge im Allgemeinen nicht vermieden, da sich der Begrenzungsrahmen immer noch ändern kann. Eine sehr schnelle Lösung besteht darin, den zusätzlichen Knoten durch Hinzufügen des Schlüssels aus dem Begrenzungsrahmen auszuschließen overlay.

\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}

Bildbeschreibung hier eingeben

Im Allgemeinen ist das TikDie Z-Bibliothek overlay-beamer-stylesbietet viele Möglichkeiten, Sprünge zu vermeiden. Hier könnte man verwenden

\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}

Bildbeschreibung hier eingeben

verwandte Informationen