Как изменить шаблон блока для определенных сред теорем (LaTeX beamer) - PullRequest
4 голосов
/ 08 апреля 2010

Среды теоремы amsthm (теорема, пример, доказательство, решение ...) создают блоки на слайдах проектора. По умолчанию в этом примере среды используется другой шаблон (пример блока), чем теорема, решение или доказательство (блок).

Как сделать так, чтобы решение использовало другой шаблон, например «блочное решение», которое я могу определить?

Редактировать: Спасибо тем, кто ответил. Я еще не реализовал обходной путь, но кажется, что есть две идеи:

  • Переопределить команду \th@foo для теоремоподобной среды с именем foo. Новая команда должна переопределить \inserttheoremblockenv, чтобы она была желаемой блочной средой. См. beamerbasetheorems.sty (около строки 63), как это делается специально для example.

  • Переопределите шаблон theorem begin и theorem end, чтобы найти правильную среду блока теорем, основанную на глобальной переменной \inserttheoremname (см. beamerinnerthemedefault.sty). Таблица поиска может храниться в реестре pgfkeys. Этот подход был бы более высокоуровневым и не включал бы никаких команд с @ в них; однако на ум приходит ЯГНИ.

1 Ответ

2 голосов
/ 08 апреля 2010

Как видно из beamerbasetheorems.sty:

\documentclass[notheorems]{beamer}

\theoremstyle{plain}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

% or

\theoremstyle{definition}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

% or

\theoremstyle{example}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

Какой бы стиль ты ни любил. Вы также можете изменить внешний вид блока [alert | example]:

\setbeamercolor{block body}{fg=blue,bg=white}
\setbeamercolor{block body alerted}{fg=blue,bg=white}
\setbeamercolor{block body example}{fg=blue,bg=white}

(не пробовал, только посмотрел источники beamer)

РЕДАКТИРОВАТЬ: Все еще не уверены, что хотите, чтобы вы хотели, но вы можете определить свои собственные стили теоремы:

\makeatletter
\def\th@something{%
  \normalfont % body font
  \def\inserttheoremblockenv{alertblock}  
}
\theoremstyle{something}
\newtheorem{warn}[theorem]{WARNING}
\makeatother

\begin{warn}[Attention please]
This is dangerous
\end{warn}

(это работает, я проверял)

У вас есть 3 предопределенных блока, которые вы можете настроить, используя \ defbeamertemplate. Посмотрите на источники и документацию о том, как это сделать. Если вам нужно больше блочных сред, см. basebeamerlocalstructure.sty:

  \newenvironment<>{alertblock}[1]{%
    \begin{actionenv}#2%
      \def\insertblocktitle{#1}%
      \par%
      \mode<presentation>{%\usebeamerfont{block}%
        \setbeamercolor{local structure}{parent=alerted text}}%
      \usebeamertemplate{block alerted begin}}
    {\par%
      \usebeamertemplate{block alerted end}%
    \end{actionenv}}

Надеюсь, что поможет

...