@@ -1542,11 +1542,13 @@ regLink constructor lab = try $ do
1542referenceLink :: (String -> String -> Inlines -> Inlines)
1542referenceLink :: (String -> String -> Inlines -> Inlines)
1543 -> (F Inlines, String) -> MarkdownParser (F Inlines)
1543 -> (F Inlines, String) -> MarkdownParser (F Inlines)
1544referenceLink constructor (lab, raw) = do
1544referenceLink constructor (lab, raw) = do
1545+ sp <- (True <$ lookAhead (char ' ')) <|> return False
1545− (ref,raw') <- try (optional (char ' ') >>
1546+ (ref,raw') <- try
1546− optional (newline >> skipSpaces) >>
1547+ (skipSpaces >> optional (newline >> skipSpaces) >> reference)
1547− reference) <|> return (mempty, "")
1548+ <|> return (mempty, "")
1548 let labIsRef = raw' == "" || raw' == "[]"
1549 let labIsRef = raw' == "" || raw' == "[]"
1549 let key = toKey $ if labIsRef then raw else raw'
1550 let key = toKey $ if labIsRef then raw else raw'
1551+ parsedRaw <- parseFromString (mconcat <$> many inline) raw'
1550 let dropRB (']':xs) = xs
1552 let dropRB (']':xs) = xs
1551 dropRB xs = xs
1553 dropRB xs = xs
1552 let dropLB ('[':xs) = xs
1554 let dropLB ('[':xs) = xs
@@ -1560,13 +1562,16 @@ referenceLink constructor (lab, raw) = do
1560 case M.lookup key keys of
1562 case M.lookup key keys of
1561 Nothing -> do
1563 Nothing -> do
1562 headers <- asksF stateHeaders
1564 headers <- asksF stateHeaders
1563− let ref' = runF (if labIsRef then lab else ref) defaultParserState
1565+ ref' <- if labIsRef then lab else ref
1564− let makeFallback x = B.str "[" <> x <> B.str "]" <> B.str raw'
1566+ parsedRaw' <- parsedRaw
1567+ fallback' <- fallback
1568+ let fallback'' = B.str "[" <> fallback' <> B.str "]" <>
1569+ (if sp && not (null raw) then B.space else mempty) <> parsedRaw'
1565 if implicitHeaderRefs
1570 if implicitHeaderRefs
1566 then case M.lookup ref' headers of
1571 then case M.lookup ref' headers of
1567 Just ident -> constructor ('#':ident) "" <$> lab
1572 Just ident -> constructor ('#':ident) "" <$> lab
1568− Nothing -> makeFallback <$> fallback
1573+ Nothing -> return fallback''
1569− else makeFallback <$> fallback
1574+ else return fallback''
1570 Just (src,tit) -> constructor src tit <$> lab
1575 Just (src,tit) -> constructor src tit <$> lab
1572bareURL :: MarkdownParser (F Inlines)
1577bareURL :: MarkdownParser (F Inlines)