Использование \uncover внутри текста узла TikZ

Использование \uncover внутри текста узла TikZ

Я не могу использовать \uncoverвнутри текста узел TikZ. Вот что я хотел бы сделать:

\documentclass{beamer}
\usepackage{tikz}

\begin{document}
    \begin{frame}
        \begin{tikzpicture}[node distance=2cm]
            \node[align=center] (a) {test 1 \\ \uncover<2>{test 12345}};
            \node[align=center,right of=a] (b) {test 2};
            \path[->] (a) edge (b);
        \end{tikzpicture}
    \end{frame}
\end{document}

Это дает: "! Ошибка пакета tikz: отказ от этого пути. Вы забыли точку с запятой?"

Использование \onslideдает тот же результат. Использование \onlyработает, но поскольку моя вторая строка длиннее, узел увеличивается, а все остальное смещается.

Мне было бы любопытно понять, почему \onlyработает одно, но не работает \uncoverдругое \onslide, но в основном я хотел бы узнать, есть ли простой способ (например, более простой, чем иметь minipageтекст внутри узла) предотвратить изменение размера узла.

решение1

Вам понадобится еще один комплект брекетов:

\documentclass{beamer}
\usepackage{tikz}

\begin{document}
    \begin{frame}
        \begin{tikzpicture}[node distance=2cm]
            \node[align=center] (a) {test 1 \\ {\uncover<2>{test 12345}}};  %wrapped \uncover into {}
            \node[align=center,right of=a] (b) {test 2};
            \path[->] (a) edge (b);
        \end{tikzpicture}
    \end{frame}
\end{document}

введите описание изображения здесь

решение2

\documentclass{beamer}
\usepackage{tikz}

\begin{document}
    \begin{frame}
        \begin{tikzpicture}[node distance=2cm]
          \onslide<1>{%
            \node[align=center] (a) {test 1 \\ \phantom{test 12345}};}
          \onslide<2->{%
            \node[align=center] (a) {test 1 \\ test 12345};}
            \node[align=center,right of=a] (b) {test 2};
            \path[->] (a) edge (b);
        \end{tikzpicture}
    \end{frame}
\end{document}

фантомный текст...

Связанный контент