@@ -110,6 +110,7 @@ data WriterState = WriterState{
110 , stStyleMaps :: StyleMaps
110 , stStyleMaps :: StyleMaps
111 , stFirstPara :: Bool
111 , stFirstPara :: Bool
112 , stTocTitle :: [Inline]
112 , stTocTitle :: [Inline]
113+ , stDynamicParaProps :: [String]
115defaultWriterState :: WriterState
116defaultWriterState :: WriterState
@@ -132,6 +133,7 @@ defaultWriterState = WriterState{
132 , stStyleMaps = defaultStyleMaps
133 , stStyleMaps = defaultStyleMaps
133 , stFirstPara = False
134 , stFirstPara = False
134 , stTocTitle = normalizeInlines [Str "Table of Contents"]
135 , stTocTitle = normalizeInlines [Str "Table of Contents"]
136+ , stDynamicParaProps = []
137type WS a = StateT WriterState IO a
139type WS a = StateT WriterState IO a
@@ -729,8 +731,10 @@ dynamicStyleKey = "docx-style"
729-- | Convert a Pandoc block element to OpenXML.
731-- | Convert a Pandoc block element to OpenXML.
730blockToOpenXML :: WriterOptions -> Block -> WS [Element]
732blockToOpenXML :: WriterOptions -> Block -> WS [Element]
731blockToOpenXML _ Null = return []
733blockToOpenXML _ Null = return []
734+blockToOpenXML opts (Div (_,_,kvs) bs)
732−blockToOpenXML opts (Div (_,_,kvs) bs) | Just sty <- lookup dynamicStyleKey kvs =
735+ | Just sty <- lookup dynamicStyleKey kvs = do
736+ modify $ \s -> s{stDynamicParaProps = sty : (stDynamicParaProps s)}
733− withParaPropM (pStyleM sty) $ blocksToOpenXML opts bs
737+ withParaPropM (pStyleM sty) $ blocksToOpenXML opts bs
734blockToOpenXML opts (Div (_,["references"],_) bs) = do
738blockToOpenXML opts (Div (_,["references"],_) bs) = do
735 let (hs, bs') = span isHeaderBlock bs
739 let (hs, bs') = span isHeaderBlock bs
736 header <- blocksToOpenXML opts hs
740 header <- blocksToOpenXML opts hs