Considere el siguiente MWE:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz,alphalph,amsmath}
\setbeamertemplate{navigation symbols}{}
\usetheme{AnnArbor}
\usecolortheme{dolphin}
\setbeamercolor{frametitle}{fg=structure,bg=white}
\setbeamerfont{frametitle}{shape=\rm\bfseries}
\newcommand{\caesar}[1]{
\centering
\begin{tikzpicture}[every node/.style={draw,minimum width=1cm,minimum height=1cm}]
\foreach \k in {1,...,26}
{
\pgfmathsetmacro\secure{int(\k+#1)}
\ifnum\k=26
\pgfmathsetmacro\mainx{mod(\k,26)}
\else
\pgfmathsetmacro\mainx{mod(\k,26)-1}
\fi
\pgfmathsetmacro\xpos{mod(\mainx,5)}
\pgfmathsetmacro\testnumber{mod(\k,5)}
\ifcase\testnumber=0
\pgfmathsetmacro\ypos{-floor(\k/5)+1}
\else
\pgfmathsetmacro\ypos{-floor(\k/5)}
\fi
\pgfmathsetmacro\letter{int(mod(\secure,26))}
\ifnum\letter=0
\pgfmathsetmacro\letter{26}
\else\fi
\node at (\xpos,\ypos) {\strut\alphalph{\letter}};
}
\node[draw=none] at (7,0) {$(x+\textcolor{red}{e})\mod 26$ mit $\textcolor{red}{e} = #1$};
\end{tikzpicture}
}
\begin{document}
\title{\bf Title}
\author{Name}
\institute{Institute}
\maketitle
\begin{frame}{Cäsar-Verschlüsselung}
\only<1>{
\caesar{0}
}
\only<2>{
\caesar{1}
}
\end{frame}
\end{document}
Como puede ver, la posición de la imagen tikz en el tercer cuadro es diferente a la del segundo (está un poco desplazada hacia la derecha). Supongo que está relacionado con una especie de cajas, que el paquete alphalph usa para las letras de algo. como eso.
Mi pregunta es: ¿Cómo puedo solucionar este "error" (en el sentido de que no hay cambios cuando aparece el tercer cuadro)?
Respuesta1
La razón real es mucho más simple. Incluiste espacios falsos en la forma que usaste \only
y que condujeron al cambio. Debes asegurarte de comentar los finales de línea usando %
:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz,alphalph,amsmath}
\setbeamertemplate{navigation symbols}{}
\usetheme{AnnArbor}
\usecolortheme{dolphin}
\setbeamercolor{frametitle}{fg=structure,bg=white}
\setbeamerfont{frametitle}{shape=\rm\bfseries}
\newcommand{\caesar}[1]{
\centering
\begin{tikzpicture}[every node/.style={draw,minimum width=1cm,minimum height=1cm}]
\foreach \k in {1,...,26}
{
\pgfmathsetmacro\secure{int(\k+#1)}
\ifnum\k=26
\pgfmathsetmacro\mainx{mod(\k,26)}
\else
\pgfmathsetmacro\mainx{mod(\k,26)-1}
\fi
\pgfmathsetmacro\xpos{mod(\mainx,5)}
\pgfmathsetmacro\testnumber{mod(\k,5)}
\ifcase\testnumber=0
\pgfmathsetmacro\ypos{-floor(\k/5)+1}
\else
\pgfmathsetmacro\ypos{-floor(\k/5)}
\fi
\pgfmathsetmacro\letter{int(mod(\secure,26))}
\ifnum\letter=0
\pgfmathsetmacro\letter{26}
\else\fi
\node at (\xpos,\ypos) {\strut\makebox[1em]{\alphalph{\letter}}};
}
\node[draw=none] at (7,0) {$(x+\textcolor{red}{e})\mod 26$ mit $\textcolor{red}{e} = #1$};
\end{tikzpicture}
}
\begin{document}
\title{\bf Title}
\author{Name}
\institute{Institute}
\maketitle
\begin{frame}{Cäsar-Verschlüsselung}
\only<1>{%
\caesar{0}%
}%
\only<2>{%
\caesar{1}%
}%
\end{frame}
\end{document}