@@ -43,6 +43,7 @@ module Text.Pandoc.Readers.Odt.StyleReader
4343, TextProperties (..)
4444, ParaProperties (..)
4545, VerticalTextPosition (..)
46+, ParaBreak (..)
4647, ListItemNumberFormat (..)
4748, ListLevel
4849, ListStyle (..)
@@ -273,6 +274,7 @@ instance Default TextProperties where
273274data ParaProperties = PropP { paraNumbering :: ParaNumbering
274275 , indentation :: LengthOrPercent
275276 , margin_left :: LengthOrPercent
277+ , page_break :: ParaBreak
276278 }
277279 deriving ( Eq, Show )
278280
@@ -280,6 +282,7 @@ instance Default ParaProperties where
280282 def = PropP { paraNumbering = NumberingNone
281283 , indentation = def
282284 , margin_left = def
285+ , page_break = AutoNone
283286 }
284287
285288----
@@ -314,6 +317,9 @@ instance Lookupable UnderlineMode where
314317data ParaNumbering = NumberingNone | NumberingKeep | NumberingRestart Int
315318 deriving ( Eq, Show )
316319
320+data ParaBreak = AutoNone | PageBefore | PageAfter | PageBoth
321+ deriving ( Eq, Show )
322+
317323data LengthOrPercent = LengthValueMM Int | PercentValue Int
318324 deriving ( Eq, Show )
319325
@@ -533,16 +539,20 @@ readLineMode modeAttr styleAttr = proc x -> do
533539readParaProperties :: StyleReader _x ParaProperties
534540readParaProperties =
535541 executeIn NsStyle "paragraph-properties" $ liftAsSuccess
536− ( liftA3 PropP
542+ ( liftA4 PropP
537543 ( liftA2 readNumbering
538− ( isSet' NsText "number-lines" )
539− ( readAttr' NsText "line-number" )
544+ ( isSet' NsText "number-lines" )
545+ ( readAttr' NsText "line-number" )
540546 )
541547 ( liftA2 readIndentation
542− ( isSetWithDefault NsStyle "auto-text-indent" False )
543− ( getAttr NsXSL_FO "text-indent" )
548+ ( isSetWithDefault NsStyle "auto-text-indent" False )
549+ ( getAttr NsXSL_FO "text-indent" )
550+ )
551+ ( getAttr NsXSL_FO "margin-left" )
552+ ( liftA2 readPageBreak
553+ ( findAttrWithDefault NsXSL_FO "break-before" "auto" )
554+ ( findAttrWithDefault NsXSL_FO "break-after" "auto" )
544555 )
545− ( getAttr NsXSL_FO "margin-left" )
546556 )
547557 where readNumbering (Just True) (Just n) = NumberingRestart n
548558 readNumbering (Just True) _ = NumberingKeep
@@ -551,6 +561,11 @@ readParaProperties =
551561 readIndentation False indent = indent
552562 readIndentation True _ = def
553563
564+ readPageBreak "page" "page" = PageBoth
565+ readPageBreak "page" _ = PageBefore
566+ readPageBreak _ "page" = PageAfter
567+ readPageBreak _ _ = AutoNone
568+
554569----
555570-- List styles
556571----