@@ -4,6 +4,7 @@ module Text.Pandoc.Readers.LaTeX.SIunitx
44 , doSI
55 , doSIrange
66 , doSInum
7+ , doSIang
78 )
89where
910import Text.Pandoc.Builder
@@ -65,6 +66,17 @@ parseNumPart =
6566 <$> (char 'e' *> parseDecimalNum)
6667 parseSpace = mempty <$ skipMany1 (char ' ')
6768
69+doSIang :: PandocMonad m => LP m Inlines
70+doSIang = do
71+ skipopts
72+ ps <- T.splitOn ";" . untokenize <$> braced
73+ case ps ++ repeat "" of
74+ (d:m:s:_) -> return $
75+ (if T.null d then mempty else (str d <> str "\xb0")) <>
76+ (if T.null m then mempty else (str m <> str "\x2032")) <>
77+ (if T.null s then mempty else (str s <> str "\x2033"))
78+ _ -> return mempty
79+
6880-- converts e.g. \SIrange{100}{200}{\ms} to "100 ms--200 ms"
6981doSIrange :: PandocMonad m => LP m Inlines -> LP m Inlines
7082doSIrange tok = do