2010-04-08 7 views
3

Les environnements théoriques amsthm (théorème, exemple, preuve, solution, ...) font des blocs sur les diapositives du beamer. La valeur par défaut est que les exemples d'environnements utilisent un modèle différent (exemple de bloc) que le théorème ou la solution ou la preuve (bloc). Comment faire pour que la solution utilise un modèle différent comme "solution de bloc" que je peux définir?Comment modifier le modèle de bloc pour des environnements théoriques spécifiques (beamer LaTeX)

Édition: Merci à ceux qui ont répondu. Je ne l'ai pas mis en place une solution encore mais il semble qu'il y ait deux idées:

  • Redéfinir la commande \[email protected] pour un environnement de type théorème nommé foo. La nouvelle commande doit redéfinir \inserttheoremblockenv comme étant l'environnement de bloc souhaité. Voir beamerbasetheorems.sty (autour de la ligne 63) pour savoir comment cela est fait spécifiquement pour example.

  • Redéfinir le modèle theorem begin et theorem end pour rechercher l'environnement bloc théorème correct basé sur la variable globale \inserttheoremname (voir beamerinnerthemedefault.sty). La table de recherche peut être conservée dans un registre pgfkeys. Cette approche serait un peu plus haut niveau et n'impliquerait aucune commande avec @ dans eux; cependant, YAGNI me vient à l'esprit.

Répondre

1

Comme on le voit dans 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}} 

Quel que soit le style que vous aimez. Vous pouvez également modifier l'apparence de la [alerte | exemple] bloc:

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

(pas essayé, juste regardé dans les sources de Beamer)

EDIT: toujours pas voulu que vous voulez faire , mais vous pouvez définir vos propres styles de théorème:

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

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

(Cela fonctionne, je l'ai testé)

vous disposez de 3 blocs prédéfinis que vous peut personnaliser en utilisant \ defbeamertemplate. Regardez dans les sources et la documentation sur la façon de le faire. Si vous avez besoin de plus des environnements de bloc, voir 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}} 

espoir qui aide

+0

Ce que je veux vraiment faire est de créer une nouvelle alternative aux blocs théorème/exemple/alerte. beamerbasetheorems.sty remplace l'un des internes d'amsthm de façon à utiliser un modèle "theorem begin" lorsqu'un environnement de type théorème commence. Ce modèle démarre un environnement de bloc nommé '\ insertblockenv'. Cette macro est définie dans "beamerbasetheorems.sty" comme étant "block", et seulement dans une substitution d'un "\ th @ example" interne, la macro "\ insertblockenv" est redéfinie en "exampleblock". Donc, ce sont vos choix: exampleblock si le theoremstyle est un exemple, block o/w. Peut-être que le modèle peut être adapté? –

+0

Voulez-vous modifier un environnement de bloc existant ou définir un nouvel environnement de bloc? – Meinersbur

+0

Je veux changer un environnement de bloc existant.Je ne veux pas que "theorem" et "solution" (par exemple) soient dans le même beamercolorbox. Je n'aurai pas l'occasion d'y revenir un jour ou deux, mais je pense que quelque chose peut être accompli en utilisant le registre de clés de PGF dans le modèle 'theorem begin'. –