diff options
Diffstat (limited to 'src/Text/Pandoc/Readers/LaTeX.hs')
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 226 |
1 files changed, 3 insertions, 223 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 85e30f538..c3e770578 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -57,6 +57,7 @@ import Text.Pandoc.Readers.LaTeX.Types (ExpansionPoint (..), Macro (..), import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.Readers.LaTeX.Lang (polyglossiaLangToBCP47, babelLangToBCP47) +import Text.Pandoc.Readers.LaTeX.SIunitx import Text.Pandoc.Shared import qualified Text.Pandoc.Translations as Translations import Text.Pandoc.Walk @@ -244,227 +245,6 @@ doxspace = startsWithLetter _ = False --- converts e.g. \SI{1}[\$]{} to "$ 1" or \SI{1}{\euro} to "1 €" -dosiunitx :: PandocMonad m => LP m Inlines -dosiunitx = do - skipopts - value <- tok - valueprefix <- option "" $ bracketed tok - unit <- grouped (mconcat <$> many1 siUnit) <|> siUnit <|> tok - let emptyOr160 "" = "" - emptyOr160 _ = "\160" - return . mconcat $ [valueprefix, - emptyOr160 valueprefix, - value, - 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 - if name == "square" - then do - unit <- grouped (mconcat <$> many1 siUnit) <|> siUnit <|> tok - return . mconcat $ [unit, "\178"] - else - case M.lookup name siUnitMap of - Just il -> return il - Nothing -> mzero - -siUnitMap :: M.Map Text Inlines -siUnitMap = M.fromList - [ ("fg", str "fg") - , ("pg", str "pg") - , ("ng", str "ng") - , ("ug", str "μg") - , ("mg", str "mg") - , ("g", str "g") - , ("kg", str "kg") - , ("amu", str "u") - , ("pm", str "pm") - , ("nm", str "nm") - , ("um", str "μm") - , ("mm", str "mm") - , ("cm", str "cm") - , ("dm", str "dm") - , ("m", str "m") - , ("km", str "km") - , ("as", str "as") - , ("fs", str "fs") - , ("ps", str "ps") - , ("ns", str "ns") - , ("us", str "μs") - , ("ms", str "ms") - , ("s", str "s") - , ("fmol", str "fmol") - , ("pmol", str "pmol") - , ("nmol", str "nmol") - , ("umol", str "μmol") - , ("mmol", str "mmol") - , ("mol", str "mol") - , ("kmol", str "kmol") - , ("pA", str "pA") - , ("nA", str "nA") - , ("uA", str "μA") - , ("mA", str "mA") - , ("A", str "A") - , ("kA", str "kA") - , ("ul", str "μl") - , ("ml", str "ml") - , ("l", str "l") - , ("hl", str "hl") - , ("uL", str "μL") - , ("mL", str "mL") - , ("L", str "L") - , ("hL", str "hL") - , ("mHz", str "mHz") - , ("Hz", str "Hz") - , ("kHz", str "kHz") - , ("MHz", str "MHz") - , ("GHz", str "GHz") - , ("THz", str "THz") - , ("mN", str "mN") - , ("N", str "N") - , ("kN", str "kN") - , ("MN", str "MN") - , ("Pa", str "Pa") - , ("kPa", str "kPa") - , ("MPa", str "MPa") - , ("GPa", str "GPa") - , ("mohm", str "mΩ") - , ("kohm", str "kΩ") - , ("Mohm", str "MΩ") - , ("pV", str "pV") - , ("nV", str "nV") - , ("uV", str "μV") - , ("mV", str "mV") - , ("V", str "V") - , ("kV", str "kV") - , ("W", str "W") - , ("uW", str "μW") - , ("mW", str "mW") - , ("kW", str "kW") - , ("MW", str "MW") - , ("GW", str "GW") - , ("J", str "J") - , ("uJ", str "μJ") - , ("mJ", str "mJ") - , ("kJ", str "kJ") - , ("eV", str "eV") - , ("meV", str "meV") - , ("keV", str "keV") - , ("MeV", str "MeV") - , ("GeV", str "GeV") - , ("TeV", str "TeV") - , ("kWh", str "kWh") - , ("F", str "F") - , ("fF", str "fF") - , ("pF", str "pF") - , ("K", str "K") - , ("dB", str "dB") - , ("angstrom", str "Å") - , ("arcmin", str "′") - , ("arcminute", str "′") - , ("arcsecond", str "″") - , ("astronomicalunit", str "ua") - , ("atomicmassunit", str "u") - , ("atto", str "a") - , ("bar", str "bar") - , ("barn", str "b") - , ("becquerel", str "Bq") - , ("bel", str "B") - , ("candela", str "cd") - , ("celsius", str "°C") - , ("centi", str "c") - , ("coulomb", str "C") - , ("dalton", str "Da") - , ("day", str "d") - , ("deca", str "d") - , ("deci", str "d") - , ("decibel", str "db") - , ("degreeCelsius",str "°C") - , ("degree", str "°") - , ("deka", str "d") - , ("electronvolt", str "eV") - , ("exa", str "E") - , ("farad", str "F") - , ("femto", str "f") - , ("giga", str "G") - , ("gram", str "g") - , ("hectare", str "ha") - , ("hecto", str "h") - , ("henry", str "H") - , ("hertz", str "Hz") - , ("hour", str "h") - , ("joule", str "J") - , ("katal", str "kat") - , ("kelvin", str "K") - , ("kilo", str "k") - , ("kilogram", str "kg") - , ("knot", str "kn") - , ("liter", str "L") - , ("litre", str "l") - , ("lumen", str "lm") - , ("lux", str "lx") - , ("mega", str "M") - , ("meter", str "m") - , ("metre", str "m") - , ("micro", str "μ") - , ("milli", str "m") - , ("minute", str "min") - , ("mmHg", str "mmHg") - , ("mole", str "mol") - , ("nano", str "n") - , ("nauticalmile", str "M") - , ("neper", str "Np") - , ("newton", str "N") - , ("ohm", str "Ω") - , ("Pa", str "Pa") - , ("pascal", str "Pa") - , ("percent", str "%") - , ("per", str "/") - , ("peta", str "P") - , ("pico", str "p") - , ("radian", str "rad") - , ("second", str "s") - , ("siemens", str "S") - , ("sievert", str "Sv") - , ("steradian", str "sr") - , ("tera", str "T") - , ("tesla", str "T") - , ("tonne", str "t") - , ("volt", str "V") - , ("watt", str "W") - , ("weber", str "Wb") - , ("yocto", str "y") - , ("yotta", str "Y") - , ("zepto", str "z") - , ("zetta", str "Z") - ] - lit :: Text -> LP m Inlines lit = pure . str @@ -1097,8 +877,8 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList , ("acfp", doAcronymPlural "full") , ("acsp", doAcronymPlural "abbrv") -- siuntix - , ("SI", dosiunitx) - , ("SIrange", doSIrange) + , ("SI", dosiunitx tok) + , ("SIrange", doSIrange tok) -- hyphenat , ("bshyp", lit "\\\173") , ("fshyp", lit "/\173") |