summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers/OpenDocument.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-12-28 22:30:25 -0700
committerGitHub <noreply@github.com>2017-12-28 22:30:25 -0700
commitac8e72a95d3a4f9f6988bcf4b1f12cb14ef7ec24 (patch)
tree96f898af9822da31b559695d4123e3483b9fbbc9 /src/Text/Pandoc/Writers/OpenDocument.hs
parentbc8b4de3e81971eb0f05ed02b7b2ebaacc3d1959 (diff)
parent19bab48dccd670e272a6f949321de5413eb96136 (diff)
Merge pull request #4170 from oltolm/opendocument
improve formatting of formulas in OpenDocument
Diffstat (limited to 'src/Text/Pandoc/Writers/OpenDocument.hs')
-rw-r--r--src/Text/Pandoc/Writers/OpenDocument.hs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
index 8aa19dbb5..dc7d14d05 100644
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -173,6 +173,24 @@ inTextStyle d = do
return $ inTags False
"text:span" [("text:style-name",styleName)] d
+formulaStyles :: [Doc]
+formulaStyles = [formulaStyle InlineMath, formulaStyle DisplayMath]
+
+formulaStyle :: MathType -> Doc
+formulaStyle mt = inTags False "style:style"
+ [("style:name", if mt == InlineMath then "fr1" else "fr2")
+ ,("style:family", "graphic")
+ ,("style:parent-style-name", "Formula")]
+ $ selfClosingTag "style:graphic-properties" $ if mt == InlineMath then
+ [("style:vertical-pos", "middle")
+ ,("style:vertical-rel", "text")]
+ else
+ [("style:vertical-pos", "middle")
+ ,("style:vertical-rel", "paragraph-content")
+ ,("style:horizontal-pos", "center")
+ ,("style:horizontal-rel", "paragraph-content")
+ ,("style:wrap", "none")]
+
inHeaderTags :: PandocMonad m => Int -> Doc -> OD m Doc
inHeaderTags i d =
return $ inTags False "text:h" [ ("text:style-name", "Heading_20_" ++ show i)
@@ -211,7 +229,7 @@ writeOpenDocument opts (Pandoc meta blocks) = do
meta
b <- render' `fmap` blocksToOpenDocument opts blocks
return (b, m)
- let styles = stTableStyles s ++ stParaStyles s ++
+ let styles = stTableStyles s ++ stParaStyles s ++ formulaStyles ++
map snd (sortBy (flip (comparing fst)) (
Map.elems (stTextStyles s)))
listStyle (n,l) = inTags True "text:list-style"