@@ -432,21 +432,27 @@ explicitOrImageLink :: PandocMonad m => OrgParser m (F Inlines)
432explicitOrImageLink = try $ do
432explicitOrImageLink = try $ do
434 srcF <- applyCustomLinkFormat =<< possiblyEmptyLinkTarget
434 srcF <- applyCustomLinkFormat =<< possiblyEmptyLinkTarget
435− title <- enclosedRaw (char '[') (char ']')
435+ descr <- enclosedRaw (char '[') (char ']')
436− title' <- parseFromString (mconcat <$> many inline) title
436+ titleF <- parseFromString (mconcat <$> many inline) descr
438 return $ do
438 return $ do
439 src <- srcF
439 src <- srcF
440− case cleanLinkString title of
441+ case cleanLinkString descr of
441 Just imgSrc | isImageFilename imgSrc ->
442 Just imgSrc | isImageFilename imgSrc ->
442− pure . B.link src "" $ B.image imgSrc mempty mempty
443+ return . B.link src "" $ B.image imgSrc mempty mempty
444− linkToInlinesF src =<< title'
445+ linkToInlinesF src title
446selflinkOrImage :: PandocMonad m => OrgParser m (F Inlines)
447selflinkOrImage :: PandocMonad m => OrgParser m (F Inlines)
447selflinkOrImage = try $ do
448selflinkOrImage = try $ do
448− src <- char '[' *> linkTarget <* char ']'
449+ target <- char '[' *> linkTarget <* char ']'
449− return $ linkToInlinesF src (B.str src)
450+ case cleanLinkString target of
451+ Nothing -> return $ internalLink target (B.str target)
452+ Just nonDocTgt -> returnF $
453+ if isImageFilename nonDocTgt
454+ then B.image nonDocTgt "" ""
455+ else B.link nonDocTgt "" (B.str target)
451plainLink :: PandocMonad m => OrgParser m (F Inlines)
457plainLink :: PandocMonad m => OrgParser m (F Inlines)
452plainLink = try $ do
458plainLink = try $ do
@@ -481,10 +487,8 @@ linkToInlinesF linkStr =
481 "" -> pure . B.link mempty "" -- wiki link (empty by convention)
487 "" -> pure . B.link mempty "" -- wiki link (empty by convention)
482 ('#':_) -> pure . B.link linkStr "" -- document-local fraction
488 ('#':_) -> pure . B.link linkStr "" -- document-local fraction
483 _ -> case cleanLinkString linkStr of
489 _ -> case cleanLinkString linkStr of
484− (Just cleanedLink) -> if isImageFilename cleanedLink
490+ Just extTgt -> return . B.link extTgt ""
485− then const . pure $ B.image cleanedLink "" ""
486− else pure . B.link cleanedLink ""
487− Nothing -> internalLink linkStr -- other internal link
491+ Nothing -> internalLink linkStr -- other internal link
489internalLink :: String -> Inlines -> F Inlines
493internalLink :: String -> Inlines -> F Inlines
490internalLink link title = do
494internalLink link title = do