From c75faac1b517e8fb8ba5eea4c4bf7ea924f733b0 Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Tue, 16 Jul 2019 13:42:34 -0700
Subject: LaTeX reader: handle \looseness command values better.

Closes #4439.
---
 src/Text/Pandoc/Readers/LaTeX/Parsing.hs | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

(limited to 'src/Text/Pandoc')

diff --git a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
index 42e0c7360..a265d6ca2 100644
--- a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
+++ b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
@@ -646,18 +646,17 @@ dimenarg :: PandocMonad m => LP m Text
 dimenarg = try $ do
   optional sp
   ch  <- option False $ True <$ symbol '='
+  minus <- option "" $ "-" <$ symbol '-'
   Tok _ _ s1 <- satisfyTok isWordTok
   s2 <- option "" $ try $ do
           symbol '.'
           Tok _ _ t <-  satisfyTok isWordTok
           return ("." <> t)
   let s = s1 <> s2
-  guard $ T.takeEnd 2 s `elem`
-           ["pt","pc","in","bp","cm","mm","dd","cc","sp"]
-  let num = T.dropEnd 2 s
+  let (num, rest) = T.span (\c -> isDigit c || c == '.') s
   guard $ T.length num > 0
-  guard $ T.all (\c -> isDigit c || c == '.') num
-  return $ T.pack ['=' | ch] <> s
+  guard $ rest `elem` ["", "pt","pc","in","bp","cm","mm","dd","cc","sp"]
+  return $ T.pack ['=' | ch] <> minus <> s
 
 ignore :: (Monoid a, PandocMonad m) => String -> ParserT s u m a
 ignore raw = do
-- 
cgit v1.2.3