@@ -481,17 +481,24 @@ writeOpenXML opts (Pandoc meta blocks) = do
482 let auths = docAuthors meta
482 let auths = docAuthors meta
483 let dat = docDate meta
483 let dat = docDate meta
484+ let abstract' = case lookupMeta "abstract" meta of
485+ Just (MetaBlocks bs) -> bs
486+ Just (MetaInlines ils) -> [Plain ils]
484 title <- withParaProp (pStyle "Title") $ blocksToOpenXML opts [Para tit | not (null tit)]
488 title <- withParaProp (pStyle "Title") $ blocksToOpenXML opts [Para tit | not (null tit)]
485 authors <- withParaProp (pStyle "Authors") $ blocksToOpenXML opts
489 authors <- withParaProp (pStyle "Authors") $ blocksToOpenXML opts
486 [Para (intercalate [LineBreak] auths) | not (null auths)]
490 [Para (intercalate [LineBreak] auths) | not (null auths)]
487 date <- withParaProp (pStyle "Date") $ blocksToOpenXML opts [Para dat | not (null dat)]
491 date <- withParaProp (pStyle "Date") $ blocksToOpenXML opts [Para dat | not (null dat)]
492+ abstract <- if null abstract'
494+ else withParaProp (pStyle "Abstract") $ blocksToOpenXML opts abstract'
488 let convertSpace (Str x : Space : Str y : xs) = Str (x ++ " " ++ y) : xs
495 let convertSpace (Str x : Space : Str y : xs) = Str (x ++ " " ++ y) : xs
489 convertSpace (Str x : Str y : xs) = Str (x ++ y) : xs
496 convertSpace (Str x : Str y : xs) = Str (x ++ y) : xs
490 convertSpace xs = xs
497 convertSpace xs = xs
491 let blocks' = bottomUp convertSpace $ blocks
498 let blocks' = bottomUp convertSpace $ blocks
492 doc' <- blocksToOpenXML opts blocks'
499 doc' <- blocksToOpenXML opts blocks'
493 notes' <- reverse `fmap` gets stFootnotes
500 notes' <- reverse `fmap` gets stFootnotes
494− let meta' = title ++ authors ++ date
501+ let meta' = title ++ authors ++ date ++ abstract
495 return (meta' ++ doc', notes')
502 return (meta' ++ doc', notes')
497-- | Convert a list of Pandoc blocks to OpenXML.
504-- | Convert a list of Pandoc blocks to OpenXML.