## Release Notes

### Version 1.2.2 [r584] (24/05/10)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.2.1 [r545] (02/04/10)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.2.0 [r533] (04/02/10)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.2.0-beta1 [r518] (26/11/09)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.1.0 [r428] (19/06/09)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.1.0-beta2 [r415] (16/06/09)

Details on this (and future) releases can be found at the Maven Developer Reports Changes Report  page.

### Version 1.1.0-beta1 [r390] (08/06/09)

• Project now uses the Maven management and comprehension tool. SnuggleTeX is now split into 4 sub-modules: snuggletex-core, snuggletex-jeuclid, snuggletex-upconversion and snuggletex-webapp.
• snuggletex.jar is now split into 3 distribution JARs.
• Upgraded dependencies Saxon and JEuclid to versions 9.1.0.6 and 3.1.5 respectively.
• Added experimental up-conversion module that attempts to convert the raw Presentation MathML produced by SnuggleTeX into Content MathML and/or Maxima input form, providing the raw MathML is suitably simple and obeys certain heuristic conventions.
• SnuggleTeX now does a better job of attempting to pair up parentheses in mathematical expressions. This is now done by default and works even for unbalanced brackets, which are implicitly balanced against the start/end of the current group as appropriate. (Note however that unbalanced brackets are not output using MathML mfenced elements.)
• Comments are now completely discarded during parsing and not kept in the parse tree. This fixes an issue with using them in places that the parse tree could not support.
• Added new DOMPostProcessor class that is passed to DOMOutputOptions and allows you to hook in a class that will post-process the raw DOM produced by SnuggleTeX.
• The downConverting property of DOMOutputOptions has been removed. The same functionality is now invoked by registering an instance of DownConvertingPostProcessor as a DOMPostProcessor, as described above.
• Renamed internal DOMBuilderFacade as DOMBuildingController.
• Added new MathMLUtilities with some convenience methods for working with MathML documents, including simple methods for parsing and serializing MathML documents, and extracting annotations.
• Added utility class ClassPathURIResolver that makes it easy to locate XSLT Source Objects via the ClassLoader. Existing classes which do this kind of thing have been updated to use this resolver.
• Removed the inferringMathStructure property from SnuggleConfiguration. This functionality is provided (and extended) in the new up-conversion extension.
• The old AbstractWebPageOptions class and its 2 concrete sublcasses have been replaced by a single WebPageOutputOptions. A helper class called WebPageOutputOptionsTemplate makes it easier to create suitably-configured instances of these options from specified WebPageTypes.
• JEuclid-based outputs are now obtained by using the JEuclidUtilities helper class to construct a suitable WebPageOutputOptions that is set up to perform the JEuclid magic automatically. Note that you will need to ensure that snuggletex-jeuclid.jar is in your ClassPath here.
• Added extra demos to the SnuggleTeX webapp and rearranged/improved documentation.

### Version 1.0.1 [r228] (07/01/09)

• Fixed bug in the handling of the array environment that occurred if too many columns were specified.
• Added extra trigonometric and hyperbolic functions to the set of standard functions. (These are not normally defined in LaTeX.)
• Improved the heuristics for inferring instances of "apply function" when inference mode is turned on. (These ideas will be developed further in 1.1.)
• Minor updates and fixes to the documentation web pages.

### Version 1.0.0 [r216] (08/08/08)

• Moved top-level utility classes to new snuggletex.utilities package and renamed the internal snuggletex.conversion package as snuggletex.internal.
• Tidied up the naming of classes inside snuggletex.dombuilding and tidied up the CommandOrEnvironment hierarchy, removing redundant constructors from BuiltinCommand and BuiltinEnvironment as their functionality was replaced by methods in DefinitionMap.
• Migrated simple utility class for indenting LaTeX input from Aardvark, and added some new methods to SnuggleUtilities.
• SnuggleTeX JAR is no longer indexed.
• Added support for \verb* and a SnuggleTeX-specific \literal command.
• Fixed the output for \^u — I had mapped it to the wrong character!
• Fixed the alignment of columns in the eqnarray environments and added test to ensure that no more than 3 columns are used, resulting in a TDEM01  error otherwise.
• Added the \xmlId and \anchor commands, as well as starred variants of these and similar ones. Moved XML Name/ID checking methods into DOMBuilder to make them more widely usable by handler classes.
• Continued to improve the documentation and rearranged the navigation slightly.

### Version 1.0.0-beta5 [r181] (01/08/08)

