@@ -226,7 +226,16 @@ rawLaTeXParser retokenize parser valParser = do
226226 Right ((val, raw), st) -> do
227227 updateState (updateMacros (sMacros st <>))
228228 _ <- takeP (T.length (untokenize toks'))
229− return (val, T.unpack (untokenize raw))
229+ let result = untokenize raw
230+ -- ensure we end with space if input did, see #4442
231+ let result' =
232+ case reverse toks' of
233+ (Tok _ (CtrlSeq _) t : _)
234+ | " " `T.isSuffixOf` t
235+ , not (" " `T.isSuffixOf` result)
236+ -> result <> " "
237+ _ -> result
238+ return (val, T.unpack result')
230239
231240applyMacros :: (PandocMonad m, HasMacros s, HasReaderOptions s)
232241 => String -> ParserT String s m String