texmath 0.12.8.3 → 0.12.8.4
raw patch · 5 files changed
+52/−15 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- changelog +10/−0
- src/Text/TeXMath/Readers/OMML.hs +7/−7
- src/Text/TeXMath/Readers/TeX.hs +18/−7
- test/reader/tex/issue229.test +16/−0
- texmath.cabal +1/−1
changelog view
@@ -1,3 +1,13 @@+texmath (0.12.8.4)++ * TeX reader: ignore `\allowbreak` (#230).++ * TeX reader: handle `*{5}{lr}` in array column specifier (#229).++ * OMML reader: allow `m:e` to be missing in `m:nary` (#228).+ Technically this is not allowed, according to the spec, but+ Word and LibreOffice seem to tolerate it.+ texmath (0.12.8.3) * OMML writer: use "on" and "off" instead of "1" and "0" for
src/Text/TeXMath/Readers/OMML.hs view
@@ -34,7 +34,7 @@ module Text.TeXMath.Readers.OMML (readOMML) where import Text.XML.Light-import Data.Maybe (isJust, mapMaybe, fromMaybe)+import Data.Maybe (isJust, mapMaybe, fromMaybe, maybeToList) import Data.List (intercalate) import Data.Char (isDigit, readLitChar) import qualified Data.Text as T@@ -385,19 +385,19 @@ (\e -> return $ concat $ mapMaybe (elemToExps) (elChildren e)) supExps <- filterChildName (hasElemName "m" "sup") element >>= (\e -> return $ concat $ mapMaybe (elemToExps) (elChildren e))- baseExp <- filterChildName (hasElemName "m" "e") element >>=- elemToBase+ let baseExp = maybeToList $+ filterChildName (hasElemName "m" "e") element >>= elemToBase case limLoc of- Just "undOvr" -> return [EUnderover True+ Just "undOvr" -> return $ EUnderover True (ESymbol Op opChr) (EGrouped subExps) (EGrouped supExps)- , baseExp]- _ -> return [ESubsup+ : baseExp+ _ -> return $ ESubsup (ESymbol Op opChr) (EGrouped subExps) (EGrouped supExps)- , baseExp]+ : baseExp elemToExps' element | isElem "m" "phant" element = do baseExp <- filterChildName (hasElemName "m" "e") element >>=
src/Text/TeXMath/Readers/TeX.hs view
@@ -45,6 +45,7 @@ import Data.Generics (everywhere, mkT) import Text.TeXMath.Readers.TeX.Commands ( styleOps, textOps, enclosures, operators, symbols, siUnitMap )+import Data.Text.Read (decimal) type TP = Parser @@ -142,6 +143,7 @@ <|> tag <|> () <$ ctrlseq "nonumber" <|> (skipMany1 space <?> "whitespace")+ <|> (() <$ ctrlseq "allowbreak") comment :: TP () comment = char '%' *> skipMany (noneOf "\n") *> optional newline@@ -434,13 +436,22 @@ -- we don't represent the line, but it shouldn't crash parsing arrayAlignments :: TP [Alignment]-arrayAlignments = try $ do- as <- braces (many (letter <|> char '|'))- let letterToAlignment 'l' = AlignLeft- letterToAlignment 'c' = AlignCenter- letterToAlignment 'r' = AlignRight- letterToAlignment _ = AlignCenter- return $ map letterToAlignment $ filter (/= '|') as+arrayAlignments = mconcat <$>+ braces (many (((:[]) . letterToAlignment <$> letter)+ <|> ([] <$ char '|')+ <|> (do char '*'+ num <- T.pack <$> braces (many1 digit)+ cols <- arrayAlignments+ case decimal num of+ Left msg -> fail msg+ Right (n :: Int, _)+ -> return $ mconcat $ replicate n cols)+ ))+ where+ letterToAlignment 'l' = AlignLeft+ letterToAlignment 'c' = AlignCenter+ letterToAlignment 'r' = AlignRight+ letterToAlignment _ = AlignCenter environment :: Text -> TP Exp environment "\\begin" = do
+ test/reader/tex/issue229.test view
@@ -0,0 +1,16 @@+<<< tex+\begin{array}{l*{2}{rc}}+1 & 2 & 3 & 4 & 5+\end{array}++>>> native+[ EArray+ [ AlignLeft , AlignRight , AlignCenter , AlignRight , AlignCenter ]+ [ [ [ ENumber "1" ]+ , [ ENumber "2" ]+ , [ ENumber "3" ]+ , [ ENumber "4" ]+ , [ ENumber "5" ]+ ]+ ]+]
texmath.cabal view
@@ -1,5 +1,5 @@ Name: texmath-Version: 0.12.8.3+Version: 0.12.8.4 Cabal-Version: >= 1.10 Build-type: Simple Synopsis: Conversion between math formats.