diff options
author | John MacFarlane <jgm@berkeley.edu> | 2020-09-02 16:14:32 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-09-02 16:16:06 -0700 |
commit | 321658fe4dc21476f240e2405daf8fcec22447b9 (patch) | |
tree | 887ce1df6e4056ad9382eee0069720ee58fcadc3 | |
parent | 16c44cd2a9a98c15e746d35e6ce6f66bd820fb24 (diff) | |
download | pandoc-321658fe4dc21476f240e2405daf8fcec22447b9.tar.gz |
LaTeX reader: Support siunitx `\ang`.
See #6658.
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 1 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX/SIunitx.hs | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 2d456c7d9..772f7a498 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -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") diff --git a/src/Text/Pandoc/Readers/LaTeX/SIunitx.hs b/src/Text/Pandoc/Readers/LaTeX/SIunitx.hs index f2b88f88b..cb60efba4 100644 --- a/src/Text/Pandoc/Readers/LaTeX/SIunitx.hs +++ b/src/Text/Pandoc/Readers/LaTeX/SIunitx.hs @@ -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 |