LaTeX reader: Support siunitx \ang.

See #6658.
This commit is contained in:
John MacFarlane
2020-09-02 16:16:06 -07:00
parent 16c44cd2a9
commit 321658fe4d
2 changed files with 13 additions and 0 deletions
+1
View File
@@ -881,6 +881,7 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList
, ("SI", doSI tok)
, ("SIrange", doSIrange tok)
, ("num", doSInum)
, ("ang", doSIang)
-- hyphenat
, ("bshyp", lit "\\\173")
, ("fshyp", lit "/\173")
+12
View File
@@ -4,6 +4,7 @@ module Text.Pandoc.Readers.LaTeX.SIunitx
, doSI
, doSIrange
, doSInum
, doSIang
)
where
import Text.Pandoc.Builder
@@ -65,6 +66,17 @@ parseNumPart =
<$> (char 'e' *> parseDecimalNum)
parseSpace = mempty <$ skipMany1 (char ' ')
doSIang :: PandocMonad m => LP m Inlines
doSIang = do
skipopts
ps <- T.splitOn ";" . untokenize <$> braced
case ps ++ repeat "" of
(d:m:s:_) -> return $
(if T.null d then mempty else (str d <> str "\xb0")) <>
(if T.null m then mempty else (str m <> str "\x2032")) <>
(if T.null s then mempty else (str s <> str "\x2033"))
_ -> return mempty
-- converts e.g. \SIrange{100}{200}{\ms} to "100 ms--200 ms"
doSIrange :: PandocMonad m => LP m Inlines -> LP m Inlines
doSIrange tok = do