• Fixed rendering issue with the array environment that was causing later tokens to be handled wrongly.
• Fixed handling of negative numbers, so that $1-2$ is treated correctly as a subtraction and not the numbers 1 and -2 juxtaposed(!)
• Added support for \subsection and \subsection*.
• The \href command now checks that the given URI is valid and raises the new ErrorCode.TDEX04 if not.
• Improved LaTeXTokeniser to allow built-in environments containing VERBATIM content, which generalises the existing support for the standard LaTeX verbatim environment and is now in line with existing support for similar content within command arguments.
• Simplified the use of "default" configurations and options in SnuggleEngine and SnuggleSession. Also fixed a bug in the application of such options in SnuggleSession.buildXMLString().
• Added snuggletex.extensions package for extras and samples that enhance SnuggleTeX’s core functionality. The build process now creates a binaries - one without and one with these extensions. The reason for doing this is that the extensions require a lot of 3rd party libraries. (See the JEuclid item below.)
• Moved (still experimental) feature for optionally down-transforming simple MathML expressions into plain old XHTML + CSS from Aardvark, where it had been incubating.
• Moved (still experimental) extension for creating "legacy" XHTML + images web pages from Aardvark, where it was originally developed. This uses the JEuclid package to convert MathML to images.
• Tidied up the handling of internal XSLT stylesheets to make it easier to use standalone SnuggleTeX tools and integrate with external Stylesheet caches.
• Added LinkMapper class and support for associating a URL with a SnuggleInput, allowing hypertext links to be intercepted and remapped if necessary.
• Now bundles Saxon 9.1.0.1, which no longer needs to be explicitly told not to warn about running with XSLT 1.0 stylesheets.
• Updated web page generation so that any supplied XSLT stylesheets are applied before createWebPage() returns.
• MathMLWebPageBuilder now checks whether the serializing XSLT created via TrAX is a version of Saxon supporting XSLT 2.0 and, if so, uses the xhtml output method rather than xml when appropriate.
• Renamed WebPageType.DEFAULT as WebPageType.MOZILLA and added WebPageType.UNIVERSAL_STYLESHEET as an extra convenience.
• Added Java API documentation generation to the build process, which puts it in the demo webapp.
• Significantly changed the structure of the demonstration webapp; documentation pages are now generated as part of the build process rather than being generated dynamically.
• Minor changes to web headers and footers ahead of rename of "School of Physics" to "School of Physics and Astronomy".
• Refactored and updated the documentation pages significantly, though they need a lot more work before I’ll be happy with them.
• Enhanced the "Try Out" page so that it defaults with a less trivial example that users can play around with.
• Renamed a lot of the public API classes to be more consistent. In particular, SnuggleTeXEngine is now SnuggleEngine, SnuggleTeXSession is now SnuggleSession, Snapshot is now SnuggleSnapshot, DOMBuilderOptions is now DOMOutputOptions and *WebPageBuilderOptions are now *WebPageOptions. The old SnuggleTeX class has been split into SnuggleConstants and SnuggleUtilities.

### Version 1.0.0-beta4 [r102] (25/06/08)

• Further improvements to the output of the MessageFormatter when reporting the results of large substitutions.
• Fixed bug in handling edge case inputs like {\rm}.
• Fixed silly edge case bug when handling trivial tabular environments.
• Added support for \aa and \AA.
• Improved handling of \rm and \textrm so that they can be used in MATH mode. The former behaves in the same way as \mathrm; the latter behaves like \mbox{\mathrm{...}}.
• Added support for —, < and > as bracket operators compatible with \left and \right.
• Added support for having trailing \ on lines, behaving as in LaTeX. (I.e. effectively concatenating the two lines with a ’’ command.)
• Fixed bug in matching up curly and square brackets when the content contains a LaTeX comment containing close brackets. These were being counted as balancers, rather than being ignored.
• Simple commands were being too zealous in absorbing trailing whitespace by also stripping newlines. Now fixed.
• Corrected the output of mtext in that leading and trailing whitespace is now added as separate mspace elements.
• Added support for the array environment.
• Added convenience method to SnuggleSession that can create a standalone NodeList inside a fresh Document, which can be sometimes be useful.
• Fixed bug in the reporting of the start index of a dollar math environment.
• The eqnarray* environment and friends now generate MathML annotations (if requested).
• Added some new static methods to SnuggleTeX, such as some convenience methods for driving web page generation and a method for extracting a SnuggleTeX annotation from a created MathML math element (providing annotation generating is turned on, of course).
• Added support for handling \mathcal, \mathsc,\mathbb and \mathfrak by adding a mathvariant attribute to resulting MathML identifier elements. This in its own isn’t always enough (e.g. default Firefox) so I’ve also added extra support for mapping (safe) Unicode characters to alternative characters in much the same way as existing tools. This can be turned on in DOMOutputOptions.
• Slightly improved sample pages in the documentation.

### Version 1.0.0-beta3 [r76] (29/05/08)

• Fixed silly bug in the handling of multi-line verbatim environments.
• Fixed bug in the recording of the slices of compound tokens, introduced by an earlier over-simplification to how this all worked.
• Added belated support for \!. Need to test browser support for this...
• Fixed handling of \hline inside tabular environments. I had forgotten that this explicitly starts a new row!
• Added support for verbatim-mode arguments in built-in commands and environments. (We don’t support having verbatim-mode content for environments yet, apart from the usual verbatim environment.)
• Added special \href macro to make it easy to create a hypertext link with optional link text. (This may change before 1.0.0)
• Added \xmlName command which takes a single argument (in verbatim mode) and verifies that it is a proper XML Name.
• Improved information provided by MessageFormatter class when expanding out error messages.
• Added support for \vert and \Vert, both as standalone operators and as combiners for \left and \right. Changed the way math bracket operators are represented internally to accommodate this as these are the first examples where the openers and closers are identical, hence can’t be inferred.

### Version 1.0.0-beta2 [r57] (20/05/08)

• Distribution ZIPs now package all files into a single base directory, which is more convenient for users.
• Binary ZIP distribution now contains a src.zip file containing the SnuggleTeX source code (excluding classes for the test suite and demonstration webapp) as a convenience for users of IDEs such as Eclipse.
• MathML annotations are now generated correctly (when requested)
• Added support for \hspace (and \hspace*, though without its proper LaTeX semantics), including all units supported by LaTeX plus the em amd ex units commonly used on the web.
• Fixed an obscure bug when trying to generate XHTML errors for errors occurring within a MathML element that has no parent XHTML element.
• Certain math operators (e.g. summation) now generate limits using munder and friends rather than msub et al when used in displaymath mode.
• Added support for -- and ---, which result in the appropriate Unicode dash characters.
• The \verb command now replaces spaces with non-breaking spaces in its output.

### Version 1.0.0-beta1 [r42] (13/05/08)

First public beta release.