git.iko.soy/typeable/pandoc
on master help sign in
Markdown writer: properly escape @ to avoid capture as citation.

Closes #4366.

commit3535af019722fc5086e968cc485ab8b94b76f1fd authorJohn MacFarlane <jgm@berkeley.edu> dateFri 16 Feb 2018, 15:59 (9 years ago) parentc75740e
1 file changed+7−1
src/Text/Pandoc/Writers/Markdown.hs+7−1
src/Text/Pandoc/Writers/Markdown.hs+7−1
@@ -36,7 +36,7 @@ Markdown: <http://daringfireball.net/projects/markdown/>
3636module Text.Pandoc.Writers.Markdown (writeMarkdown, writePlain) where
3737import Control.Monad.Reader
3838import Control.Monad.State.Strict
39−import Data.Char (chr, isPunctuation, isSpace, ord)
39+import Data.Char (chr, isPunctuation, isSpace, ord, isAlphaNum)
4040import Data.Default
4141import qualified Data.HashMap.Strict as H
4242import Data.List (find, group, intersperse, sortBy, stripPrefix, transpose)
@@ -286,6 +286,12 @@ escapeString opts (c:cs) =
286286 '>' | isEnabled Ext_all_symbols_escapable opts ->
287287 '\\' : '>' : escapeString opts cs
288288 | otherwise -> "&gt;" ++ escapeString opts cs
289+ '@' | isEnabled Ext_citations opts ->
290+ case cs of
291+ (d:_)
292+ | isAlphaNum d || d == '_'
293+ -> '\\':'@':escapeString opts cs
294+ _ -> '@':escapeString opts cs
289295 _ | c `elem` ['\\','`','*','_','[',']','#'] ->
290296 '\\':c:escapeString opts cs
291297 '|' | isEnabled Ext_pipe_tables opts -> '\\':'|':escapeString opts cs