packages feed

texmath 0.9.1.1 → 0.9.2

raw patch · 9 files changed

+146/−11 lines, 9 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

changelog view
@@ -1,3 +1,7 @@+texmath (0.9.2)++  * Support `\newenvironment` and `\renewenvironment`.+ texmath (0.9.1.1)    * Added program to generate cbits/{key,val}ToASCII.c from a data file.
src/Text/TeXMath/Readers/TeX.hs view
@@ -316,13 +316,18 @@ endLine = try $ do   symbol "\\\\"   optional inbrackets  -- can contain e.g. [1.0in] for a line height, not yet supported-  optional $ ctrlseq "hline"-  -- we don't represent the line, but it shouldn't crash parsing   return '\n'  arrayLine :: TP ArrayLine arrayLine = notFollowedBy (ctrlseq "end" >> return '\n') >>-  sepBy1 (unGrouped <$> manyExp (notFollowedBy endLine >> expr)) (symbol "&")+  sepBy1 (unGrouped <$>+    manyExp (try $ ignorable' *>+               notFollowedBy endLine *>+               expr <*+               ignorable')) (symbol "&")+  where ignorable' = ignorable >>+                     optional (try (ctrlseq "hline" >> ignorable'))+  -- we don't represent the line, but it shouldn't crash parsing  arrayAlignments :: TP [Alignment] arrayAlignments = try $ do
src/Text/TeXMath/Readers/TeX/Macros.hs view
@@ -31,6 +31,7 @@ import Data.Char (isDigit, isLetter) import Control.Monad import Text.ParserCombinators.Parsec+import Control.Applicative ((<*))  data Macro = Macro { macroDefinition :: String                    , macroParser     :: forall st . GenParser Char st String }@@ -60,7 +61,7 @@ -- | Parses a @\\newcommand@ or @\\renewcommand@ macro definition and -- returns a 'Macro'. pMacroDefinition :: GenParser Char st Macro-pMacroDefinition = newcommand <|> declareMathOperator+pMacroDefinition = newcommand <|> declareMathOperator <|> newenvironment  -- | Skip whitespace and comments. pSkipSpaceComments :: GenParser Char st ()@@ -116,7 +117,6 @@   name <- inbraces <|> ctrlseq   guard (take 1 name == "\\")   let name' = drop 1 name-  pSkipSpaceComments   numargs <- numArgs   pSkipSpaceComments   optarg <- if numargs > 0@@ -147,6 +147,55 @@                      Nothing -> args     return $ apply args' $ "{" ++ body ++ "}" +newenvironment :: GenParser Char st Macro+newenvironment = try $ do+  char '\\'+  -- we ignore differences between these so far:+  optional (string "re")+  string "newenvironment"+  optional (char '*')+  pSkipSpaceComments+  name <- inbraces <|> ctrlseq+  numargs <- numArgs+  pSkipSpaceComments+  optarg <- if numargs > 0+               then optArg <* pSkipSpaceComments+               else return Nothing+  let numargs' = case optarg of+                   Just _  -> numargs - 1+                   Nothing -> numargs+  opener <- inbraces <|> ctrlseq+  pSkipSpaceComments+  closer <- inbraces <|> ctrlseq+  let defn = "\\newenvironment{" ++ name ++ "}" +++             (if numargs > 0 then ("[" ++ show numargs ++ "]") else "") +++             case optarg of { Nothing -> ""; Just x -> "[" ++ x ++ "]"} +++             "%\n{" ++ opener ++ "}%\n" ++ "{" ++ closer ++ "}"+  return $ Macro defn $ try $ do+    string "\\begin"+    pSkipSpaceComments+    char '{'+    string name+    pSkipSpaceComments+    char '}'+    opt <- case optarg of+                Nothing  -> return Nothing+                Just _   -> liftM (`mplus` optarg) optArg+    args <- count numargs' (pSkipSpaceComments >>+                  (inbraces <|> ctrlseq <|> count 1 anyChar))+    let args' = case opt of+                     Just x  -> x : args+                     Nothing -> args+    let ender = try $ do+                      string "\\end"+                      pSkipSpaceComments+                      char '{'+                      string name+                      char '}'+    body <- manyTill anyChar ender+    return $ apply args'+           $ opener ++ body ++ closer+ -- | Parser for \DeclareMathOperator(*) command. declareMathOperator :: GenParser Char st Macro declareMathOperator = try $ do@@ -191,7 +240,7 @@   return ()  numArgs :: GenParser Char st Int-numArgs = option 0 $ do+numArgs = option 0 $ try $ do   pSkipSpaceComments   char '['   pSkipSpaceComments@@ -217,8 +266,9 @@ inbraces :: GenParser Char st String inbraces = try $ do   char '{'-  res <- manyTill (skipComment >> (inbraces' <|> count 1 anyChar <|> escaped "{}"))-    (try $ skipComment >> char '}')+  res <- manyTill (pSkipSpaceComments >>+            (inbraces' <|> count 1 anyChar <|> escaped "{}"))+    (try $ pSkipSpaceComments >> char '}')   return $ concat res  inbraces' :: GenParser Char st String
tests/readers/tex/macros.native view
@@ -1,1 +1,1 @@-[ENumber "2",ENumber "5",EGrouped [EIdentifier "y",ESymbol Bin "+",ENumber "3"],EGrouped [EIdentifier "x",ESymbol Bin "+",ENumber "3"],EGrouped [EIdentifier "x",ESymbol Bin "+",EIdentifier "\945"]]+[ENumber "2",ENumber "5",EGrouped [EIdentifier "y",ESymbol Bin "+",ENumber "3"],EGrouped [EIdentifier "x",ESymbol Bin "+",ENumber "3"],EGrouped [EIdentifier "x",ESymbol Bin "+",EIdentifier "\945"],EArray [AlignCenter,AlignCenter] [[[ENumber "2"],[ENumber "3"]],[[ENumber "4"],[ENumber "5"]]]]
tests/src/macros.tex view
@@ -12,8 +12,19 @@ \renewcommand{\phi}{\aaa} \newcommand{\b}[1]{#1} +\newenvironment{ary}+{\begin{array}{cc}+\hline}+{\hline+\end{array}}+ \phi \abc \xyz[y] {3} \xyz 3 \xyz \alpha++\begin{ary}+2 & 3\\+4 & 5+\end{ary}
tests/writers/macros.mml view
@@ -18,5 +18,23 @@       <mo>+</mo>       <mi>α</mi>     </mrow>+    <mtable>+      <mtr>+        <mtd columnalign="center">+          <mn>2</mn>+        </mtd>+        <mtd columnalign="center">+          <mn>3</mn>+        </mtd>+      </mtr>+      <mtr>+        <mtd columnalign="center">+          <mn>4</mn>+        </mtd>+        <mtd columnalign="center">+          <mn>5</mn>+        </mtd>+      </mtr>+    </mtable>   </mrow> </math>
tests/writers/macros.omml view
@@ -37,5 +37,49 @@     <m:r>       <m:t>α</m:t>     </m:r>+    <m:m>+      <m:mPr>+        <m:baseJc m:val="center" />+        <m:plcHide m:val="1" />+        <m:mcs>+          <m:mc>+            <m:mcPr>+              <m:mcJc m:val="center" />+              <m:count m:val="1" />+            </m:mcPr>+          </m:mc>+          <m:mc>+            <m:mcPr>+              <m:mcJc m:val="center" />+              <m:count m:val="1" />+            </m:mcPr>+          </m:mc>+        </m:mcs>+      </m:mPr>+      <m:mr>+        <m:e>+          <m:r>+            <m:t>2</m:t>+          </m:r>+        </m:e>+        <m:e>+          <m:r>+            <m:t>3</m:t>+          </m:r>+        </m:e>+      </m:mr>+      <m:mr>+        <m:e>+          <m:r>+            <m:t>4</m:t>+          </m:r>+        </m:e>+        <m:e>+          <m:r>+            <m:t>5</m:t>+          </m:r>+        </m:e>+      </m:mr>+    </m:m>   </m:oMath> </m:oMathPara>
tests/writers/macros.tex view
@@ -1,1 +1,4 @@-25{y + 3}{x + 3}{x + \alpha}+25{y + 3}{x + 3}{x + \alpha}\begin{matrix}+2 & 3 \\+4 & 5 \\+\end{matrix}
texmath.cabal view
@@ -1,5 +1,5 @@ Name:                texmath-Version:             0.9.1.1+Version:             0.9.2 Cabal-Version:       >= 1.10 Build-type:          Simple Synopsis:            Conversion between formats used to represent mathematics.