@@ -43,7 +43,7 @@ import Text.Pandoc.BCP47 (Lang (..), renderLang)
4343import Text.Pandoc.Builder
4444import Text.Pandoc.Class (PandocMonad, PandocPure, getResourcePath, lookupEnv,
4545 readFileFromDirs, report, setResourcePath,
46− setTranslations, translateTerm, trace)
46+ setTranslations, translateTerm, trace, fileExists)
4747import Text.Pandoc.Error (PandocError ( PandocParseError, PandocParsecError))
4848import Text.Pandoc.Highlighting (fromListingsLanguage, languagesByExtension)
4949import Text.Pandoc.ImageSize (numUnit, showFl)
@@ -205,11 +205,21 @@ mkImage options src = do
205205 $ filter (\(k,_) -> k `elem` ["width", "height"]) options
206206 let attr = ("",[], kvs)
207207 let alt = str "image"
208− case takeExtension src of
209− "" -> do
210− defaultExt <- getOption readerDefaultImageExtension
211− return $ imageWith attr (addExtension src defaultExt) "" alt
212− _ -> return $ imageWith attr src "" alt
208+ defaultExt <- getOption readerDefaultImageExtension
209+ let exts' = [".pdf", ".png", ".jpg", ".mps", ".jpeg", ".jbig2", ".jb2"]
210+ let exts = exts' ++ map (map toUpper) exts'
211+ let findFile s [] = return s
212+ findFile s (e:es) = do
213+ let s' = addExtension s e
214+ exists <- fileExists s'
215+ if exists
216+ then return s'
217+ else findFile s es
218+ src' <- case takeExtension src of
219+ "" | not (null defaultExt) -> return $ addExtension src defaultExt
220+ | otherwise -> findFile src exts
221+ _ -> return src
222+ return $ imageWith attr src' "" alt
213223
214224doxspace :: PandocMonad m => LP m Inlines
215225doxspace =