@@ -21,7 +21,7 @@ import Prelude
2121import Control.Monad.Except (catchError)
2222import Control.Monad.State.Strict
2323import Data.List (intersperse, isInfixOf, isPrefixOf, stripPrefix)
24−import Data.Maybe (fromMaybe)
24+import Data.Maybe (fromMaybe, maybeToList)
2525import qualified Data.Set as Set
2626import Data.Text as Text (breakOnAll, pack)
2727import Data.Text (Text)
@@ -287,6 +287,9 @@ hyperlinksToDoc (x:xs) = hyp x $$ hyperlinksToDoc xs
287287 $ inTags False "BorderColor" [("type","enumeration")] (text "Black")
288288 $$ inTags False "Destination" [("type","object")] (text $ "HyperlinkURLDestination/"++escapeColons (escapeStringForXML url)) -- HyperlinkURLDestination with more than one colon crashes CS6
289289
290+-- | Key for specifying user-defined styles
291+dynamicStyleKey :: String
292+dynamicStyleKey = "custom-style"
290293
291294-- | Convert a list of Pandoc blocks to ICML.
292295blocksToICML :: PandocMonad m => WriterOptions -> Style -> [Block] -> WS m Doc
@@ -365,7 +368,9 @@ blockToICML opts style (Table caption aligns widths headers rows) =
365368 , ("ColumnCount", show nrCols)
366369 ] (colDescs $$ cells)
367370 liftM2 ($$) tableDoc $ parStyle opts (tableCaptionName:style) caption
368−blockToICML opts style (Div _ lst) = blocksToICML opts style lst
371+blockToICML opts style (Div (_, _, kvs) lst) =
372+ let dynamicStyle = maybeToList $ lookup dynamicStyleKey kvs
373+ in blocksToICML opts (dynamicStyle <> style) lst
369374blockToICML _ _ Null = return empty
370375
371376-- | Convert a list of lists of blocks to ICML list items.
@@ -463,7 +468,9 @@ inlineToICML opts style (Link _ lst (url, title)) = do
463468 in (cont, newst)
464469inlineToICML opts style (Image attr _ target) = imageICML opts style attr target
465470inlineToICML opts style (Note lst) = footnoteToICML opts style lst
466−inlineToICML opts style (Span _ lst) = inlinesToICML opts style lst
471+inlineToICML opts style (Span (_, _, kvs) lst) =
472+ let dynamicStyle = maybeToList $ lookup dynamicStyleKey kvs
473+ in inlinesToICML opts (dynamicStyle <> style) lst
467474
468475-- | Convert a list of block elements to an ICML footnote.
469476footnoteToICML :: PandocMonad m => WriterOptions -> Style -> [Block] -> WS m Doc