@@ -523,19 +523,23 @@ hierarchicalizeWithIds (Header level attr@(_,classes,_) title':xs) = do
523523 sectionContents' <- hierarchicalizeWithIds sectionContents
524524 rest' <- hierarchicalizeWithIds rest
525525 return $ Sec level newnum attr title' sectionContents' : rest'
526−hierarchicalizeWithIds (Div attr@(_,classes',_)
527− (Header level (_,classes,_) title' : xs):ys)
528− | not ("columns" `elem` classes')
529− , not ("column" `elem` classes') = do
526+hierarchicalizeWithIds (Div (dident,dclasses,dkvs)
527+ (Header level (hident,hclasses,hkvs) title' : xs):ys)
528+ | not ("columns" `elem` dclasses)
529+ , not ("column" `elem` dclasses) = do
530530 lastnum <- S.get
531531 let lastnum' = take level lastnum
532532 let newnum = case length lastnum' of
533− x | "unnumbered" `elem` classes -> []
533+ x | "unnumbered" `elem` hclasses -> []
534534 | x >= level -> init lastnum' ++ [last lastnum' + 1]
535535 | otherwise -> lastnum ++
536536 replicate (level - length lastnum - 1) 0 ++ [1]
537537 unless (null newnum) $ S.put newnum
538− sectionContents' <- hierarchicalizeWithIds xs
538+ let attr = (hident, dclasses ++ hclasses, dkvs ++ hkvs)
539+ sectionContents' <- hierarchicalizeWithIds $
540+ if null dident -- ensure we don't lose an id
541+ then xs
542+ else [Div (dident,[],[]) xs]
539543 rest' <- hierarchicalizeWithIds ys
540544 return $ Sec level newnum attr title' sectionContents' : rest'
541545hierarchicalizeWithIds (x:rest) = do