
Я создал последовательность tikzpicture, которые все похожи, но немного отличаются по размеру (у них есть выступающие части). Но я бы хотел, чтобы они все были выровнены в одной точке tikzpicture.
Я бы подумал, что если задать для них всех базовую линию, то эта точка координат будет выровнена, но они все равно «покачиваются».
Вот MWE. Я хочу, чтобы открытый круглый узел в (0,0) был в одном и том же месте на странице для каждого наложения. Но, похоже, он центрирует ограничивающий прямоугольник для каждого tikzpicture; размер прямоугольника меняется из-за большого зеленого узла. Я думал, что эта baseline
опция сделает это, но этого не происходит.
\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}
решение1
Установка базовой линии не позволяет избежать скачков в целом, поскольку ограничивающий прямоугольник все еще может измениться. Одним из очень быстрых решений является исключение дополнительного узла из ограничивающего прямоугольника путем добавления ключа 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}
В общем, ТикБиблиотека Z overlay-beamer-styles
имеет много опций для избежания прыжков. Здесь вы можете использовать
\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}