diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2013-07-26 12:40:56 -0700 | 
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2013-07-26 12:40:56 -0700 | 
| commit | a97f39c12e7b47a272575b69ad4cdd38966c043e (patch) | |
| tree | fdd5ec43ff42968e859c9de28ecd4eab60f02947 /src/Text/Pandoc/Writers | |
| parent | d5fad2306a27b3fcf2c85782dd13bc8e516a5df9 (diff) | |
| download | pandoc-a97f39c12e7b47a272575b69ad4cdd38966c043e.tar.gz | |
Beamer:  add allowframebreaks to slide if set in header classes.
It's recommended that your bibliography slide have this
attribute:
    # References {.allowframebreaks}
This causes multiple slides to be created if necessary, depending
on the length of the bibliography.
Diffstat (limited to 'src/Text/Pandoc/Writers')
| -rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 06a04ade2..aa5bfa623 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -232,7 +232,7 @@ toSlides bs = do  elementToBeamer :: Int -> Element -> State WriterState [Block]  elementToBeamer _slideLevel (Blk b) = return [b] -elementToBeamer slideLevel  (Sec lvl _num (ident,classes,_) tit elts) +elementToBeamer slideLevel  (Sec lvl _num (ident,classes,kvs) tit elts)    | lvl >  slideLevel = do        bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts        return $ Para ( RawInline "latex" "\\begin{block}{" @@ -240,7 +240,7 @@ elementToBeamer slideLevel  (Sec lvl _num (ident,classes,_) tit elts)               : bs ++ [RawBlock "latex" "\\end{block}"]    | lvl <  slideLevel = do        bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts -      return $ (Header lvl (ident,classes,[]) tit) : bs +      return $ (Header lvl (ident,classes,kvs) tit) : bs    | otherwise = do -- lvl == slideLevel        -- note: [fragile] is required or verbatim breaks        let hasCodeBlock (CodeBlock _ _) = [True] @@ -248,17 +248,20 @@ elementToBeamer slideLevel  (Sec lvl _num (ident,classes,_) tit elts)        let hasCode (Code _ _) = [True]            hasCode _          = []        opts <- gets stOptions -      let fragile = if not $ null $ queryWith hasCodeBlock elts ++ +      let fragile = not $ null $ queryWith hasCodeBlock elts ++                                       if writerListings opts                                          then queryWith hasCode elts                                          else [] -                       then "[fragile]" -                       else "" -      let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile) : +      let allowframebreaks = "allowframebreaks" `elem` classes +      let optionslist = ["fragile" | fragile] ++ +                        ["allowframebreaks" | allowframebreaks] +      let options = if null optionslist +                       then "" +                       else "[" ++ intercalate "," optionslist ++ "]" +      let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ options) :                  if tit == [Str "\0"]  -- marker for hrule                     then [] -                   else (RawInline "latex" "\\frametitle{") : tit ++ -                        [RawInline "latex" "}"] +                   else (RawInline "latex" "{") : tit ++ [RawInline "latex" "}"]        let slideEnd = RawBlock "latex" "\\end{frame}"        -- now carve up slide into blocks if there are sections inside        bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts | 
