@@ -36,7 +36,7 @@ Markdown: <http://daringfireball.net/projects/markdown/>
36module Text.Pandoc.Writers.Markdown (writeMarkdown, writePlain) where
36module Text.Pandoc.Writers.Markdown (writeMarkdown, writePlain) where
37import Control.Monad.Reader
37import Control.Monad.Reader
38import Control.Monad.State.Strict
38import Control.Monad.State.Strict
39−import Data.Char (chr, isPunctuation, isSpace, ord)
39+import Data.Char (chr, isPunctuation, isSpace, ord, isAlphaNum)
40import Data.Default
40import Data.Default
41import qualified Data.HashMap.Strict as H
41import qualified Data.HashMap.Strict as H
42import Data.List (find, group, intersperse, sortBy, stripPrefix, transpose)
42import Data.List (find, group, intersperse, sortBy, stripPrefix, transpose)
@@ -286,6 +286,12 @@ escapeString opts (c:cs) =
286 '>' | isEnabled Ext_all_symbols_escapable opts ->
286 '>' | isEnabled Ext_all_symbols_escapable opts ->
287 '\\' : '>' : escapeString opts cs
287 '\\' : '>' : escapeString opts cs
288 | otherwise -> ">" ++ escapeString opts cs
288 | otherwise -> ">" ++ escapeString opts cs
289+ '@' | isEnabled Ext_citations opts ->
292+ | isAlphaNum d || d == '_'
293+ -> '\\':'@':escapeString opts cs
294+ _ -> '@':escapeString opts cs
289 _ | c `elem` ['\\','`','*','_','[',']','#'] ->
295 _ | c `elem` ['\\','`','*','_','[',']','#'] ->
290 '\\':c:escapeString opts cs
296 '\\':c:escapeString opts cs
291 '|' | isEnabled Ext_pipe_tables opts -> '\\':'|':escapeString opts cs
297 '|' | isEnabled Ext_pipe_tables opts -> '\\':'|':escapeString opts cs