aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pandoc.cabal6
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs2
-rw-r--r--src/Text/Pandoc/Readers/LaTeX/Parsing.hs16
3 files changed, 15 insertions, 9 deletions
diff --git a/pandoc.cabal b/pandoc.cabal
index c34d3d461..33104dcc9 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -361,7 +361,7 @@ library
process >= 1.2.3 && < 1.7,
directory >= 1 && < 1.4,
bytestring >= 0.9 && < 0.11,
- text >= 0.11 && < 1.3,
+ text >= 1.1.1.0 && < 1.3,
time >= 1.5 && < 1.10,
safe >= 0.3 && < 0.4,
zip-archive >= 0.2.3.4 && < 0.4,
@@ -643,7 +643,7 @@ test-suite test-pandoc
pandoc-types >= 1.17.5 && < 1.18,
bytestring >= 0.9 && < 0.11,
base64-bytestring >= 0.1 && < 1.1,
- text >= 0.11 && < 1.3,
+ text >= 1.1.1.0 && < 1.3,
time >= 1.5 && < 1.10,
directory >= 1 && < 1.4,
filepath >= 1.1 && < 1.5,
@@ -727,7 +727,7 @@ benchmark benchmark-pandoc
build-depends: pandoc,
time, bytestring, containers,
base >= 4.8 && < 5,
- text >= 0.11 && < 1.3,
+ text >= 1.1.1.0 && < 1.3,
mtl >= 2.2 && < 2.3,
criterion >= 1.0 && < 1.6
if impl(ghc < 8.0)
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 96ee51293..518f09bd9 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1301,7 +1301,7 @@ getRawCommand name txt = do
_ | isFontSizeCommand name -> return ()
| otherwise -> do
skipopts
- option "" (try (optional sp *> dimenarg))
+ option "" (try dimenarg)
void $ many braced
return $ T.unpack (txt <> untokenize rawargs)
diff --git a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
index 69bbf28d4..c5385bedc 100644
--- a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
+++ b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
@@ -105,7 +105,7 @@ import Text.Pandoc.Error (PandocError (PandocMacroLoop))
import Text.Pandoc.Logging
import Text.Pandoc.Options
import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline,
- optional, space, spaces, withRaw, (<|>))
+ space, spaces, withRaw, (<|>))
import Text.Pandoc.Readers.LaTeX.Types (ExpansionPoint (..), Macro (..),
ArgSpec (..), Tok (..), TokType (..))
import Text.Pandoc.Shared
@@ -668,13 +668,19 @@ parenWrapped parser = try $ do
dimenarg :: PandocMonad m => LP m Text
dimenarg = try $ do
+ optional sp
ch <- option False $ True <$ symbol '='
- Tok _ _ s <- satisfyTok isWordTok
- guard $ T.take 2 (T.reverse s) `elem`
+ 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.take (T.length s - 2) s
+ let num = T.dropEnd 2 s
guard $ T.length num > 0
- guard $ T.all isDigit num
+ guard $ T.all (\c -> isDigit c || c == '.') num
return $ T.pack ['=' | ch] <> s
ignore :: (Monoid a, PandocMonad m) => String -> ParserT s u m a