From 6956176c193538cac65d1d404da0a05c8fc674c3 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 27 Dec 2025 23:10:22 -0700 Subject: AsciiDoc writer: use doubled delims in more contexts. Also escape the `#` character. Closes #11362. An alternative solution, raised in #11362, would be to rely less on escaping and simply always use doubled delimiters. However, there would still be a need for escaping, since one might use a literal `##` (for example)> --- src/Text/Pandoc/Writers/AsciiDoc.hs | 5 ++++- test/command/11362.md | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/command/11362.md diff --git a/src/Text/Pandoc/Writers/AsciiDoc.hs b/src/Text/Pandoc/Writers/AsciiDoc.hs index aca0a4241..55c3f724a 100644 --- a/src/Text/Pandoc/Writers/AsciiDoc.hs +++ b/src/Text/Pandoc/Writers/AsciiDoc.hs @@ -163,6 +163,7 @@ escapeString context t needsEscape '+' = True needsEscape '`' = True needsEscape '*' = True + needsEscape '#' = True needsEscape '_' = True needsEscape '<' = True needsEscape '>' = True @@ -593,7 +594,9 @@ inlineListToAsciiDoc opts lst = do _ -> False isSpacy Start (Str xs) | Just (c, _) <- T.uncons xs = isPunctuation c || isSpace c - isSpacy _ _ = True + isSpacy End (Link{}) = True + isSpacy End (Image{}) = True + isSpacy _ _ = False setIntraword :: PandocMonad m => Bool -> ADW m () setIntraword b = modify $ \st -> st{ intraword = b } diff --git a/test/command/11362.md b/test/command/11362.md new file mode 100644 index 000000000..9e6c22133 --- /dev/null +++ b/test/command/11362.md @@ -0,0 +1,17 @@ +``` +% pandoc -f markdown -t asciidoc +This is a _test_[^1]. + +And yet another **one**[^1]. + +We can also try to write #hashtags [this]{.test}. + +[^1]: Test footnote. +^D +This is a __test__footnote:[Test footnote.]. + +And yet another **one**footnote:[Test footnote.]. + +We can also try to write ++#++hashtags [.test]#this#. + +``` -- cgit v1.2.3