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