@@ -43,6 +43,7 @@ module Text.Pandoc.Readers.Odt.StyleReader
43, TextProperties (..)
43, TextProperties (..)
44, ParaProperties (..)
44, ParaProperties (..)
45, VerticalTextPosition (..)
45, VerticalTextPosition (..)
46, ListItemNumberFormat (..)
47, ListItemNumberFormat (..)
47, ListLevel
48, ListLevel
48, ListStyle (..)
49, ListStyle (..)
@@ -273,6 +274,7 @@ instance Default TextProperties where
273data ParaProperties = PropP { paraNumbering :: ParaNumbering
274data ParaProperties = PropP { paraNumbering :: ParaNumbering
274 , indentation :: LengthOrPercent
275 , indentation :: LengthOrPercent
275 , margin_left :: LengthOrPercent
276 , margin_left :: LengthOrPercent
277+ , page_break :: ParaBreak
277 deriving ( Eq, Show )
279 deriving ( Eq, Show )
@@ -280,6 +282,7 @@ instance Default ParaProperties where
280 def = PropP { paraNumbering = NumberingNone
282 def = PropP { paraNumbering = NumberingNone
281 , indentation = def
283 , indentation = def
282 , margin_left = def
284 , margin_left = def
285+ , page_break = AutoNone
@@ -314,6 +317,9 @@ instance Lookupable UnderlineMode where
314data ParaNumbering = NumberingNone | NumberingKeep | NumberingRestart Int
317data ParaNumbering = NumberingNone | NumberingKeep | NumberingRestart Int
315 deriving ( Eq, Show )
318 deriving ( Eq, Show )
320+data ParaBreak = AutoNone | PageBefore | PageAfter | PageBoth
321+ deriving ( Eq, Show )
317data LengthOrPercent = LengthValueMM Int | PercentValue Int
323data LengthOrPercent = LengthValueMM Int | PercentValue Int
318 deriving ( Eq, Show )
324 deriving ( Eq, Show )
@@ -533,16 +539,20 @@ readLineMode modeAttr styleAttr = proc x -> do
533readParaProperties :: StyleReader _x ParaProperties
539readParaProperties :: StyleReader _x ParaProperties
534readParaProperties =
540readParaProperties =
535 executeIn NsStyle "paragraph-properties" $ liftAsSuccess
541 executeIn NsStyle "paragraph-properties" $ liftAsSuccess
536− ( liftA3 PropP
542+ ( liftA4 PropP
537 ( liftA2 readNumbering
543 ( liftA2 readNumbering
538− ( isSet' NsText "number-lines" )
544+ ( isSet' NsText "number-lines" )
539− ( readAttr' NsText "line-number" )
545+ ( readAttr' NsText "line-number" )
541 ( liftA2 readIndentation
547 ( liftA2 readIndentation
542− ( isSetWithDefault NsStyle "auto-text-indent" False )
548+ ( isSetWithDefault NsStyle "auto-text-indent" False )
543− ( getAttr NsXSL_FO "text-indent" )
549+ ( getAttr NsXSL_FO "text-indent" )
551+ ( getAttr NsXSL_FO "margin-left" )
552+ ( liftA2 readPageBreak
553+ ( findAttrWithDefault NsXSL_FO "break-before" "auto" )
554+ ( findAttrWithDefault NsXSL_FO "break-after" "auto" )
545− ( getAttr NsXSL_FO "margin-left" )
547 where readNumbering (Just True) (Just n) = NumberingRestart n
557 where readNumbering (Just True) (Just n) = NumberingRestart n
548 readNumbering (Just True) _ = NumberingKeep
558 readNumbering (Just True) _ = NumberingKeep
@@ -551,6 +561,11 @@ readParaProperties =
551 readIndentation False indent = indent
561 readIndentation False indent = indent
552 readIndentation True _ = def
562 readIndentation True _ = def
564+ readPageBreak "page" "page" = PageBoth
565+ readPageBreak "page" _ = PageBefore
566+ readPageBreak _ "page" = PageAfter
567+ readPageBreak _ _ = AutoNone
555-- List styles
570-- List styles