From 041cfbd5eeffd2bc79447c4894652fc3c108c40d Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 2 Nov 2019 12:20:04 -0700 Subject: LaTeX untokenize: Ensure space between control sequence and following letter. Closes #5836. --- src/Text/Pandoc/Readers/LaTeX.hs | 1 + src/Text/Pandoc/Readers/LaTeX/Parsing.hs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index b4e9de258..94fd9427b 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -618,6 +618,7 @@ accent combiningAccent fallBack = try $ do [Space] -> return $ str [fromMaybe combiningAccent fallBack] [] -> return $ str [fromMaybe combiningAccent fallBack] _ -> return ils + mathDisplay :: String -> Inlines mathDisplay = displayMath . trimMath diff --git a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs index af354843a..14cb408b0 100644 --- a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs +++ b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs @@ -92,6 +92,7 @@ import Text.Pandoc.Readers.LaTeX.Types (ExpansionPoint (..), Macro (..), ArgSpec (..), Tok (..), TokType (..)) import Text.Pandoc.Shared import Text.Parsec.Pos +-- import Debug.Trace newtype DottedNum = DottedNum [Int] deriving (Show) @@ -350,10 +351,21 @@ isLowerHex :: Char -> Bool isLowerHex x = x >= '0' && x <= '9' || x >= 'a' && x <= 'f' untokenize :: [Tok] -> Text -untokenize = mconcat . map untoken +untokenize = foldr untokenAccum mempty + +untokenAccum :: Tok -> Text -> Text +untokenAccum (Tok _ (CtrlSeq _) t) accum = + -- insert space to prevent breaking a control sequence; see #5836 + case (T.unsnoc t, T.uncons accum) of + (Just (_,c), Just (d,_)) + | isLetter c + , isLetter d + -> t <> " " <> accum + _ -> t <> accum +untokenAccum (Tok _ _ t) accum = t <> accum untoken :: Tok -> Text -untoken (Tok _ _ t) = t +untoken t = untokenAccum t mempty toksToString :: [Tok] -> String toksToString = T.unpack . untokenize -- cgit v1.2.3