git.iko.soy/typeable/pandoc
on master help sign in
Docx writer: Combine reference.docx numbering with pandoc's.
0ddb4cdJohn MacFarlane
src/Text/Pandoc/Writers/Docx.hs+6−6
@@ -289,8 +289,10 @@ writeDocx opts doc@(Pandoc meta _) = do
289
289
290 -- construct word/numbering.xml
290 -- construct word/numbering.xml
291 let numpath = "word/numbering.xml"
291 let numpath = "word/numbering.xml"
292+ numbering <- parseXml refArchive distArchive numpath
293+ newNumElts <- mkNumbering (stLists st)
292− numEntry <- (toEntry numpath epochtime . renderXml)
294+ let numEntry = toEntry numpath epochtime $ renderXml numbering{ elContent =
293− `fmap` mkNumbering (stLists st)
295+ elContent numbering ++ map Elem newNumElts }
294 let docPropsPath = "docProps/core.xml"
296 let docPropsPath = "docProps/core.xml"
295 let docProps = mknode "cp:coreProperties"
297 let docProps = mknode "cp:coreProperties"
296 [("xmlns:cp","http://schemas.openxmlformats.org/package/2006/metadata/core-properties")
298 [("xmlns:cp","http://schemas.openxmlformats.org/package/2006/metadata/core-properties")
@@ -392,12 +394,10 @@ styleToOpenXml style = parStyle : map toStyle alltoktypes
392baseListId :: Int
394baseListId :: Int
393baseListId = 1000
395baseListId = 1000
394
396
395−mkNumbering :: [ListMarker] -> IO Element
397+mkNumbering :: [ListMarker] -> IO [Element]
396mkNumbering lists = do
398mkNumbering lists = do
397 elts <- mapM mkAbstractNum (ordNub lists)
399 elts <- mapM mkAbstractNum (ordNub lists)
398− return $ mknode "w:numbering"
399− [("xmlns:w","http://schemas.openxmlformats.org/wordprocessingml/2006/main")]
400− $ elts ++ zipWith mkNum lists [baseListId..(baseListId + length lists - 1)]
400+ return $ elts ++ zipWith mkNum lists [baseListId..(baseListId + length lists - 1)]
401
401
402mkNum :: ListMarker -> Int -> Element
402mkNum :: ListMarker -> Int -> Element
403mkNum marker numid =
403mkNum marker numid =