Skip to content

Commit

Permalink
Docx writer: include abstract with Abstract style.
Browse files Browse the repository at this point in the history
Addresses docx part of #1451.
  • Loading branch information
John MacFarlane committed Jul 27, 2014
1 parent d9751f9 commit 2610de0
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 3 deletions.
4 changes: 2 additions & 2 deletions README
Expand Up @@ -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.
Expand Down
Binary file modified data/reference.docx
Binary file not shown.
9 changes: 8 additions & 1 deletion src/Text/Pandoc/Writers/Docx.hs
Expand Up @@ -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.
Expand Down

0 comments on commit 2610de0

Please sign in to comment.