From aa759c430056cb46c61ffe007e18905fbcd8f277 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 16 Feb 2024 15:39:36 -0800 Subject: [PATCH] Powerpoint writer: properly handle math in headings and tables. This ensures that paragraphs containing math are wrapped in a `mc:AlternateContent` node as required. Closes #9465. --- src/Text/Pandoc/Writers/Powerpoint/Output.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Text/Pandoc/Writers/Powerpoint/Output.hs b/src/Text/Pandoc/Writers/Powerpoint/Output.hs index 6446b3056df8..690d72c809a6 100644 --- a/src/Text/Pandoc/Writers/Powerpoint/Output.hs +++ b/src/Text/Pandoc/Writers/Powerpoint/Output.hs @@ -1054,7 +1054,8 @@ createCaption contentShapeDimensions paraElements = do [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> elements return ( 1 - , mknode "p:sp" [] [ mknode "p:nvSpPr" [] + , surroundWithMathAlternate $ + mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [("id","1"), ("name","TextBox 3")] () , mknode "p:cNvSpPr" [("txBox", "1")] () , mknode "p:nvPr" [] () @@ -1353,7 +1354,7 @@ shapeToElements layout (GraphicFrame tbls cptn) = map (bimap Just Elem) <$> graphicFrameToElements layout tbls cptn shapeToElements _ (RawOOXMLShape str) = return [(Nothing, Text (CData CDataRaw str Nothing))] -shapeToElements layout shp = do +shapeToElements layout shp@(TextBox _) = do (shapeId, element) <- shapeToElement layout shp return [(shapeId, Elem element)] @@ -1538,7 +1539,9 @@ nonBodyTextToElement layout phTypes paraElements let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> [element] - return (Just shapeIdNum, replaceNamedChildren ns "p" "txBody" [txBody] sp) + return (Just shapeIdNum, + surroundWithMathAlternate $ + replaceNamedChildren ns "p" "txBody" [txBody] sp) -- XXX: TODO | otherwise = return (Nothing, mknode "p:sp" [] ()) @@ -2008,6 +2011,7 @@ speakerNotesBody paras = do let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> elements return $ + surroundWithMathAlternate $ mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [ ("id", "3")