@@ -163,8 +163,7 @@ copyFileToArchive arch fp = do
163163 Just e -> return $ addEntryToArchive e arch
164164
165165inheritedPatterns :: [Pattern]
166−inheritedPatterns = map compile [ "_rels/.rels"
167− , "docProps/app.xml"
166+inheritedPatterns = map compile [ "docProps/app.xml"
168167 , "docProps/core.xml"
169168 , "ppt/slideLayouts/slideLayout*.xml"
170169 , "ppt/slideLayouts/_rels/slideLayout*.xml.rels"
@@ -192,24 +191,23 @@ patternsToFilePaths pats = concat <$> mapM patternToFilePaths pats
192191-- Here are the files we'll require to make a Powerpoint document. If
193192-- any of these are missing, we should error out of our build.
194193requiredFiles :: [FilePath]
195−requiredFiles = [ "_rels/.rels"
196− , "docProps/app.xml"
197− , "docProps/core.xml"
198− , "ppt/presProps.xml"
199− , "ppt/slideLayouts/slideLayout1.xml"
200− , "ppt/slideLayouts/_rels/slideLayout1.xml.rels"
201− , "ppt/slideLayouts/slideLayout2.xml"
202− , "ppt/slideLayouts/_rels/slideLayout2.xml.rels"
203− , "ppt/slideLayouts/slideLayout3.xml"
204− , "ppt/slideLayouts/_rels/slideLayout3.xml.rels"
205− , "ppt/slideLayouts/slideLayout4.xml"
206− , "ppt/slideLayouts/_rels/slideLayout4.xml.rels"
207− , "ppt/slideMasters/slideMaster1.xml"
208− , "ppt/slideMasters/_rels/slideMaster1.xml.rels"
209− , "ppt/theme/theme1.xml"
210− , "ppt/viewProps.xml"
211− , "ppt/tableStyles.xml"
212− ]
194+requiredFiles = [ "docProps/app.xml"
195+ , "docProps/core.xml"
196+ , "ppt/presProps.xml"
197+ , "ppt/slideLayouts/slideLayout1.xml"
198+ , "ppt/slideLayouts/_rels/slideLayout1.xml.rels"
199+ , "ppt/slideLayouts/slideLayout2.xml"
200+ , "ppt/slideLayouts/_rels/slideLayout2.xml.rels"
201+ , "ppt/slideLayouts/slideLayout3.xml"
202+ , "ppt/slideLayouts/_rels/slideLayout3.xml.rels"
203+ , "ppt/slideLayouts/slideLayout4.xml"
204+ , "ppt/slideLayouts/_rels/slideLayout4.xml.rels"
205+ , "ppt/slideMasters/slideMaster1.xml"
206+ , "ppt/slideMasters/_rels/slideMaster1.xml.rels"
207+ , "ppt/theme/theme1.xml"
208+ , "ppt/viewProps.xml"
209+ , "ppt/tableStyles.xml"
210+ ]
213211
214212
215213presentationToArchiveP :: PandocMonad m => Presentation -> P m Archive
@@ -226,6 +224,9 @@ presentationToArchiveP p@(Presentation slides) = do
226224 )
227225
228226 newArch' <- foldM copyFileToArchive emptyArchive filePaths
227+ -- we make this ourself in case there's something unexpected in the
228+ -- one in the reference doc.
229+ relsEntry <- topLevelRelsEntry
229230 -- presentation entry and rels. We have to do the rels first to make
230231 -- sure we know the correct offset for the rIds.
231232 presEntry <- presentationToPresEntry p
@@ -241,7 +242,7 @@ presentationToArchiveP p@(Presentation slides) = do
241242 slideEntries ++
242243 slideRelEntries ++
243244 mediaEntries ++
244− [contentTypesEntry, presEntry, presRelsEntry]
245+ [contentTypesEntry, relsEntry, presEntry, presRelsEntry]
245246
246247presentationToArchive :: PandocMonad m => WriterOptions -> Presentation -> m Archive
247248presentationToArchive opts pres = do
@@ -1147,6 +1148,27 @@ presentationToRels (Presentation slides) = do
11471148
11481149 return $ mySlideRels ++ relsWithoutSlides'
11491150
1151+-- We make this ourselves, in case there's a thumbnail in the one from
1152+-- the template.
1153+topLevelRels :: [Relationship]
1154+topLevelRels =
1155+ [ Relationship { relId = 1
1156+ , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
1157+ , relTarget = "ppt/presentation.xml"
1158+ }
1159+ , Relationship { relId = 2
1160+ , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"
1161+ , relTarget = "docProps/core.xml"
1162+ }
1163+ , Relationship { relId = 3
1164+ , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/extended-properties"
1165+ , relTarget = "docProps/app.xml"
1166+ }
1167+ ]
1168+
1169+topLevelRelsEntry :: PandocMonad m => P m Entry
1170+topLevelRelsEntry = elemToEntry "_rels/.rels" $ relsToElement topLevelRels
1171+
11501172relToElement :: Relationship -> Element
11511173relToElement rel = mknode "Relationship" [ ("Id", "rId" ++ (show $ relId rel))
11521174 , ("Type", relType rel)