@@ -81,7 +81,8 @@ pandocToRST (Pandoc meta blocks) = do
81 (fmap (render colwidth) . blockListToRST)
81 (fmap (render colwidth) . blockListToRST)
82 (fmap (trimr . render colwidth) . inlineListToRST)
82 (fmap (trimr . render colwidth) . inlineListToRST)
83 $ deleteMeta "title" $ deleteMeta "subtitle" meta
83 $ deleteMeta "title" $ deleteMeta "subtitle" meta
84+ let minLev = findMinHeadingLevel Nothing blocks
84− body <- blockListToRST' True $ normalizeHeadings 1 blocks
85+ body <- blockListToRST' True $ normalizeHeadings minLev blocks
85 notes <- liftM (reverse . stNotes) get >>= notesToRST
86 notes <- liftM (reverse . stNotes) get >>= notesToRST
86 -- note that the notes may contain refs, so we do them first
87 -- note that the notes may contain refs, so we do them first
87 refs <- liftM (reverse . stLinks) get >>= refsToRST
88 refs <- liftM (reverse . stLinks) get >>= refsToRST
@@ -107,6 +108,11 @@ pandocToRST (Pandoc meta blocks) = do
107 headerLtEq _ _ = False
108 headerLtEq _ _ = False
108 normalizeHeadings lev (b:bs) = b:normalizeHeadings lev bs
109 normalizeHeadings lev (b:bs) = b:normalizeHeadings lev bs
109 normalizeHeadings _ [] = []
110 normalizeHeadings _ [] = []
111+ findMinHeadingLevel Nothing (Header l _a _i:bs) = findMinHeadingLevel (Just l) bs
112+ findMinHeadingLevel (Just ol) (Header l _a _i:bs) =
113+ findMinHeadingLevel (Just $ if ol>l then l else ol) bs
114+ findMinHeadingLevel l (_:bs) = findMinHeadingLevel l bs
115+ findMinHeadingLevel l [] = fromMaybe 1 l
111-- | Return RST representation of reference key table.
117-- | Return RST representation of reference key table.
112refsToRST :: Refs -> State WriterState Doc
118refsToRST :: Refs -> State WriterState Doc