@@ -735,7 +735,7 @@ dosiunitx = do
736 value <- tok
736 value <- tok
737 valueprefix <- option "" $ bracketed tok
737 valueprefix <- option "" $ bracketed tok
738− unit <- inlineCommand' <|> tok
738+ unit <- grouped (mconcat <$> many1 siUnit) <|> siUnit <|> tok
739 let emptyOr160 "" = ""
739 let emptyOr160 "" = ""
740 emptyOr160 _ = "\160"
740 emptyOr160 _ = "\160"
741 return . mconcat $ [valueprefix,
741 return . mconcat $ [valueprefix,
@@ -744,11 +744,187 @@ dosiunitx = do
744 emptyOr160 unit,
744 emptyOr160 unit,
747−-- siunitx's \square command
748−dosquare :: PandocMonad m => LP m Inlines
747+siUnit :: PandocMonad m => LP m Inlines
749−dosquare = do
748+siUnit = do
750− unit <- inlineCommand' <|> tok
749+ Tok _ (CtrlSeq name) cmd <- anyControlSeq
752+ unit <- grouped (mconcat <$> many1 siUnit) <|> siUnit <|> tok
751− return . mconcat $ [unit, "\178"]
753+ return . mconcat $ [unit, "\178"]
755+ case M.lookup name siUnitMap of
756+ Just il -> return il
759+siUnitMap :: M.Map Text Inlines
760+siUnitMap = M.fromList
784+ , ("fmol", str "fmol")
785+ , ("pmol", str "pmol")
786+ , ("nmol", str "nmol")
787+ , ("umol", str "μmol")
788+ , ("mmol", str "mmol")
789+ , ("mol", str "mol")
790+ , ("kmol", str "kmol")
805+ , ("mHz", str "mHz")
807+ , ("kHz", str "kHz")
808+ , ("MHz", str "MHz")
809+ , ("GHz", str "GHz")
810+ , ("THz", str "THz")
816+ , ("kPa", str "kPa")
817+ , ("MPa", str "MPa")
818+ , ("GPa", str "GPa")
819+ , ("mohm", str "mΩ")
820+ , ("kohm", str "kΩ")
821+ , ("Mohm", str "MΩ")
839+ , ("meV", str "meV")
840+ , ("keV", str "keV")
841+ , ("MeV", str "MeV")
842+ , ("GeV", str "GeV")
843+ , ("TeV", str "TeV")
844+ , ("kWh", str "kWh")
850+ , ("angstrom", str "Å")
851+ , ("arcmin", str "′")
852+ , ("arcminute", str "′")
853+ , ("arcsecond", str "″")
854+ , ("astronomicalunit", str "ua")
855+ , ("atomicmassunit", str "u")
857+ , ("bar", str "bar")
859+ , ("becquerel", str "Bq")
861+ , ("candela", str "cd")
862+ , ("celsius", str "°C")
863+ , ("centi", str "c")
864+ , ("coulomb", str "C")
865+ , ("dalton", str "Da")
869+ , ("decibel", str "db")
870+ , ("degreeCelsius",str "°C")
871+ , ("degree", str "°")
873+ , ("electronvolt", str "eV")
875+ , ("farad", str "F")
876+ , ("femto", str "f")
879+ , ("hectare", str "ha")
880+ , ("hecto", str "h")
881+ , ("henry", str "H")
882+ , ("hertz", str "Hz")
884+ , ("joule", str "J")
885+ , ("katal", str "kat")
886+ , ("kelvin", str "K")
888+ , ("kilogram", str "kg")
889+ , ("knot", str "kn")
890+ , ("liter", str "L")
891+ , ("litre", str "l")
892+ , ("lumen", str "lm")
895+ , ("meter", str "m")
896+ , ("metre", str "m")
897+ , ("milli", str "m")
898+ , ("minute", str "min")
899+ , ("mmHg", str "mmHg")
900+ , ("mole", str "mol")
902+ , ("nauticalmile", str "M")
903+ , ("neper", str "Np")
904+ , ("newton", str "N")
907+ , ("pascal", str "Pa")
908+ , ("percent", str "%")
912+ , ("radian", str "rad")
913+ , ("second", str "s")
914+ , ("siemens", str "S")
915+ , ("sievert", str "Sv")
916+ , ("steradian", str "sr")
918+ , ("tesla", str "T")
919+ , ("tonne", str "t")
922+ , ("weber", str "Wb")
923+ , ("yocto", str "y")
924+ , ("yotta", str "Y")
925+ , ("zepto", str "z")
926+ , ("zetta", str "Z")
753lit :: String -> LP m Inlines
929lit :: String -> LP m Inlines
754lit = pure . str
930lit = pure . str
@@ -1594,174 +1770,6 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList
1594 , ("acsp", doAcronymPlural "abbrv")
1770 , ("acsp", doAcronymPlural "abbrv")
1595 -- siuntix
1771 -- siuntix
1596 , ("SI", dosiunitx)
1772 , ("SI", dosiunitx)
1597− -- units of siuntix
1621− , ("fmol", lit "fmol")
1622− , ("pmol", lit "pmol")
1623− , ("nmol", lit "nmol")
1624− , ("umol", lit "μmol")
1625− , ("mmol", lit "mmol")
1626− , ("mol", lit "mol")
1627− , ("kmol", lit "kmol")
1642− , ("mHz", lit "mHz")
1644− , ("kHz", lit "kHz")
1645− , ("MHz", lit "MHz")
1646− , ("GHz", lit "GHz")
1647− , ("THz", lit "THz")
1653− , ("kPa", lit "kPa")
1654− , ("MPa", lit "MPa")
1655− , ("GPa", lit "GPa")
1656− , ("mohm", lit "mΩ")
1657− , ("kohm", lit "kΩ")
1658− , ("Mohm", lit "MΩ")
1676− , ("meV", lit "meV")
1677− , ("keV", lit "keV")
1678− , ("MeV", lit "MeV")
1679− , ("GeV", lit "GeV")
1680− , ("TeV", lit "TeV")
1681− , ("kWh", lit "kWh")
1687− , ("angstrom", lit "Å")
1688− , ("arcmin", lit "′")
1689− , ("arcminute", lit "′")
1690− , ("arcsecond", lit "″")
1691− , ("astronomicalunit", lit "ua")
1692− , ("atomicmassunit", lit "u")
1693− , ("atto", lit "a")
1694− , ("bar", lit "bar")
1695− , ("barn", lit "b")
1696− , ("becquerel", lit "Bq")
1698− , ("candela", lit "cd")
1699− , ("celsius", lit "°C")
1700− , ("centi", lit "c")
1701− , ("coulomb", lit "C")
1702− , ("dalton", lit "Da")
1704− , ("deca", lit "d")
1705− , ("deci", lit "d")
1706− , ("decibel", lit "db")
1707− , ("degreeCelsius",lit "°C")
1708− , ("degree", lit "°")
1709− , ("deka", lit "d")
1710− , ("electronvolt", lit "eV")
1712− , ("farad", lit "F")
1713− , ("femto", lit "f")
1714− , ("giga", lit "G")
1715− , ("gram", lit "g")
1716− , ("hectare", lit "ha")
1717− , ("hecto", lit "h")
1718− , ("henry", lit "H")
1719− , ("hertz", lit "Hz")
1720− , ("hour", lit "h")
1721− , ("joule", lit "J")
1722− , ("katal", lit "kat")
1723− , ("kelvin", lit "K")
1724− , ("kilo", lit "k")
1725− , ("kilogram", lit "kg")
1726− , ("knot", lit "kn")
1727− , ("liter", lit "L")
1728− , ("litre", lit "l")
1729− , ("lumen", lit "lm")
1730− , ("lux", lit "lx")
1731− , ("mega", lit "M")
1732− , ("meter", lit "m")
1733− , ("metre", lit "m")
1734− , ("milli", lit "m")
1735− , ("minute", lit "min")
1736− , ("mmHg", lit "mmHg")
1737− , ("mole", lit "mol")
1738− , ("nano", lit "n")
1739− , ("nauticalmile", lit "M")
1740− , ("neper", lit "Np")
1741− , ("newton", lit "N")
1744− , ("pascal", lit "Pa")
1745− , ("percent", lit "%")
1747− , ("peta", lit "P")
1748− , ("pico", lit "p")
1749− , ("radian", lit "rad")
1750− , ("second", lit "s")
1751− , ("siemens", lit "S")
1752− , ("sievert", lit "Sv")
1753− , ("square", dosquare)
1754− , ("steradian", lit "sr")
1755− , ("tera", lit "T")
1756− , ("tesla", lit "T")
1757− , ("tonne", lit "t")
1758− , ("volt", lit "V")
1759− , ("watt", lit "W")
1760− , ("weber", lit "Wb")
1761− , ("yocto", lit "y")
1762− , ("yotta", lit "Y")
1763− , ("zepto", lit "z")
1764− , ("zetta", lit "Z")
1765 -- hyphenat
1773 -- hyphenat
1766 , ("bshyp", lit "\\\173")
1774 , ("bshyp", lit "\\\173")
1767 , ("fshyp", lit "/\173")
1775 , ("fshyp", lit "/\173")