@@ -283,8 +283,9 @@ makeSlideIdMap (Presentation _ slides) =
283283makeSpeakerNotesMap :: Presentation -> M.Map Int Int
284284makeSpeakerNotesMap (Presentation _ slides) =
285285 M.fromList $ (mapMaybe f $ slides `zip` [1..]) `zip` [1..]
286− where f (Slide _ _ Nothing, _) = Nothing
287− f (Slide _ _ (Just _), n) = Just n
286+ where f (Slide _ _ notes, n) = if notes == mempty
287+ then Nothing
288+ else Just n
288289
289290presentationToArchive :: PandocMonad m => WriterOptions -> Presentation -> m Archive
290291presentationToArchive opts pres = do
@@ -324,7 +325,7 @@ presentationToArchive opts pres = do
324325-- Check to see if the presentation has speaker notes. This will
325326-- influence whether we import the notesMaster template.
326327presHasSpeakerNotes :: Presentation -> Bool
327−presHasSpeakerNotes (Presentation _ slides) = any isJust $ map slideSpeakerNotes slides
328+presHasSpeakerNotes (Presentation _ slides) = not $ all (mempty ==) $ map slideSpeakerNotes slides
328329
329330curSlideHasSpeakerNotes :: PandocMonad m => P m Bool
330331curSlideHasSpeakerNotes = do
@@ -1272,42 +1273,40 @@ speakerNotesSlideNumber pgNum fieldId =
12721273 ]
12731274
12741275slideToSpeakerNotesElement :: PandocMonad m => Slide -> P m (Maybe Element)
1275−slideToSpeakerNotesElement slide
1276− | Slide _ _ mbNotes <- slide
1277− , Just (SpeakerNotes paras) <- mbNotes = do
1278− master <- getNotesMaster
1279− fieldId <- getSlideNumberFieldId master
1280− num <- slideNum slide
1281− let imgShape = speakerNotesSlideImage
1282− sldNumShape = speakerNotesSlideNumber num fieldId
1283− bodyShape <- speakerNotesBody paras
1284− return $ Just $
1285− mknode "p:notes"
1286− [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main")
1287− , ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships")
1288− , ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main")
1289− ] [ mknode "p:cSld" []
1290− [ mknode "p:spTree" []
1291− [ mknode "p:nvGrpSpPr" []
1292− [ mknode "p:cNvPr" [("id", "1"), ("name", "")] ()
1293− , mknode "p:cNvGrpSpPr" [] ()
1294− , mknode "p:nvPr" [] ()
1295− ]
1296− , mknode "p:grpSpPr" []
1297− [ mknode "a:xfrm" []
1298− [ mknode "a:off" [("x", "0"), ("y", "0")] ()
1299− , mknode "a:ext" [("cx", "0"), ("cy", "0")] ()
1300− , mknode "a:chOff" [("x", "0"), ("y", "0")] ()
1301− , mknode "a:chExt" [("cx", "0"), ("cy", "0")] ()
1302− ]
1303− ]
1304− , imgShape
1305− , bodyShape
1306− , sldNumShape
1276+slideToSpeakerNotesElement (Slide _ _ (SpeakerNotes [])) = return Nothing
1277+slideToSpeakerNotesElement slide@(Slide _ _ (SpeakerNotes paras)) = do
1278+ master <- getNotesMaster
1279+ fieldId <- getSlideNumberFieldId master
1280+ num <- slideNum slide
1281+ let imgShape = speakerNotesSlideImage
1282+ sldNumShape = speakerNotesSlideNumber num fieldId
1283+ bodyShape <- speakerNotesBody paras
1284+ return $ Just $
1285+ mknode "p:notes"
1286+ [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main")
1287+ , ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships")
1288+ , ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main")
1289+ ] [ mknode "p:cSld" []
1290+ [ mknode "p:spTree" []
1291+ [ mknode "p:nvGrpSpPr" []
1292+ [ mknode "p:cNvPr" [("id", "1"), ("name", "")] ()
1293+ , mknode "p:cNvGrpSpPr" [] ()
1294+ , mknode "p:nvPr" [] ()
13071295 ]
1296+ , mknode "p:grpSpPr" []
1297+ [ mknode "a:xfrm" []
1298+ [ mknode "a:off" [("x", "0"), ("y", "0")] ()
1299+ , mknode "a:ext" [("cx", "0"), ("cy", "0")] ()
1300+ , mknode "a:chOff" [("x", "0"), ("y", "0")] ()
1301+ , mknode "a:chExt" [("cx", "0"), ("cy", "0")] ()
1302+ ]
13081303 ]
1304+ , imgShape
1305+ , bodyShape
1306+ , sldNumShape
13091307 ]
1310−slideToSpeakerNotesElement _ = return Nothing
1308+ ]
1309+ ]
13111310
13121311-----------------------------------------------------------------------
13131312
@@ -1482,23 +1481,22 @@ slideToSpeakerNotesEntry slide = do
14821481 _ -> return Nothing
14831482
14841483slideToSpeakerNotesRelElement :: PandocMonad m => Slide -> P m (Maybe Element)
1485−slideToSpeakerNotesRelElement slide
1486− | Slide _ _ mbNotes <- slide
1487− , Just _ <- mbNotes = do
1488− idNum <- slideNum slide
1489− return $ Just $
1490− mknode "Relationships"
1491− [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")]
1492− [ mknode "Relationship" [ ("Id", "rId2")
1493− , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide")
1494− , ("Target", "../slides/slide" ++ show idNum ++ ".xml")
1495− ] ()
1496− , mknode "Relationship" [ ("Id", "rId1")
1497− , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster")
1498− , ("Target", "../notesMasters/notesMaster1.xml")
1499− ] ()
1500− ]
1501−slideToSpeakerNotesRelElement _ = return Nothing
1484+slideToSpeakerNotesRelElement (Slide _ _ (SpeakerNotes [])) = return Nothing
1485+slideToSpeakerNotesRelElement slide@(Slide _ _ _) = do
1486+ idNum <- slideNum slide
1487+ return $ Just $
1488+ mknode "Relationships"
1489+ [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")]
1490+ [ mknode "Relationship" [ ("Id", "rId2")
1491+ , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide")
1492+ , ("Target", "../slides/slide" ++ show idNum ++ ".xml")
1493+ ] ()
1494+ , mknode "Relationship" [ ("Id", "rId1")
1495+ , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster")
1496+ , ("Target", "../notesMasters/notesMaster1.xml")
1497+ ] ()
1498+ ]
1499+
15021500
15031501slideToSpeakerNotesRelEntry :: PandocMonad m => Slide -> P m (Maybe Entry)
15041502slideToSpeakerNotesRelEntry slide = do