@@ -164,6 +164,7 @@ data LaTeXState = LaTeXState{ sOptions :: ReaderOptions
164164 , sInTableCell :: Bool
165165 , sLastHeaderNum :: HeaderNum
166166 , sLabels :: M.Map String [Inline]
167+ , sHasChapters :: Bool
167168 , sToggles :: M.Map String Bool
168169 }
169170 deriving Show
@@ -183,6 +184,7 @@ defaultLaTeXState = LaTeXState{ sOptions = def
183184 , sInTableCell = False
184185 , sLastHeaderNum = HeaderNum []
185186 , sLabels = M.empty
187+ , sHasChapters = False
186188 , sToggles = M.empty
187189 }
188190
@@ -1984,9 +1986,13 @@ section starred (ident, classes, kvs) lvl = do
19841986 try (spaces >> controlSeq "label"
19851987 >> spaces >> toksToString <$> braced)
19861988 let classes' = if starred then "unnumbered" : classes else classes
1989+ when (lvl == 0) $
1990+ updateState $ \st -> st{ sHasChapters = True }
19871991 unless starred $ do
19881992 hn <- sLastHeaderNum <$> getState
1989− let num = incrementHeaderNum lvl hn
1993+ hasChapters <- sHasChapters <$> getState
1994+ let lvl' = lvl + if hasChapters then 1 else 0
1995+ let num = incrementHeaderNum lvl' hn
19901996 updateState $ \st -> st{ sLastHeaderNum = num }
19911997 updateState $ \st -> st{ sLabels = M.insert lab
19921998 [Str (renderHeaderNum num)]