{-# LANGUAGE OverloadedStrings #-}

-- |
-- 
-- /For contributors: This module was automatically generated by HaTeX-meta./
-- /So, please, don't make any change here directly, because/
-- /this is intended to be generated from/
-- "Text.LaTeX.Packages.Beamer" /module via HaTeX-meta,/
-- /and therefore, changes must to be done in these places./

module Text.LaTeX.Packages.Beamer.Monad
 ( -- * Beamer package
   beamer
   -- * Beamer commands
 , frame
 , frametitle
 , framesubtitle
 , alert
 , pause
 , block
   -- ** Overlay Specifications
 , OverlaySpec (..)
 , beameritem
 , uncover
 , only
   -- ** Themes
 , Theme (..)
 , usetheme
   ) where

import Text.LaTeX.Base.Writer
import Text.LaTeX.Base.Render
import Text.LaTeX.Base.Types
import qualified Text.LaTeX.Packages.Beamer as App
import Text.LaTeX.Packages.Beamer(OverlaySpec,Theme)

{-|
The 'beamer' document class. Importing a package is not required. Example:

>  documentclass [] beamer

-}
beamer :: String
beamer = App.beamer

-- | A presentation is composed of a sequence of frames. Each frame is created with this function.

frame ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
frame a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.frame a1)

-- | Set the title of the current frame. Use it within a 'frame'.

frametitle ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
frametitle a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.frametitle a1)

-- | Set the subtitle of the current frame. Use it within a 'frame'.

framesubtitle ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
framesubtitle a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.framesubtitle a1)

{-|
Highlight in red a piece text. With the 'OverlaySpec's, you can specify the slides where
 the text will be highlighted.
-}
alert ::   (Monad m) => [OverlaySpec] -> LaTeXT_ m -> LaTeXT_ m
alert a1 a2
  = do a2 <- extractLaTeX_ a2
       textell ( App.alert a1 a2)

-- | Introduces a pause in a slide.

pause ::   (Monad m) => LaTeXT_ m
pause = do textell ( App.pause)

{-|
'beameritem' works like @item@, but allows you to specify the slides where
 the item will be displayed.
-}
beameritem ::   (Monad m) => [OverlaySpec] -> LaTeXT_ m
beameritem a1 = do textell ( App.beameritem a1)

-- | With 'uncover', show a piece of text only in the slides you want.

uncover ::   (Monad m) => [OverlaySpec] -> LaTeXT_ m -> LaTeXT_ m
uncover a1 a2
  = do a2 <- extractLaTeX_ a2
       textell ( App.uncover a1 a2)

-- | Similar to 'uncover'.

only ::   (Monad m) => [OverlaySpec] -> LaTeXT_ m -> LaTeXT_ m
only a1 a2
  = do a2 <- extractLaTeX_ a2
       textell ( App.only a1 a2)

-- | A 'block' will be displayed surrounding a text.

block ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
block a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( App.block a1 a2)

-- | Set the 'Theme' employed in your presentation (in the preamble).

usetheme ::   (Monad m) => Theme -> LaTeXT_ m
usetheme a1 = do textell ( App.usetheme a1)