summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <fiddlosopher@gmail.com>2014-07-26 22:55:31 -0700
committerJohn MacFarlane <fiddlosopher@gmail.com>2014-07-26 22:55:45 -0700
commit2610de0159cb73948d8972a59bbdcbb8ebc6f468 (patch)
tree7a2d11a89d2c4b715ee49c8c5f881a9daf83e044
parentd9751f91c43ad96becb6aaf2f5abcd9c0b37754c (diff)
Docx writer: include abstract with Abstract style.
Addresses docx part of #1451.
-rw-r--r--README4
-rw-r--r--data/reference.docxbin8473 -> 8553 bytes
-rw-r--r--src/Text/Pandoc/Writers/Docx.hs9
3 files changed, 10 insertions, 3 deletions
diff --git a/README b/README
index edb490a57..40d638f92 100644
--- a/README
+++ b/README
@@ -541,8 +541,8 @@ Options affecting specific writers
for a file `reference.docx` in the user data directory (see
`--data-dir`). If this is not found either, sensible defaults will be
used. The following styles are used by pandoc: [paragraph]
- Normal, Compact, Title, Authors, Date, Heading 1, Heading 2, Heading 3,
- Heading 4, Heading 5, Block Quote, Definition Term, Definition,
+ Normal, Compact, Title, Authors, Date, Abstract, Heading 1, Heading 2,
+ Heading 3, Heading 4, Heading 5, Block Quote, Definition Term, Definition,
Body Text, Table Caption, Image Caption; [character] Default
Paragraph Font, Body Text Char, Verbatim Char, Footnote Ref,
Link.
diff --git a/data/reference.docx b/data/reference.docx
index 7efc62458..d61eadf99 100644
--- a/data/reference.docx
+++ b/data/reference.docx
Binary files differ
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
index de31e462e..3d9586348 100644
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -481,17 +481,24 @@ writeOpenXML opts (Pandoc meta blocks) = do
_ -> []
let auths = docAuthors meta
let dat = docDate meta
+ let abstract' = case lookupMeta "abstract" meta of
+ Just (MetaBlocks bs) -> bs
+ Just (MetaInlines ils) -> [Plain ils]
+ Nothing -> []
title <- withParaProp (pStyle "Title") $ blocksToOpenXML opts [Para tit | not (null tit)]
authors <- withParaProp (pStyle "Authors") $ blocksToOpenXML opts
[Para (intercalate [LineBreak] auths) | not (null auths)]
date <- withParaProp (pStyle "Date") $ blocksToOpenXML opts [Para dat | not (null dat)]
+ abstract <- if null abstract'
+ then return []
+ else withParaProp (pStyle "Abstract") $ blocksToOpenXML opts abstract'
let convertSpace (Str x : Space : Str y : xs) = Str (x ++ " " ++ y) : xs
convertSpace (Str x : Str y : xs) = Str (x ++ y) : xs
convertSpace xs = xs
let blocks' = bottomUp convertSpace $ blocks
doc' <- blocksToOpenXML opts blocks'
notes' <- reverse `fmap` gets stFootnotes
- let meta' = title ++ authors ++ date
+ let meta' = title ++ authors ++ date ++ abstract
return (meta' ++ doc', notes')
-- | Convert a list of Pandoc blocks to OpenXML.