@@ -232,7 +232,7 @@ toSlides bs = do
232232
233233elementToBeamer :: Int -> Element -> State WriterState [Block]
234234elementToBeamer _slideLevel (Blk b) = return [b]
235−elementToBeamer slideLevel (Sec lvl _num (ident,classes,_) tit elts)
235+elementToBeamer slideLevel (Sec lvl _num (ident,classes,kvs) tit elts)
236236 | lvl > slideLevel = do
237237 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
238238 return $ Para ( RawInline "latex" "\\begin{block}{"
@@ -240,7 +240,7 @@ elementToBeamer slideLevel (Sec lvl _num (ident,classes,_) tit elts)
240240 : bs ++ [RawBlock "latex" "\\end{block}"]
241241 | lvl < slideLevel = do
242242 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
243− return $ (Header lvl (ident,classes,[]) tit) : bs
243+ return $ (Header lvl (ident,classes,kvs) tit) : bs
244244 | otherwise = do -- lvl == slideLevel
245245 -- note: [fragile] is required or verbatim breaks
246246 let hasCodeBlock (CodeBlock _ _) = [True]
@@ -248,17 +248,20 @@ elementToBeamer slideLevel (Sec lvl _num (ident,classes,_) tit elts)
248248 let hasCode (Code _ _) = [True]
249249 hasCode _ = []
250250 opts <- gets stOptions
251− let fragile = if not $ null $ queryWith hasCodeBlock elts ++
251+ let fragile = not $ null $ queryWith hasCodeBlock elts ++
252252 if writerListings opts
253253 then queryWith hasCode elts
254254 else []
255− then "[fragile]"
256− else ""
257− let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile) :
255+ let allowframebreaks = "allowframebreaks" `elem` classes
256+ let optionslist = ["fragile" | fragile] ++
257+ ["allowframebreaks" | allowframebreaks]
258+ let options = if null optionslist
259+ then ""
260+ else "[" ++ intercalate "," optionslist ++ "]"
261+ let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ options) :
258262 if tit == [Str "\0"] -- marker for hrule
259263 then []
260− else (RawInline "latex" "\\frametitle{") : tit ++
261− [RawInline "latex" "}"]
264+ else (RawInline "latex" "{") : tit ++ [RawInline "latex" "}"]
262265 let slideEnd = RawBlock "latex" "\\end{frame}"
263266 -- now carve up slide into blocks if there are sections inside
264267 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts