Почему высота заголовка блока увеличивается при ссылках на самодельные среды? Как этого избежать?

Я делаю презентацию с использованием MikTex 2.9, и я создал некоторые среды самостоятельно. Я хочу иметь возможность ссылаться на эти среды, но когда я это делаю, высота заголовка блока по какой-то причине увеличивается.

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

Результат выглядит нормально, за исключением того, что заголовок блока значительно выше (он увеличивается примерно в 1,67 раза), чем если бы я не хотел иметь возможность ссылаться на теоремы. Проблема в том, действительно ли я даю ссылку на определенную теорему или нет. Приведенный выше код предназначен для того, чтобы сделать эти ссылки возможными. И этого достаточно, чтобы создать проблему высоты заголовка блока. Я не использую встроенную среду-теорему, потому что делаю свои презентации-проекторы на датском (Saetning - датский для теоремы), и я также хочу настроить среду, раскрасив маркеры в тот же цвет, что и заголовок блока. . Кто-нибудь может мне помочь? Кстати, я использую \ usetheme {Aalborg}.


person Peter Jensen    schedule 15.09.2019    source источник
comment
Не могли бы вы сделать минимальный компилируемый пример вместо фрагмента кода? Также почему бы просто не использовать среду встроенных теорем проекторов?   -  person samcarter_is_at_topanswers.xyz    schedule 15.09.2019
comment
Не пытайтесь изобретать велосипед, в проекторе есть механизм для перевода.   -  person samcarter_is_at_topanswers.xyz    schedule 29.09.2019


Ответы (1)


Вместо того, чтобы пытаться определить новую среду, я бы просто использовал встроенную theorem среду и механизм перевода, предоставляемые beamer.

Чтобы настроить его в соответствии с тем же форматированием, которое вы указали в своем вопросе, можно внести несколько незначительных изменений:

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

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

person samcarter_is_at_topanswers.xyz    schedule 15.09.2019
comment
Ваш код решил проблему! :-) У меня есть еще несколько вопросов: 1) текст в теореме теперь отформатирован в textit илиtextl, но я хочу, чтобы он был отформатирован, как и раньше, то есть обычным текстом. Как я могу это сделать? 2) Я хочу создать блоки примеров точно так же, как блоки теоремы, с тем же форматированием, что и блоки теорем (за исключением того, что я хочу, чтобы цвет фона заголовка блока был голубым). Как я могу это сделать? Я попытался скопировать и вставить ваш код и заменить «теорему» на «пример», но это не сработало. - person Peter Jensen; 29.09.2019
comment
@PeterJensen Не могли бы вы использовать кнопку «Задать вопрос» в левом верхнем углу, чтобы задать новые вопросы? Комментарии - не лучшее место. - person samcarter_is_at_topanswers.xyz; 29.09.2019