git.iko.soy/typeable/pandoc
on master help sign in
Don't generate empty H1 after hrule slide breaks.

We now use a slide-level header with contents [Str "\0"] to mark an hrule break. This avoids creation of an empty H1 in these contexts. Closes #484.

commit527be1ddf2ef23d954f59d982e7f8c432ec2f3b8 authorJohn MacFarlane <jgm@berkeley.edu> dateMon 25 Jun 2012, 14:52 (14 years ago) parent4cf3aae
3 files changed+11−5
src/Text/Pandoc/Slides.hs+3−2 src/Text/Pandoc/Writers/HTML.hs+3−1 src/Text/Pandoc/Writers/LaTeX.hs+5−2
src/Text/Pandoc/Slides.hs+3−2
@@ -49,9 +49,10 @@ prepSlides :: Int -> [Block] -> [Block]
4949prepSlides slideLevel = ensureStartWithH . splitHrule
5050 where splitHrule (HorizontalRule : Header n xs : ys)
5151 | n == slideLevel = Header slideLevel xs : splitHrule ys
52− splitHrule (HorizontalRule : xs) = Header slideLevel [] : splitHrule xs
52+ splitHrule (HorizontalRule : xs) = Header slideLevel [Str "\0"] :
53+ splitHrule xs
5354 splitHrule (x : xs) = x : splitHrule xs
5455 splitHrule [] = []
5556 ensureStartWithH bs@(Header n _:_)
5657 | n <= slideLevel = bs
57− ensureStartWithH bs = Header slideLevel [] : bs
58+ ensureStartWithH bs = Header slideLevel [Str "\0"] : bs
src/Text/Pandoc/Writers/HTML.hs+3−1
@@ -262,7 +262,9 @@ elementToHtml slideLevel opts (Sec level num id' title' elements) = do
262262 -- always use level 1 for slide titles
263263 let level' = if slide then 1 else level
264264 let titleSlide = slide && level < slideLevel
265− header' <- blockToHtml opts (Header level' title')
265+ header' <- if title' == [Str "\0"] -- marker for hrule
266+ then return mempty
267+ else blockToHtml opts (Header level' title')
266268 let isSec (Sec _ _ _ _ _) = True
267269 isSec (Blk _) = False
268270 innerContents <- mapM (elementToHtml slideLevel opts)
src/Text/Pandoc/Writers/LaTeX.hs+5−2
@@ -243,8 +243,11 @@ elementToBeamer slideLevel (Sec lvl _num _ident tit elts)
243243 let fragile = if not $ null $ queryWith hasCodeBlock elts ++ queryWith hasCode elts
244244 then "[fragile]"
245245 else ""
246− let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile ++
247− "\\frametitle{") : tit ++ [RawInline "latex" "}"]
246+ let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile) :
247+ if tit == [Str "\0"] -- marker for hrule
248+ then []
249+ else (RawInline "latex" "\\frametitle{") : tit ++
250+ [RawInline "latex" "}"]
248251 let slideEnd = RawBlock "latex" "\\end{frame}"
249252 -- now carve up slide into blocks if there are sections inside
250253 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts