1texmath (0.12.3.1) 2 3 * MathML reader: don't allow mfenced attributes to inherit (#177). 4 When open and close attributes aren't given on an mfenced, 5 we should use defaults rather than inheriting these from a 6 parent mfenced. 7 8texmath (0.12.3) 9 10 * TeX reader: implement logic to convert a Bin symbol to 11 an Op to Op when it occurs at the beginning of a group, 12 or after an Open, Pun, or Op symbol. This will give much 13 better results for unary `-` (#176). 14 15 * OMML writer: fixed rendering of EDelimited (#173). 16 We now properly render "middles" (separators). 17 18texmath (0.12.2) 19 20 * MathML input: support mmultiscripts element (#158, #100). 21 22 * Make MathML tag/attr recognition case-insensitive (#158). 23 24 * Pandoc writer: better handling of styling such as `\mathrm` (#145). 25 Previously identifiers were always italic, no matter what 26 styling was applied. 27 28 * Ignore `\tag` in TeX input (#162). 29 30 * TeX writer: avoid unneeded `\left` and `\right` for delimited. 31 We don't need `\left` and `\right` when the contents are 32 "standard height." 33 34 * TeX reader: parse implicit EDelimited sections (#172). 35 We now parse `(x)` as EDelimited, even though `\right` and `\left` 36 are not used. 37 38texmath (0.12.1.1) 39 40 * Fix compilation with GHC-9.0.1 (#169, Simon Jakobi). 41 Background: 42 https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.0#simplified-subsumption 43 * Add eqn to online demo. 44 * Improve error messages for unknown control sequences, and restructure 45 tex parser to be more efficient (#167). 46 47texmath (0.12.1) 48 49 * OMML writer: explicitly mark symbols as non-italic (#109). 50 Otherwise, for some reason, they appear as italic by default. 51 * Improve error messages in reading tex arrays. 52 * Improve support for `\bmod`, `\mod`, etc. (#165). 53 Allow them to take complex arguments like `\left( 1 \right)`. 54 * Improve support for `\genfrac` (#164). 55 * Ignore `\textstyle`, `\scriptstyle`, `\scriptscriptstyle`, 56 as we currently ignore `\displaystyle`. 57 * Parse siunitx commands in reading tex (#157). 58 * Improve handling of `\not` in reading tex (#161). 59 Previously we only handled `\not` in front of certain symbols. 60 * Support `\pod` and `\pmod` and clean up spacing and font for 61 `\mod` and `\bmod` (#160). 62 63texmath (0.12.0.3) 64 65 * Allow pandoc-types 1.22. 66 67texmath (0.12.0.2) 68 69 * Allow pandoc-types 1.21. 70 * Pandoc output: omit empty Emph for sub/superscript without base (#155). 71 * tex writer: Use `\overline{\overline{B}}` instead of unicode 72 double line accent (#153). 73 74texmath (0.12.0.1) 75 76 * OMML writer: Fix overline and accent rendering (#152). 77 * OMML reader: Fix dropped arrows (#153). Add tests. 78 79texmath (0.12) 80 81 * Use Text instead of String in data types and functions 82 (Christian Despres) [API change]. Note that there are still a few 83 places where we unpack Text to String with a view pattern: 84 performance could likely be increased with further rewriting. 85 * Avoid use of !! with negative index (jgm/pandoc#5853). 86 87texmath (0.11.3) 88 89 * Use error instead of fail to allow building with ghc 8.8. 90 * Test output: remove superfluous spaces after control sequences, 91 superfluous groups, and unicode VARIATION SELECTOR 1. 92 * renderTeX: add space between control sequence and any non-ASCII 93 character. There are differences in behavior of isAlphaNum between 94 different ghc versions that would affect test output otherwise. 95 * charToLaTeXString: Ignore 65024 VARIATION SELECTOR 1 to avoid putting 96 it literally in the output ; it is used in mathml output and occurs 97 in many of the test cases. 98 * Add cabal.project. 99 * Use actions rather than travis for CI. 100 101texmath (0.11.2.3) 102 103 * OMML reader: properly distinguish normal text from math (#136). 104 If `m:nor` or `m:lit` is set in `m:rPr`, we interpret the 105 contents as literal text and not as math. 106 * TeX reader: use different symbol (`_`) for `\underline` (#142). 107 This gets the right accent properties on MathML output, so 108 that the underline is not lower than it should be. 109 * TeX reader: Treat `\bmod` as a relational symbol rather than 110 an operator (#143). This fixes spacing problems in several 111 output formats. 112 113texmath (0.11.2.2) 114 115 * OMML writer: use m:nor for normal text (#135). 116 117texmath (0.11.2.1) 118 119 * OMML reader: Don't collapse `fName` to a string (#133). 120 This fixes cases where fName has some complexity, e.g. 121 a subscript or limit. 122 123texmath (0.11.2) 124 125 * Improved handling of \mathop etc (#126). We now allow operators like 126 `arg\,min`, converting the space into unicode. 127 * Support \hspace (#126). 128 * Support \hdots as synonym of \ldots (#126). 129 * Support \mathds (#126). 130 * In parsing array, ignore `|` in column specs (#127). 131 We have no way to represent this in EArray, currently. 132 Ignoring them seems better than failing altogether. 133 134texmath (0.11.1.2) 135 136 * Eqn writer: properly escape `{` and `}`. 137 * Set more accurate bounds (Herbert Valerio Riedel). 138 139texmath (0.11.1.1) 140 141 * Fix building with ghc-8.6.1 by removing need for now missing 142 MonadFail instances (Jonas Scholl). 143 * TeX reader: Allow operators like `/` to be scaled (#120). 144 * TeX reader: Improved efficiency of basicEnclosure. 145 * TeX reader: Handle `\bmod` (#115). 146 147texmath (0.11.1) 148 149 * OMML writer: Use m:acc for accents in OMML (#119). This fixes 150 some spacing issues for e.g. the translation of `\dot{m}`. 151 152texmath (0.11.0.1) 153 154 * OMML writer: use zero-width space to avoid dashed box (#118). 155 In Word, a dashed box shows up for empty text runs in 156 exponents and bases, or empty exponents and bases. So 157 we use a zero-width space in these contexts. 158 159texmath (0.11) 160 161 * Changed treatment of non-ASCII characters. 162 Previously we ensured that the output of conversion to tex 163 was pure ASCII. This meant rendering "ä" as "a", for 164 example, and it meant that many characters (e.g. Chinese) 165 simply got replaced with an empty string, while others 166 got replaced with "[?]". 167 168 This was not a particularly helpful behavior. Including 169 the unicode characters verbatim doesn't interfere with 170 latex compilation. They often won't show up in the generated 171 math, but that is no worse than what happened before. 172 173 This change passes through unicode characters unchanged 174 when they can't be converted to standard LaTeX commands. 175 176 An important reason for including the unicode characters 177 is that pandoc uses TeX to represent math in its AST. 178 So, for example, if you convert HTML with mathml to docx, 179 you'll currently lose all Chinese characters, since they'll 180 disappear in the TeX intermediary, even though a direct 181 mathml to ooml conversion would have passed them through. 182 With this change, these conversions will work better 183 (see jgm/pandoc#4642). 184 185 + Removed Text.TeXMath.Unicode.ToASCII (API change). 186 + Removed cbits that were needed for that module. 187 + Modified Tex.TeXMath.Unicode.ToTeX to pass through 188 unicode characters that can't be converted, rather 189 than trying to asciify them or remove them. 190 191 * Render degree symbol in tex as `{^\circ}`. 192 193texmath (0.10.1.2) 194 195 * eqn writer: use uppercase letters in unicode escapes (jgm/pandoc#4597). 196 197texmath (0.10.1.1) 198 199 * Handle multicharacter operators better in Eqn, TeX, OMML (#109). 200 201 * OMML reader: unwrap `<w:...>` tags immediately under `<m:oMath>` 202 (#111, Jesse Rosenthal). 203 204texmath (0.10.1) 205 206 * Expose Text.TeXMath.TeX (TeX rendering functions) (#108). 207 This is needed in order to use getTeXMath from Text.TeXMath.Unicode.ToTeX. 208 * Pandoc writer: don't insert punctuation space before explicit space 209 (#107). E.g. in `2,\!4`. 210 * Fix end-line command ('\\') in AMSmath environments (ARATA Mizuki). 211 The end-line command in AMSmath environments does not allow spaces 212 before its optional argument. 213 * Use `\in` for SMALL ELEMENT OF in "base" (Vaclav Haisman). 214 215texmath (0.10) 216 217 * Use `\ni` in base for U+220D (#103). 218 * Improved unicode -> tex symbol lookup. Previously we had many 219 cases where the lookup table would map a unicode character to 220 the empty string for the base package, and this would print finding 221 a good match in another package in the environment. 222 * Added support for `\symbf` (#101). 223 * Revert "migrating the lookup structures for Unicode/ToTex.hs to 224 use C source files to accelerate builds." This change gave us somewhat 225 faster builds (using less memory), but at a huge cost of 226 maintainability. 227 * Removed AlignDefault from Alignment (API change, #102). 228 AlignDefault doesn't make sense for a converter between 229 formats that may have different defaults. We now properly treat 230 centering as the default in MathML and OMML input. 231 232texmath (0.9.4.4) 233 234 * Update tests that should have been updated for 0.9.4.3. 235 236texmath (0.9.4.3) 237 238 * MathML writer: put linethickness attribute directly on mfrac 239 element. This fixes binomial rendering. 240 241texmath (0.9.4.2) 242 243 * Pandoc writer: better handle accented characters (jgm/pandoc#3922). 244 245texmath (0.9.4.1) 246 247 * Improved handling of accents and upper/lower delimiters (#98). 248 * cgi: use cloudflare cdn for mathjax. 249 250texmath (0.9.4) 251 252 * Added writer for GNU eqn format (used with *roff). 253 254 + New module Text.TeXMath.Writers.Eqn, exporting writeEqn. 255 + Moved handleDownup to Shared. 256 + Add eqn output option in texmath executable. 257 + Add eqn writer tests. 258 259texmath (0.9.3) 260 261 * Expose pMacroDefinition in Text.TeXMath.Readers.TeX.Macros, 262 with generalized type. 263 264texmath (0.9.2) 265 266 * Support `\newenvironment` and `\renewenvironment`. 267 268texmath (0.9.1.1) 269 270 * Added program to generate cbits/{key,val}ToASCII.c from a data file. 271 * Migrate lookup structures for Unicode/ToTex.hs to use C 272 source files to accelerate builds (Carter Tazio Schonwald). 273 * Allow \boldsymbol + a token without braces. 274 And same for other styling commands. Closes #94. 275 * Better ghc-prof-options. 276 277texmath (0.9.1) 278 279 * Pandoc writer: add thin space after math operators. 280 * TeX reader: improve parsing of `\mathop` to allow 281 multi-character operator names. 282 * Minor optimizations. 283 * Added Ord instances to Exp and associated types. 284 285texmath (0.9) 286 287 * OMML writer: Properly handle nary inside delimiters (#92). 288 Previously under-overs inside delimiters didn't get 289 converted to nary the way they did outside of delimiters. 290 * TeX reader: Support bm, mathbold, pmd. 291 * OMML reader: Handle w:sym (#65). 292 * New module, Text.TeXMath.Unicode.Fonts, for MS font code point 293 lookup. Copied from pandoc Text.Pandoc.Readers.Docx.Fonts, 294 which will be changed to import this. [API change] 295 * Fixed typo in test program for round-trip tests. 296 * Parse math inside text constructions (#62). E.g. 297 `\text{if $y$ is greater than $0$}` Text and math can nest indefinitely. 298 * Modify test suite so tests can be marked as "ought to raise error." 299 So far this is only used in mml. If the test is called foo 300 and `readers/mml/foo.error` exists, then the test is expected 301 to raise a parse error. 302 * MathML reader err: Don't print colon after line number. 303 * Restore proper error handling to MathML reader. Note that the tests 304 need to be redone, since they assumed the old behavior of just 305 returning empty elements on parse errors. 306 307texmath (0.8.6.7) 308 309 * TeX reader: treat backslash + newline as like backslash + space. 310 Previously this case gave an error. See jgm/pandoc#3189. 311 312texmath (0.8.6.6) 313 314 * Allow pandoc-types 1.17.*. 315 316texmath (0.8.6.5) 317 318 * Fixed transposition of sub/super on operators (jgm/pandoc#3040). 319 320texmath (0.8.6.4) 321 322 * Support 'equation' environment, without the numbering of course. 323 324texmath (0.8.6.3) 325 326 * Use POST instead of GET for texmath-cgi. 327 328texmath (0.8.6.2) 329 330 * Fixed array alignment issues (jgm/pandoc#2864, jgm/pandoc#2310). 331 * Use 1 and 0 for _Hide attributes, rather than on and off. 332 Officially it seems that either 1/0 or true/false are wanted. 333 * Fixed EUnderOver for omml output. Previously both the under and 334 the over part were being placed under (jgm/pandoc#2775). 335 336texmath (0.8.6.1) 337 338 * OMML writer: Fixed rendering of roots, so that the degree appears 339 in the right place. 340 * OMML writer: Don't include empty rPr elements. 341 342texmath (0.8.6) 343 344 * TeX reader: Support hundreds more math symbols (all of those defined in 345 Text.TeXMath.Unicode.ToTeX), including `\nwarrow`, `\swarrow`, 346 `\nearrow`, `\searrow` (#90). 347 348texmath (0.8.5.1) 349 350 * OMML writer: Fixed order of elements in nary formulas to conform 351 to OMML spec (#88, Niko Weh). `<e>` must follow the `<sup>` and `<sub>` 352 parts of `<nary>`. This fixes rendering issues in LibreOffice 353 (though Word copes with the incorrect order). 354 * Added Paths_texmath to Other-Modules for texmath executable. 355 356texmath (0.8.5) 357 358 * TeX parser: Support limited styling inside \DeclareMathOperator (#85). 359 * TeX reader: Correctly parse \mbox. Its argument is text mode. 360 * Updated mathml tests to use mo for operators. 361 * TeX reader: support mathopen, mathclose, mathpunct. 362 * MathML writer: render EMathOperator as mo, not mi (#86). 363 * MathML: handle leading space in EText (#87). 364 * Take --version in executable from cabal metadata. 365 * Added Paths_texmath to other-modules. 366 367texmath (0.8.4.2) 368 369 * Fixed overbrace, underbrace (#82). Previously we were using the wrong 370 character: U+FE37 instead of U+23DE. This didn't work in Word. 371 * Support \mathop, \mathrel, \mathbin, \mathord 372 * MathML - render Symbol Ord as mi, not mo (#83). 373 * Handle align environments with > 2 cells per row (#84). 374 375texmath (0.8.4.1) 376 377 * Added stack install instructions. 378 * Fixed bold-italic in OMML (#76). Previously `\mathbfit` didn't work 379 properly in OMML output. 380 * Ignore `\nonumber` (#79). 381 * Allow styling in `\operatorname` e.g. `\operatorname{\mathcal{L}}` (#80). 382 * Fixed bug in `supHide` and `subHide` for OMML. This led to little 383 empty boxes being displayed in integrals with subscripts but no 384 superscripts. See jgm/pandoc#2571. 385 * Implemented `\mod` as a math operator (#81). This doesn't capture all the 386 spacing subtleties of the amsmath version, but should be good enough 387 for most purposes. 388 * Allow pandoc-types < 1.17. 389 390texmath (0.8.4) 391 392 * Improved symbol spacing in Pandoc output (jgm/pandoc#2261). 393 This change avoids putting space around binary symbols that 394 come at the beginning or end of a group, or appear on their 395 own. It also avoids spacing on a binary symbol that follows 396 a Bin, Op, Rel, Open, or Punct atom, in accord with 397 TeXBook Appendix G. We could go farther towards exactly 398 matching the TeXBook rules, but this simple change goes some of 399 the way. 400 * Added stack.yaml. 401 402texmath (0.8.3) 403 404 * Parse uppercase Greek letters as EIdentifier, not ESymbol Op. 405 This fixes handling of things like `$Lambda^1$`, particularly in omml. 406 407texmath (0.8.2.2) 408 409 * Handle `.` after number with no following digits. 410 411texmath (0.8.2.1) 412 413 * Handle bare hyphen in `\text{...}`. Closes jgm/pandoc#2274. 414 * Support `\ltimes` and `\rtimes` in the TeX reader (Arata Mizuki). 415 * Slightly more efficient number parser. 416 417texmath (0.8.2) 418 419 * Better handling of decimal points. Decimal points are now parsed 420 as parts of numbers, not as separate symbols. E.g. in MathML they 421 now appear in `<mn>` elements. Closes #74. 422 423texmath (0.8.1) 424 425 * OMML: Don't force everything into Roman font by default. 426 This change ensures that variables will be italic by 427 default in Word. See jgm/pandoc#2075. 428 429texmath (0.8.0.2) 430 431 * Fixed typo in `defaultEnv` to include `amssymb` (#68). 432 * Moved some lookup tables to C, and disabled aggressive 433 profiling defaults, to avoid excessive memory usage in 434 compiling with clang (#70). 435 * Support `\newcommand*` in `parseMacroDefinition` (jgm/pandoc#2005). 436 * Fixed order bug for over/under in OMML reader (#66). 437 * Support `\boldsymbol` (#67). 438 439texmath (0.8.0.1) 440 441 * Added network-uri flag. This addresses the split of network 442 and network-uri packages. 443 * OMML reader: change default accent (Jesse Rosenthal). 444 The default had previously been set as accute (possibly as a 445 placeholder). It appears to be circumflex/hat instead. 446 447texmath (0.8) 448 449 * Added OMML reader (Jesse Rosenthal). 450 * Support latex \substack (#57). 451 * Added EBoxed and implemented in readers and writers (#58). 452 * Handle latex \genfrac. Use \genfrac for \brace, \brack, 453 etc. when amsmath is available. 454 * Improvements in handling of space characters. 455 * Use ESpace rather than EText when a mathml mtext just contains 456 a space. 457 * Use \mspace when needed to get latex spaces with odd sizes, rather 458 than finding the closest simple command. 459 * Use Rational instead of Double in ESpaced, EScaled. 460 * Shared: Export getSpaceWidth, getSpaceChars. 461 * Shared: Export fixTree, isEmpty, empty (formerly in MathML reader). 462 463texmath (0.7.0.2) 464 465 * TeX reader: further improvements in error reporting. 466 Instead of reporting line and column, a snippet is printed 467 with a caret indicating the position of the error. Also 468 fixed bad position information when control sequences are 469 followed by a letter. 470 471texmath (0.7.0.1) 472 473 * TeX reader: 474 475 + Improved error reporting. 476 + Optimized parser. 477 + Treat `\ ` as ESpaced rather than ESymbol. 478 + Internal improvements, including using the parsec3 interface 479 instead of the older parsec2 compatibility interface. 480 481 * Added tests for phantom. 482 483texmath (0.7) 484 485 * Changes in Exp type: 486 487 + Removed EUp, EDown, EDownup, EUnary, EBinary. 488 + Added EFraction (and FractionType), ESqrt, Eroot, EPhantom. 489 + Added boolean "convertible" parameter to EUnder, EOver, EUnderover. 490 + Changed parameter of EScaled from String to Double. 491 + Changed parameter of ESpace from String to Double. 492 + Removed EStretchy. 493 + Added EStyled, corresponding to mstyle in mathml, and \mathrm, 494 \mathcal, etc. in TeX (which can contain arbitrary math content, 495 not just text). 496 + Changed the type of EDelimited. The contents of an EDelimited are 497 now either Right Exp or Left String (the latter case represents a 498 fence in middle position, e.g. \mid| in LaTeX). 499 500 * Module reorganisation: the exposed interface has been completely 501 changed, and modules for reading MathML and writing TeX math 502 have been added: 503 504 + All writers now reside in Text.TeXMath.Writers. 505 - Text.TeXMath.MathML -> Text.TeXMath.Writers.MathML. 506 toMathML and showExp are removed, writeMathML added. 507 - Text.TeXMath.OMML -> Text.TeXMath.Writers.OMML. 508 toOMML and showExp removed, writeOMML added. 509 - Text.TeXMath.Pandoc -> Text.TeXMath.Writers.Pandoc. 510 toPandoc removed, writePandoc added. 511 - New module Text.TeXMath.Writers.TeX, exporting writeTeX, 512 writeTeXWith, addLaTeXEnvironment (the latter giving control 513 over which packages are assumed to be available). 514 515 + All readers now reside in Text.TeXMath.Readers. 516 - Text.TeXMath.MathMLParser -> Text.TeXMath.Readers.MathML, 517 exporting readMathML. 518 - Text.TeXMath.Readers.TeX nows exports readTeX rather than 519 parseFormula. 520 521 + New modules for unicode conversion: Text.TeXMath.Unicode.ToASCII, 522 Text.TeXMath.Unicode.ToTeX, Text.TeXMath.Unicode.ToUnicode. 523 524 + Two MathML specific modules: Text.TeXMath.Readers.MathML.EntityMap, 525 Text.TeXMath.Readers.MathML.MMLDict. 526 527 + In Text.TeXMath, all the XtoY functions have been removed 528 in favour of rexporting raw reader and writer functions. The 529 data type Exp is now also exported. 530 531 * Bug fixes and improvements. 532 533 + TeX writer: Properly handle accents inside \text{}. 534 Use real text environments for EText (\textrm, not \mathrm). 535 Improved handling of scalers (\Big etc.). Use amsmath matrix 536 environments when appropriate. Fixed \varepsilon. 537 + MathML writer: Omit superfluous outer mrows. Add position 538 information to fences. 539 + OMML writer: Handle \phantom. 540 + Pandoc writer: Use unicode characters to support Fraktur and 541 other text styles. 542 + TeX reader: Use EUnder/Over for \stackrel, \overset, \underset. 543 Improved handling of primes. Fixed \notin. Avoid superfluous 544 grouping of single elements. Improved handling of scalers (\Big etc.). 545 Handle \choose, \brace, \brack, \bangle (#21). 546 + Macros: Don't raise an error if applying a macro fails to 547 resolve to a fixed point; instead, just return the original string. 548 549 * Rewrote test suite as a proper cabal test suite. Added 550 --regenerate-tests and --round-trip options. 551 552 * Updated texmath online demo for bidirectional conversion. 553 554 * Removed cgi and test flags. Added executable flag to build texmath. 555 556 * Modified texmath so it works like a cgi script when run as 557 texmath-cgi (through symlink or renaming). Removed dependency on 558 the cgi package. 559 560texmath (0.6.7) 561 562 * New Module: Text.TeXMath.Unidecode, a module for approximating 563 unicode characters in ASCII. 564 * New Module: Text.TeXMath.Shared, a module for shared lookup 565 tables between the various readers and writers 566 * New Module: Text.TeXMath.MathMLParser, exporting readMathML. 567 * New Module: Text.TeXMath.EntityMap, exporting getUnicode, 568 a conversion table from MathML entities to unicode characters. 569 * New Module: Text.TeXMath.UnicodeToLaTeX, exporting getLaTeX, 570 converting a string of unicode characters to a string of equivalent LaTeX 571 commands. 572 * New Module: Text.TeXMath.LaTeX, replacing Text.TeXMath.Parser, 573 exporting toTeXMath. 574 * New Module: Text.TeXMath.MMLDict, implements a lookup table from 575 operators to their default values as defined by the MML dictionary, 576 exporting getOperator. 577 * New Module: Text.TeXMath.Compat, maintaining compatibility with 578 mtl < 2.2.1. 579 * Modified Text.TeXMath to export the primitive readers, as well as 580 mathMLTo{Writer} for all writers 581 * Modified: Text.TeXMath.Types: added additional record types for 582 Text.TeXMath.MMLDict and Text.TeXMath.UnicodeToLaTeX. 583 New Exports: Operator(..), Record(..). 584 * Modified test suite: use cabal test, added significant number of tests. 585 * Added recognition of the LaTeX command \phantom 586 587texmath (0.6.6.3) 588 589 * Use combining tilde accent for \tilde. Closes pandoc #1324. 590 591texmath (0.6.6.2) 592 593 * Allow \left to be used with ), ], etc. Ditto with \right. 594 Previously only (, [, etc. were allowed with \left. Closes pandoc #1319. 595 596texmath (0.6.6.1) 597 598 * Support \multline (previously it was mispelled "multiline") 599 * Changed data-files to extra-source-files. 600 601texmath (0.6.6) 602 603 * Insert braces around macro expansions to prevent breakage (#7). 604 * Support \operatorname and \DeclareMathOperator (rekka) (#17). 605 * Support \providecommand (#15). 606 * Fixed spacing bugs in pandoc rendering (#24). 607 * Ignore \hline at end of array row instead of failing (#19). 608 609