비머에서 tikzpictures 위치 관련 문제

비머에서 tikzpictures 위치 관련 문제

다음 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}

스크린샷

보시다시피, 세 번째 프레임의 tikzpicture 위치는 두 번째 프레임과 다릅니다(오른쪽으로 약간 이동함). 나는 그것이 alphaph 패키지가 sth의 문자에 사용하는 일종의 상자와 관련이 있다고 생각합니다. 그렇게.

내 질문은: 이 "버그"(세 번째 프레임이 나타날 때 이동이 없다는 의미)를 어떻게 수정할 수 있습니까?

답변1

실제 이유는 훨씬 간단합니다. 당신은 \only변화로 이어지는 당신이 사용한 방식에 가짜 공간을 포함시켰습니다 . 다음을 사용하여 줄 끝을 주석 처리해야 합니다 %.

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

여기에 이미지 설명을 입력하세요

관련 정보