@@ -45,6 +45,7 @@ import Text.Pandoc.Shared hiding (Element)
4545import Text.Pandoc.Options
4646import Text.Pandoc.Readers.TeXMath
4747import Text.Pandoc.Highlighting ( highlight )
48+import Text.Pandoc.Walk
4849import Text.Highlighting.Kate.Types ()
4950import Text.XML.Light
5051import Text.TeXMath
@@ -108,7 +109,7 @@ writeDocx :: WriterOptions -- ^ Writer options
108109 -> IO BL.ByteString
109110writeDocx opts doc@(Pandoc meta _) = do
110111 let datadir = writerUserDataDir opts
111− let doc' = bottomUp (concatMap fixDisplayMath) doc
112+ let doc' = walk fixDisplayMath doc
112113 refArchive <- liftM (toArchive . toLazy) $
113114 case writerReferenceDocx opts of
114115 Just f -> B.readFile f
@@ -810,17 +811,17 @@ stripLeadingTrailingSpace = go . reverse . go . reverse
810811 where go (Space:xs) = xs
811812 go xs = xs
812813
813−fixDisplayMath :: Block -> [Block]
814+fixDisplayMath :: Block -> Block
814815fixDisplayMath (Plain lst)
815816 | any isDisplayMath lst && not (all isDisplayMath lst) =
816817 -- chop into several paragraphs so each displaymath is its own
817− map (Plain . stripLeadingTrailingSpace) $
818+ Div ("",["math"],[]) $ map (Plain . stripLeadingTrailingSpace) $
818819 groupBy (\x y -> (isDisplayMath x && isDisplayMath y) ||
819820 not (isDisplayMath x || isDisplayMath y)) lst
820821fixDisplayMath (Para lst)
821822 | any isDisplayMath lst && not (all isDisplayMath lst) =
822823 -- chop into several paragraphs so each displaymath is its own
823− map (Para . stripLeadingTrailingSpace) $
824+ Div ("",["math"],[]) $ map (Para . stripLeadingTrailingSpace) $
824825 groupBy (\x y -> (isDisplayMath x && isDisplayMath y) ||
825826 not (isDisplayMath x || isDisplayMath y)) lst
826−fixDisplayMath x = [x]
827+fixDisplayMath x = x