@@ -469,12 +469,12 @@ writeDocx opts doc = do
469469 -- adds references to footnotes or endnotes we don't have...
470470 -- we do, however, copy some settings over from reference
471471 let settingsPath = "word/settings.xml"
472− settingsList = [ "w:autoHyphenation"
473− , "w:consecutiveHyphenLimit"
474− , "w:hyphenationZone"
475− , "w:doNotHyphenateCap"
476− , "w:evenAndOddHeaders"
477− , "w:proofState"
472+ settingsList = [ "autoHyphenation"
473+ , "consecutiveHyphenLimit"
474+ , "hyphenationZone"
475+ , "doNotHyphenateCap"
476+ , "evenAndOddHeaders"
477+ , "proofState"
478478 ]
479479 settingsEntry <- copyChildren refArchive distArchive settingsPath epochtime settingsList
480480
@@ -577,16 +577,17 @@ copyChildren :: (PandocMonad m)
577577copyChildren refArchive distArchive path timestamp elNames = do
578578 ref <- parseXml refArchive distArchive path
579579 dist <- parseXml distArchive distArchive path
580+ let elsToCopy =
581+ map cleanElem $ filterChildrenName (\e -> qName e `elem` elNames) ref
582+ let elsToKeep =
583+ [e | Elem e <- elContent dist, not (any (hasSameNameAs e) elsToCopy)]
580584 return $ toEntry path timestamp $ renderXml dist{
581− elContent = elContent dist ++ copyContent ref
585+ elContent = map Elem elsToKeep ++ map Elem elsToCopy
582586 }
583587 where
584− strName QName{qName=name, qPrefix=prefix}
585− | Just p <- prefix = p <> ":" <> name
586− | otherwise = name
587− shouldCopy = (`elem` elNames) . strName
588− cleanElem el@Element{elName=name} = Elem el{elName=name{qURI=Nothing}}
589− copyContent = map cleanElem . filterChildrenName shouldCopy
588+ hasSameNameAs (Element {elName = n1}) (Element {elName = n2}) =
589+ qName n1 == qName n2
590+ cleanElem el@Element{elName=name} = el{elName=name{qURI=Nothing}}
590591
591592-- this is the lowest number used for a list numId
592593baseListId :: Int