@@ -437,10 +437,10 @@ getContentShapeSize ns layout master
437437getContentShapeSize _ _ _ = throwError $ PandocSomeError
438438 "Attempted to find content shape size in non-layout"
439439
440−buildSpTree :: NameSpaces -> Element -> [Element] -> Element
440+buildSpTree :: NameSpaces -> Element -> [Content] -> Element
441441buildSpTree ns spTreeElem newShapes =
442442 emptySpTreeElem { elContent = newContent }
443− where newContent = elContent emptySpTreeElem <> map Elem newShapes
443+ where newContent = elContent emptySpTreeElem <> newShapes
444444 emptySpTreeElem = spTreeElem { elContent = filter fn (elContent spTreeElem) }
445445 fn :: Content -> Bool
446446 fn (Elem e) = isElem ns "p" "nvGrpSpPr" e ||
@@ -744,8 +744,8 @@ makePicElements layout picProps mInfo alt = do
744744 else return [picShape]
745745
746746
747−paraElemToElements :: PandocMonad m => ParaElem -> P m [Element]
748−paraElemToElements Break = return [mknode "a:br" [] ()]
747+paraElemToElements :: PandocMonad m => ParaElem -> P m [Content]
748+paraElemToElements Break = return [Elem $ mknode "a:br" [] ()]
749749paraElemToElements (Run rpr s) = do
750750 sizeAttrs <- fontSizeAttributes rpr
751751 let attrs = sizeAttrs <>
@@ -801,19 +801,20 @@ paraElemToElements (Run rpr s) = do
801801 let codeContents =
802802 [mknode "a:latin" [("typeface", T.unpack codeFont)] () | rPropCode rpr]
803803 let propContents = linkProps <> colorContents <> codeContents
804− return [mknode "a:r" [] [ mknode "a:rPr" attrs propContents
805− , mknode "a:t" [] $ T.unpack s
806− ]]
804+ return [Elem $ mknode "a:r" [] [ mknode "a:rPr" attrs propContents
805+ , mknode "a:t" [] $ T.unpack s
806+ ]]
807807paraElemToElements (MathElem mathType texStr) = do
808808 isInSpkrNotes <- asks envInSpeakerNotes
809809 if isInSpkrNotes
810810 then paraElemToElements $ Run def $ unTeXString texStr
811811 else do res <- convertMath writeOMML mathType (unTeXString texStr)
812812 case res of
813− Right r -> return [mknode "a14:m" [] $ addMathInfo r]
813+ Right r -> return [Elem $ mknode "a14:m" [] $ addMathInfo r]
814814 Left (Str s) -> paraElemToElements (Run def s)
815815 Left _ -> throwError $ PandocShouldNeverHappenError "non-string math fallback"
816−paraElemToElements (RawOOXMLParaElem str) = return [ x | Elem x <- parseXML str ]
816+paraElemToElements (RawOOXMLParaElem str) = return
817+ [Text (CData CDataRaw (T.unpack str) Nothing)]
817818
818819
819820-- This is a bit of a kludge -- really requires adding an option to
@@ -875,8 +876,9 @@ paragraphToElement par = do
875876 [mknode "a:buAutoNum" (autoNumAttrs attrs') ()]
876877 Nothing -> [mknode "a:buNone" [] ()]
877878 )
878− paras <- concat <$> mapM paraElemToElements (paraElems par)
879− return $ mknode "a:p" [] $ [mknode "a:pPr" attrs props] <> paras
879+ paras <- mapM paraElemToElements (paraElems par)
880+ return $ mknode "a:p" [] $
881+ [Elem $ mknode "a:pPr" attrs props] <> concat paras
880882
881883shapeToElement :: PandocMonad m => Element -> Shape -> P m Element
882884shapeToElement layout (TextBox paras)
@@ -896,21 +898,22 @@ shapeToElement layout (TextBox paras)
896898-- GraphicFrame and Pic should never reach this.
897899shapeToElement _ _ = return $ mknode "p:sp" [] ()
898900
899−shapeToElements :: PandocMonad m => Element -> Shape -> P m [Element]
901+shapeToElements :: PandocMonad m => Element -> Shape -> P m [Content]
900902shapeToElements layout (Pic picProps fp alt) = do
901903 mInfo <- registerMedia fp alt
902904 case mInfoExt mInfo of
903− Just _ ->
905+ Just _ -> map Elem <$>
904906 makePicElements layout picProps mInfo alt
905907 Nothing -> shapeToElements layout $ TextBox [Paragraph def alt]
906−shapeToElements layout (GraphicFrame tbls cptn) =
908+shapeToElements layout (GraphicFrame tbls cptn) = map Elem <$>
907909 graphicFrameToElements layout tbls cptn
908−shapeToElements _ (RawOOXMLShape str) = return [ x | Elem x <- parseXML str ]
910+shapeToElements _ (RawOOXMLShape str) = return
911+ [Text (CData CDataRaw (T.unpack str) Nothing)]
909912shapeToElements layout shp = do
910913 element <- shapeToElement layout shp
911− return [element]
914+ return [Elem element]
912915
913−shapesToElements :: PandocMonad m => Element -> [Shape] -> P m [Element]
916+shapesToElements :: PandocMonad m => Element -> [Shape] -> P m [Content]
914917shapesToElements layout shps =
915918 concat <$> mapM (shapeToElements layout) shps
916919
@@ -1083,7 +1086,7 @@ contentToElement layout hdrShape shapes
10831086 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10841087 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
10851088 element <- nonBodyTextToElement layout [PHType "title"] hdrShape
1086− let hdrShapeElements = [element | not (null hdrShape)]
1089+ let hdrShapeElements = [Elem element | not (null hdrShape)]
10871090 contentElements <- local
10881091 (\env -> env {envContentType = NormalContent})
10891092 (shapesToElements layout shapes)
@@ -1096,7 +1099,7 @@ twoColumnToElement layout hdrShape shapesL shapesR
10961099 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10971100 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
10981101 element <- nonBodyTextToElement layout [PHType "title"] hdrShape
1099− let hdrShapeElements = [element | not (null hdrShape)]
1102+ let hdrShapeElements = [Elem element | not (null hdrShape)]
11001103 contentElementsL <- local
11011104 (\env -> env {envContentType =TwoColumnLeftContent})
11021105 (shapesToElements layout shapesL)
@@ -1105,7 +1108,8 @@ twoColumnToElement layout hdrShape shapesL shapesR
11051108 (shapesToElements layout shapesR)
11061109 -- let contentElementsL' = map (setIdx ns "1") contentElementsL
11071110 -- contentElementsR' = map (setIdx ns "2") contentElementsR
1108− return $ buildSpTree ns spTree (hdrShapeElements <> contentElementsL <> contentElementsR)
1111+ return $ buildSpTree ns spTree $
1112+ hdrShapeElements <> contentElementsL <> contentElementsR
11091113twoColumnToElement _ _ _ _= return $ mknode "p:sp" [] ()
11101114
11111115
@@ -1115,7 +1119,7 @@ titleToElement layout titleElems
11151119 , Just cSld <- findChild (elemName ns "p" "cSld") layout
11161120 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
11171121 element <- nonBodyTextToElement layout [PHType "title", PHType "ctrTitle"] titleElems
1118− let titleShapeElements = [element | not (null titleElems)]
1122+ let titleShapeElements = [Elem element | not (null titleElems)]
11191123 return $ buildSpTree ns spTree titleShapeElements
11201124titleToElement _ _ = return $ mknode "p:sp" [] ()
11211125
@@ -1135,7 +1139,8 @@ metadataToElement layout titleElems subtitleElems authorsElems dateElems
11351139 dateShapeElements <- if null dateElems
11361140 then return []
11371141 else sequence [nonBodyTextToElement layout [PHType "dt"] dateElems]
1138− return $ buildSpTree ns spTree (titleShapeElements <> subtitleShapeElements <> dateShapeElements)
1142+ return . buildSpTree ns spTree . map Elem $
1143+ (titleShapeElements <> subtitleShapeElements <> dateShapeElements)
11391144metadataToElement _ _ _ _ _ = return $ mknode "p:sp" [] ()
11401145
11411146slideToElement :: PandocMonad m => Slide -> P m Element