@@ -247,7 +247,8 @@ pandocToHtml opts (Pandoc meta blocks) = do
247247 let authsMeta = map stringifyHTML $ docAuthors meta
248248 let dateMeta = stringifyHTML $ docDate meta
249249 slideVariant <- gets stSlideVariant
250− let sects = makeSections (writerNumberSections opts) Nothing $
250+ let sects = adjustNumbers opts $
251+ makeSections (writerNumberSections opts) Nothing $
251252 if slideVariant == NoSlides
252253 then blocks
253254 else prepSlides slideLevel blocks
@@ -594,15 +595,23 @@ figure opts attr txt (s,tit) = do
594595 else H.div ! A.class_ "figure" $ mconcat
595596 [nl opts, img, nl opts, capt, nl opts]
596597
597−showSecNum :: [Int] -> Text
598−showSecNum = T.intercalate "." . map tshow
599598
600−getNumber :: WriterOptions -> Attr -> Text
601−getNumber opts (_,_,kvs) =
602− showSecNum $ zipWith (+) num (writerNumberOffset opts ++ repeat 0)
599+adjustNumbers :: WriterOptions -> [Block] -> [Block]
600+adjustNumbers opts doc =
601+ if all (==0) (writerNumberOffset opts)
602+ then doc
603+ else walk go doc
603604 where
604− num = maybe [] (map (fromMaybe 0 . safeRead) . T.split (=='.')) $
605− lookup "number" kvs
605+ go (Header level (ident,classes,kvs) lst) =
606+ Header level (ident,classes,map fixnum kvs) lst
607+ go x = x
608+ fixnum ("number",num) = ("number",
609+ showSecNum $ zipWith (+)
610+ (writerNumberOffset opts ++ repeat 0)
611+ (map (fromMaybe 0 . safeRead) $
612+ T.split (=='.') num))
613+ fixnum (k,v) = (k,v)
614+ showSecNum = T.intercalate "." . map tshow
606615
607616-- | Convert Pandoc block element to HTML.
608617blockToHtml :: PandocMonad m => WriterOptions -> Block -> StateT WriterState m Html
@@ -821,9 +830,9 @@ blockToHtml opts (BlockQuote blocks) = do
821830 else do
822831 contents <- blockListToHtml opts blocks
823832 return $ H.blockquote $ nl opts >> contents >> nl opts
824−blockToHtml opts (Header level attr@(_,classes,_) lst) = do
833+blockToHtml opts (Header level attr@(_,classes,kvs) lst) = do
825834 contents <- inlineListToHtml opts lst
826− let secnum = getNumber opts attr
835+ let secnum = fromMaybe mempty $ lookup "number" kvs
827836 let contents' = if writerNumberSections opts && not (T.null secnum)
828837 && "unnumbered" `notElem` classes
829838 then (H.span ! A.class_ "header-section-number"