为什么在引用 self-made 环境时块 header 的高度会增加?如何避免这种情况?

Why does the height of the block header increase when making references to self-made environments? How to avoid this?

我正在使用 MikTex 2.9 制作 beamer 演示文稿,并且我自己制作了一些环境。我希望能够引用这些环境,但是当我这样做时,块的高度 header 由于某种原因增加了。

\newcounter{theo}[part]
\renewcommand{\thetheo}{\arabic{theo}}
\resetcounteronoverlays{theo}
\newenvironment<>{theo}[2]{
\setbeamercolor{block title}{fg=white,bg=dgreen!100!white}
\begin{block}{\refstepcounter{theo}\label{#2}Saetning~\thetheo #1}}{\end{block}}
\AtBeginEnvironment{theo}{\setbeamercolor{itemize item}{fg=dgreen!100!white}}
\AtBeginEnvironment{theo}{\setbeamercolor{itemize subitem}{fg=dgreen!100!white}}
\AtBeginEnvironment{theo}{\setbeamercolor{itemize subsubitem}{fg=dgreen!100!white}}
\AtBeginEnvironment{theo}{\setbeamercolor{enumerate item}{fg=dgreen!100!black}}
\AtBeginEnvironment{theo}{\setbeamercolor{enumerate subitem}{fg=dgreen!100!black}}
\AtBeginEnvironment{theo}{\setbeamercolor{enumerate subsubitem}{fg=dgreen!100!black}}

输出看起来不错,只是块 header 比我不想引用定理的块要高得多(它增长了大约 1.67 倍)。无论我是否确实引用了某个定理,问题都存在。上面的代码旨在使这些引用成为可能。这足以创建这个 block-header-height-problem。我没有使用 built-in theorem-environment,因为我正在用丹麦语制作 beamer-presentations(Saetning 是丹麦语的 Theorem),我还想通过为 bullet-points 着色来自定义环境颜色与方块 header 相同。有人可以帮帮我吗?顺便说一句,我正在使用 \usetheme{Aalborg}。

我不会尝试定义一个新环境,而是简单地使用 beamer 提供的内置 theorem 环境和翻译机制。

要将其调整为与您在问题中显示的格式相同,可以进行一些小的调整:

\documentclass{beamer}

\usetheme{Aalborg}

\uselanguage{danish}
\languagepath{danish}
\deftranslation[to=danish]{Theorem}{Saetning}

\makeatletter
\setbeamertemplate{theorem begin}{%
  \setbeamercolor{block title}{bg=cyan!100!white}%
  \setbeamercolor{itemize item}{fg=cyan!100!white}%
  \setbeamercolor{itemize subitem}{fg=cyan!100!white}%
  \setbeamercolor{itemize subsubitem}{fg=cyan!100!white}%
  \setbeamercolor{enumerate item}{fg=cyan!100!black}%
  \setbeamercolor{enumerate subitem}{fg=cyan!100!black}%
  \setbeamercolor{enumerate subsubitem}{fg=cyan!100!black}%
  \begin{\inserttheoremblockenv}
    {%
      \inserttheoremname
      \inserttheoremnumber
      \ifx\inserttheoremaddition\@empty\else\ \inserttheoremaddition\fi%
    }%
}

\setbeamertemplate{theorem end}{%
    \end{\inserttheoremblockenv}%
}

\makeatother

\begin{document}

\begin{frame}
    \begin{theorem}[Pythagoras]
        $a^2+b^2=c^2$ 
        \begin{itemize}
        \item test
        \end{itemize}
        \label{pytagoras}
    \end{theorem}

    Theorem \ref{pytagoras}

    \begin{block}{Title Pythagoras}
        content...
        \begin{itemize}
        \item test
        \end{itemize}
    \end{block}
\end{frame} 

\end{document}