@@ -43,7 +43,11 @@ import Text.Pandoc.Writers.Markdown.Types (MarkdownVariant(..),
4343-- | Escape special characters for Markdown.
4444escapeText :: WriterOptions -> Text -> Text
4545escapeText opts = T.pack . go . T.unpack
46− where
46+ where
47+ startsWithSpace (' ':_) = True
48+ startsWithSpace ('\t':_) = True
49+ startsWithSpace [] = True
50+ startsWithSpace _ = False
4751 go [] = []
4852 go (c:cs) =
4953 case c of
@@ -59,7 +63,10 @@ escapeText opts = T.pack . go . T.unpack
5963 | isAlphaNum d || d == '_' || d == '{'
6064 -> '\\':'@':go cs
6165 _ -> '@':go cs
62− _ | c `elem` ['\\','`','*','_','[',']','#'] ->
66+ '#' | isEnabled Ext_space_in_atx_header opts
67+ , startsWithSpace cs
68+ -> '\\':'#':go cs
69+ _ | c `elem` ['\\','`','*','_','[',']'] ->
6370 '\\':c:go cs
6471 '|' | isEnabled Ext_pipe_tables opts -> '\\':'|':go cs
6572 '^' | isEnabled Ext_superscript opts -> '\\':'^':go cs
@@ -81,6 +88,8 @@ escapeText opts = T.pack . go . T.unpack
8188 | isEnabled Ext_intraword_underscores opts
8289 , isAlphaNum c
8390 , isAlphaNum x -> c : '_' : x : go xs
91+ '#':xs -> c : '#' : go xs
92+ '>':xs -> c : '>' : go xs
8493 _ -> c : go cs
8594
8695attrsToMarkdown :: Attr -> Doc Text