@@ -3,6 +3,7 @@
33{-# LANGUAGE ScopedTypeVariables #-}
44{-# LANGUAGE ViewPatterns #-}
55{-# LANGUAGE FlexibleContexts #-}
6+{-# LANGUAGE LambdaCase #-}
67{-# LANGUAGE OverloadedStrings #-}
78{- |
89 Module : Text.Pandoc.Writers.Docx
@@ -1087,11 +1088,20 @@ listItemToOpenXML _ _ [] = return []
10871088listItemToOpenXML opts numid (first:rest) = do
10881089 oldInList <- gets stInList
10891090 modify $ \st -> st{ stInList = True }
1090− first' <- withNumId numid $ blockToOpenXML opts first
1091+ let isListBlock = \case
1092+ BulletList{} -> True
1093+ OrderedList{} -> True
1094+ _ -> False
1095+ -- Prepend an empty string if the first entry is another
1096+ -- list. Otherwise the outer bullet will disappear.
1097+ let (first', rest') = if isListBlock first
1098+ then (Plain [Str ""] , first:rest)
1099+ else (first, rest)
1100+ first'' <- withNumId numid $ blockToOpenXML opts first'
10911101 -- baseListId is the code for no list marker:
1092− rest' <- withNumId baseListId $ blocksToOpenXML opts rest
1102+ rest'' <- withNumId baseListId $ blocksToOpenXML opts rest'
10931103 modify $ \st -> st{ stInList = oldInList }
1094− return $ first' ++ rest'
1104+ return $ first'' ++ rest''
10951105
10961106alignmentToString :: Alignment -> [Char]
10971107alignmentToString alignment = case alignment of