@@ -208,7 +208,7 @@ writeDocx opts doc@(Pandoc meta _) = do
208208 let doc' = walk fixDisplayMath doc
209209 username <- P.lookupEnv "USERNAME"
210210 utctime <- P.getCurrentTime
211− distArchive <- (toArchive . BL.fromStrict) <$> do
211+ distArchive <- toArchive . BL.fromStrict <$> do
212212 oldUserDataDir <- P.getUserDataDir
213213 P.setUserDataDir Nothing
214214 res <- P.readDefaultDataFile "reference.docx"
@@ -216,7 +216,7 @@ writeDocx opts doc@(Pandoc meta _) = do
216216 return res
217217 refArchive <- case writerReferenceDoc opts of
218218 Just f -> toArchive <$> P.readFileLazy f
219− Nothing -> (toArchive . BL.fromStrict) <$>
219+ Nothing -> toArchive . BL.fromStrict <$>
220220 P.readDataFile "reference.docx"
221221
222222 parsedDoc <- parseXml refArchive distArchive "word/document.xml"
@@ -237,7 +237,7 @@ writeDocx opts doc@(Pandoc meta _) = do
237237 >>= subtrct mbAttrMarRight
238238 >>= subtrct mbAttrMarLeft
239239 where
240− subtrct mbStr = \x -> mbStr >>= safeRead >>= (\y -> Just $ x - y)
240+ subtrct mbStr x = mbStr >>= safeRead >>= (\y -> Just $ x - y)
241241
242242 -- styles
243243 mblang <- toLang $ getLang opts meta
@@ -285,7 +285,7 @@ writeDocx opts doc@(Pandoc meta _) = do
285285 envRTL = isRTLmeta
286286 , envChangesAuthor = fromMaybe "unknown" username
287287 , envChangesDate = formatTime defaultTimeLocale "%FT%XZ" utctime
288− , envPrintWidth = maybe 420 (\x -> quot x 20) pgContentWidth
288+ , envPrintWidth = maybe 420 (`quot` 20) pgContentWidth
289289 }
290290
291291
@@ -366,7 +366,7 @@ writeDocx opts doc@(Pandoc meta _) = do
366366 map (\x -> (maybe "" ("/word/" ++) $ extractTarget x,
367367 "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml")) footers) ++
368368 map mkImageOverride imgs ++
369− map mkMediaOverride [ eRelativePath e | e <- zEntries refArchive
369+ [ mkMediaOverride (eRelativePath e) | e <- zEntries refArchive
370370 , "word/media/" `isPrefixOf` eRelativePath e ]
371371
372372 let defaultnodes = [mknode "Default"
@@ -589,8 +589,8 @@ writeDocx opts doc@(Pandoc meta _) = do
589589 mapMaybe (fmap ("word/" ++) . extractTarget)
590590 (headers ++ footers)
591591 let miscRelEntries = [ e | e <- zEntries refArchive
592− , "word/_rels/" `isPrefixOf` (eRelativePath e)
593− , ".xml.rels" `isSuffixOf` (eRelativePath e)
592+ , "word/_rels/" `isPrefixOf` eRelativePath e
593+ , ".xml.rels" `isSuffixOf` eRelativePath e
594594 , eRelativePath e /= "word/_rels/document.xml.rels"
595595 , eRelativePath e /= "word/_rels/footnotes.xml.rels" ]
596596 let otherMediaEntries = [ e | e <- zEntries refArchive
@@ -778,24 +778,24 @@ makeTOC opts = do
778778 tocTitle <- gets stTocTitle
779779 title <- withParaPropM (pStyleM "TOC Heading") (blocksToOpenXML opts [Para tocTitle])
780780 return
781− [mknode "w:sdt" [] ([
781+ [mknode "w:sdt" [] [
782782 mknode "w:sdtPr" [] (
783− mknode "w:docPartObj" [] (
783+ mknode "w:docPartObj" []
784784 [mknode "w:docPartGallery" [("w:val","Table of Contents")] (),
785785 mknode "w:docPartUnique" [] ()]
786− ) -- w:docPartObj
786+ -- w:docPartObj
787787 ), -- w:sdtPr
788788 mknode "w:sdtContent" [] (title++[
789789 mknode "w:p" [] (
790− mknode "w:r" [] ([
790+ mknode "w:r" [] [
791791 mknode "w:fldChar" [("w:fldCharType","begin"),("w:dirty","true")] (),
792792 mknode "w:instrText" [("xml:space","preserve")] tocCmd,
793793 mknode "w:fldChar" [("w:fldCharType","separate")] (),
794794 mknode "w:fldChar" [("w:fldCharType","end")] ()
795− ]) -- w:r
795+ ] -- w:r
796796 ) -- w:p
797797 ])
798− ])] -- w:sdt
798+ ]] -- w:sdt
799799
800800-- | Convert Pandoc document to two lists of
801801-- OpenXML elements (the main document and footnotes).
@@ -1030,20 +1030,17 @@ blockToOpenXML' opts (Table caption aligns widths headers rows) = do
10301030 : [ mkrow True headers' | hasHeader ] ++
10311031 map (mkrow False) rows'
10321032 )]
1033−blockToOpenXML' opts (BulletList lst) = do
1034− let marker = BulletMarker
1035− addList marker
1036− numid <- getNumId
1037− l <- asList $ concat `fmap` mapM (listItemToOpenXML opts numid) lst
1038− setFirstPara
1039− return l
1040−blockToOpenXML' opts (OrderedList (start, numstyle, numdelim) lst) = do
1041− let marker = NumberMarker numstyle numdelim start
1042− addList marker
1043− numid <- getNumId
1044− l <- asList $ concat `fmap` mapM (listItemToOpenXML opts numid) lst
1045− setFirstPara
1046− return l
1033+blockToOpenXML' opts el
1034+ | BulletList lst <- el = addOpenXMLList BulletMarker lst
1035+ | OrderedList (start, numstyle, numdelim) lst <- el
1036+ = addOpenXMLList (NumberMarker numstyle numdelim start) lst
1037+ where
1038+ addOpenXMLList marker lst = do
1039+ addList marker
1040+ numid <- getNumId
1041+ l <- asList $ concat `fmap` mapM (listItemToOpenXML opts numid) lst
1042+ setFirstPara
1043+ return l
10471044blockToOpenXML' opts (DefinitionList items) = do
10481045 l <- concat `fmap` mapM (definitionListItemToOpenXML opts) items
10491046 setFirstPara
@@ -1159,7 +1156,7 @@ inlineToOpenXML' _ (Str str) =
11591156 formattedString str
11601157inlineToOpenXML' opts Space = inlineToOpenXML opts (Str " ")
11611158inlineToOpenXML' opts SoftBreak = inlineToOpenXML opts (Str " ")
1162−inlineToOpenXML' opts (Span (_,["underline"],_) ils) = do
1159+inlineToOpenXML' opts (Span (_,["underline"],_) ils) =
11631160 withTextProp (mknode "w:u" [("w:val","single")] ()) $
11641161 inlinesToOpenXML opts ils
11651162inlineToOpenXML' _ (Span (ident,["comment-start"],kvs) ils) = do
@@ -1192,18 +1189,21 @@ inlineToOpenXML' opts (Span (ident,classes,kvs) ils) = do
11921189 Just "rtl" -> local (\env -> env { envRTL = True })
11931190 Just "ltr" -> local (\env -> env { envRTL = False })
11941191 _ -> id
1195− let off x = withTextProp (mknode x [("w:val","0")] ())
1196− let pmod = (if "csl-no-emph" `elem` classes then off "w:i" else id) .
1192+ off x = withTextProp (mknode x [("w:val","0")] ())
1193+ pmod = (if "csl-no-emph" `elem` classes then off "w:i" else id) .
11971194 (if "csl-no-strong" `elem` classes then off "w:b" else id) .
11981195 (if "csl-no-smallcaps" `elem` classes
11991196 then off "w:smallCaps"
12001197 else id)
1198+ getChangeAuthorDate = do
1199+ defaultAuthor <- asks envChangesAuthor
1200+ defaultDate <- asks envChangesDate
1201+ let author = fromMaybe defaultAuthor (lookup "author" kvs)
1202+ date = fromMaybe defaultDate (lookup "date" kvs)
1203+ return (author, date)
12011204 insmod <- if "insertion" `elem` classes
12021205 then do
1203− defaultAuthor <- asks envChangesAuthor
1204− defaultDate <- asks envChangesDate
1205− let author = fromMaybe defaultAuthor (lookup "author" kvs)
1206− date = fromMaybe defaultDate (lookup "date" kvs)
1206+ (author, date) <- getChangeAuthorDate
12071207 insId <- gets stInsId
12081208 modify $ \s -> s{stInsId = insId + 1}
12091209 return $ \f -> do
@@ -1215,10 +1215,7 @@ inlineToOpenXML' opts (Span (ident,classes,kvs) ils) = do
12151215 else return id
12161216 delmod <- if "deletion" `elem` classes
12171217 then do
1218− defaultAuthor <- asks envChangesAuthor
1219− defaultDate <- asks envChangesDate
1220− let author = fromMaybe defaultAuthor (lookup "author" kvs)
1221− date = fromMaybe defaultDate (lookup "date" kvs)
1218+ (author, date) <- getChangeAuthorDate
12221219 delId <- gets stDelId
12231220 modify $ \s -> s{stDelId = delId + 1}
12241221 return $ \f -> local (\env->env{envInDel=True}) $ do
@@ -1431,12 +1428,12 @@ defaultFootnotes :: [Element]
14311428defaultFootnotes = [ mknode "w:footnote"
14321429 [("w:type", "separator"), ("w:id", "-1")]
14331430 [ mknode "w:p" []
1434− [mknode "w:r" [] $
1431+ [mknode "w:r" []
14351432 [ mknode "w:separator" [] ()]]]
14361433 , mknode "w:footnote"
14371434 [("w:type", "continuationSeparator"), ("w:id", "0")]
14381435 [ mknode "w:p" []
1439− [ mknode "w:r" [] $
1436+ [ mknode "w:r" []
14401437 [ mknode "w:continuationSeparator" [] ()]]]]
14411438
14421439