Considere o seguinte 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 você pode ver, a posição da imagem tikz no terceiro quadro é diferente da segunda (está um pouco deslocada para a direita). Acho que está relacionado a um tipo de caixa que o pacote alphalph usa para as letras de sth. assim.
Minhas perguntas são: Como posso corrigir esse "bug" (no sentido de que não há mudança quando o terceiro quadro aparece)?
Responder1
O motivo real é muito mais simples. Você incluiu espaços espúrios na maneira como usou, \only
o que levou à mudança. Você deve comentar os finais de linha 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}