diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 1c6954279..af00813b6 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -259,6 +259,29 @@ dosiunitx = do emptyOr160 unit, unit] +-- converts e.g. \SIRange{100}{200}{\ms} to "100 ms--200 ms" +doSIRange :: PandocMonad m => LP m Inlines +doSIRange = do + skipopts + startvalue <- tok + startvalueprefix <- option "" $ bracketed tok + stopvalue <- tok + stopvalueprefix <- option "" $ bracketed tok + unit <- grouped (mconcat <$> many1 siUnit) <|> siUnit <|> tok + let emptyOr160 "" = "" + emptyOr160 _ = "\160" + return . mconcat $ [startvalueprefix, + emptyOr160 startvalueprefix, + startvalue, + emptyOr160 unit, + unit, + "\8211", -- An en-dash + stopvalueprefix, + emptyOr160 stopvalueprefix, + stopvalue, + emptyOr160 unit, + unit] + siUnit :: PandocMonad m => LP m Inlines siUnit = do Tok _ (CtrlSeq name) _ <- anyControlSeq @@ -1075,6 +1098,7 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList , ("acsp", doAcronymPlural "abbrv") -- siuntix , ("SI", dosiunitx) + , ("SIRange", doSIRange) -- hyphenat , ("bshyp", lit "\\\173") , ("fshyp", lit "/\173") |