mirror of
https://github.com/jgm/pandoc.git
synced 2026-09-21 13:51:29 +08:00
LaTeX reader: support parenthesized uncertainties in siunitx.
This commit is contained in:
@@ -70,10 +70,22 @@ parseNumPart =
|
||||
parseX <|>
|
||||
parseSpace
|
||||
where
|
||||
parseDecimalNum =
|
||||
str . T.pack <$> many1 (satisfy (\c -> isDigit c || c == '.'))
|
||||
parseDecimalNum = do
|
||||
basenum <- T.pack <$> many1 (satisfy (\c -> isDigit c || c == '.'))
|
||||
uncertainty <- option mempty $ T.pack <$> parseParens
|
||||
if T.null uncertainty
|
||||
then return $ str basenum
|
||||
else return $ str $ basenum <> "\xa0\xb1\xa0" <>
|
||||
case T.break (=='.') basenum of
|
||||
(_,ys)
|
||||
| T.length ys <= 1 -> uncertainty
|
||||
| otherwise -> "0." <>
|
||||
T.replicate (T.length ys - 1 - T.length uncertainty) "0"
|
||||
<> uncertainty
|
||||
parseComma = str "." <$ char ','
|
||||
parsePlusMinus = str "\xa0\xb1\xa0" <$ try (string "+-")
|
||||
parseParens =
|
||||
char '(' *> many1 (satisfy (\c -> isDigit c || c == '.')) <* char ')'
|
||||
parseI = str "i" <$ char 'i'
|
||||
parseX = str "\xa0\xd7\xa0" <$ char 'x'
|
||||
parseExp = (\n -> str ("\xa0\xd7\xa0" <> "10") <> superscript n)
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
```
|
||||
% pandoc -f latex
|
||||
\SI{23(2)}{\m}
|
||||
|
||||
\SI{125(12)}{\m}
|
||||
|
||||
\SI{0.135(21)}{\m}
|
||||
^D
|
||||
<p>23 ± 2 m</p>
|
||||
<p>125 ± 12 m</p>
|
||||
<p>0.135 ± 0.021 m</p>
|
||||
```
|
||||
Reference in New Issue
Block a user