From 339392bf549a8a02ea17f94c02fb01cf121bc05a Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Fri, 19 Jul 2019 10:32:59 -0700
Subject: [PATCH] Markdown: Ensure that expanded latex macros end with space if
 original did.

Closes #4442.
---
 src/Text/Pandoc/Readers/LaTeX/Parsing.hs | 11 ++++++++++-
 test/command/4442.md                     |  9 +++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)
 create mode 100644 test/command/4442.md

diff --git a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
index a265d6ca2..eeebab3e6 100644
--- a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
+++ b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
@@ -226,7 +226,16 @@ rawLaTeXParser retokenize parser valParser = do
               Right ((val, raw), st) -> do
                 updateState (updateMacros (sMacros st <>))
                 _ <- takeP (T.length (untokenize toks'))
-                return (val, T.unpack (untokenize raw))
+                let result = untokenize raw
+                -- ensure we end with space if input did, see #4442
+                let result' =
+                      case reverse toks' of
+                        (Tok _ (CtrlSeq _) t : _)
+                         | " " `T.isSuffixOf` t
+                         , not (" " `T.isSuffixOf` result)
+                          -> result <> " "
+                        _ -> result
+                return (val, T.unpack result')
 
 applyMacros :: (PandocMonad m, HasMacros s, HasReaderOptions s)
             => String -> ParserT String s m String
diff --git a/test/command/4442.md b/test/command/4442.md
new file mode 100644
index 000000000..8574fe759
--- /dev/null
+++ b/test/command/4442.md
@@ -0,0 +1,9 @@
+```
+% pandoc -f markdown -t latex
+\newcommand{\myFruit}{Mango\xspace}
+\myFruit is the king of fruits.
+^D
+\newcommand{\myFruit}{Mango\xspace}
+
+Mango\xspace is the king of fruits.
+```