@@ -30,7 +30,7 @@ Conversion of 'Pandoc' documents to docx.
3030-}
3131module Text.Pandoc.Writers.Docx ( writeDocx ) where
3232import Data.Maybe (fromMaybe)
33−import Data.List ( intercalate, groupBy, isPrefixOf )
33+import Data.List ( intercalate, isPrefixOf )
3434import qualified Data.ByteString as B
3535import qualified Data.ByteString.Lazy as BL
3636import qualified Data.ByteString.Lazy.Char8 as BL8
@@ -43,6 +43,7 @@ import Text.Pandoc.Definition
4343import Text.Pandoc.Generic
4444import Text.Pandoc.ImageSize
4545import Text.Pandoc.Shared hiding (Element)
46+import Text.Pandoc.Writers.Shared (fixDisplayMath)
4647import Text.Pandoc.Options
4748import Text.Pandoc.Readers.TeXMath
4849import Text.Pandoc.Highlighting ( highlight )
@@ -817,27 +818,3 @@ parseXml refArchive relpath =
817818 case (findEntryByPath relpath refArchive >>= parseXMLDoc . UTF8.toStringLazy . fromEntry) of
818819 Just d -> return d
819820 Nothing -> fail $ relpath ++ " missing in reference docx"
820−
821−isDisplayMath :: Inline -> Bool
822−isDisplayMath (Math DisplayMath _) = True
823−isDisplayMath _ = False
824−
825−stripLeadingTrailingSpace :: [Inline] -> [Inline]
826−stripLeadingTrailingSpace = go . reverse . go . reverse
827− where go (Space:xs) = xs
828− go xs = xs
829−
830−fixDisplayMath :: Block -> Block
831−fixDisplayMath (Plain lst)
832− | any isDisplayMath lst && not (all isDisplayMath lst) =
833− -- chop into several paragraphs so each displaymath is its own
834− Div ("",["math"],[]) $ map (Plain . stripLeadingTrailingSpace) $
835− groupBy (\x y -> (isDisplayMath x && isDisplayMath y) ||
836− not (isDisplayMath x || isDisplayMath y)) lst
837−fixDisplayMath (Para lst)
838− | any isDisplayMath lst && not (all isDisplayMath lst) =
839− -- chop into several paragraphs so each displaymath is its own
840− Div ("",["math"],[]) $ map (Para . stripLeadingTrailingSpace) $
841− groupBy (\x y -> (isDisplayMath x && isDisplayMath y) ||
842− not (isDisplayMath x || isDisplayMath y)) lst
843−fixDisplayMath x = x