diff options
author | John MacFarlane <jgm@berkeley.edu> | 2019-11-03 12:54:42 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2019-11-03 12:54:42 -0800 |
commit | 530bfe5f5afb1098ef8cec46ffe00ff8a6f00a43 (patch) | |
tree | b8da97f72734897f1e52f4d4ffbe8a998147806d /src | |
parent | e906e5ac23177c4377591c73c8e796e764096a32 (diff) | |
download | pandoc-530bfe5f5afb1098ef8cec46ffe00ff8a6f00a43.tar.gz |
Docx reader: fix list number resumption for sublists. Closes #4324.
The first list item of a sublist should not resume numbering
from the number of the last sublist item of the same level,
if that sublist was a sublist of a different list item.
That is, we should not get:
```
1. one
1. sub one
2. sub two
2. two
3. sub one
```
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Readers/Docx.hs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index 9d17ab118..8b0b295ab 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -640,7 +640,14 @@ bodyPartToBlocks (ListItem pPr numId lvl (Just levelInfo) parparts) = do , ("text", txt) , ("start", show start) ] - modify $ \st -> st{ docxListState = M.insert (numId, lvl) start listState} + modify $ \st -> st{ docxListState = + -- expire all the continuation data for lists of level > this one: + -- a new level 1 list item resets continuation for level 2+ + let expireKeys = [ (numid', lvl') + | (numid', lvl') <- M.keys listState + , lvl' > lvl + ] + in foldr M.delete (M.insert (numId, lvl) start listState) expireKeys } blks <- bodyPartToBlocks (Paragraph pPr parparts) return $ divWith ("", ["list-item"], kvs) blks bodyPartToBlocks (ListItem pPr _ _ _ parparts) = |