Skip to content
Deyan Ginev edited this page Mar 17, 2014 · 2 revisions

We have the rough beginnings of a Plugin architecture for LaTeXML. A Plugin can extend LaTeXML in various ways from simply defining a new binding for a (La)TeX package to more complex tasks such as converting LaTeX to DOC format. They may be developed for special purposes or with the intent of eventually being adopted into the master distribution once complete. This page gives a (currently very) rough description of what a LaTeXML plugin is, and lists plugins that we are aware of that you may find useful.

Plugin Overview

When LaTeXML processes documents it auto-discovers certain files of various kinds that are referred to in some fashion by the document, command-line options or profiles (which reflect collections of options). These files currently include (La)TeX packages (which by default LaTeXML won't attempt to process), LaTeXML-specific bindings for those packages, CSS and XSLT stylesheets, javascript libraries, profiles, and Manifest file generators.

In some cases, bindings are able to add processing rules to existing postprocessors (such as defining new translations of LaTeXML's math representation to MathML or OpenMath). We intend to extend this mechanism to allow entirely new post-processors, but since the order that post-processors run is critical, we first have to devise a means to clarify when a new post-processor will run.

Thus, a LaTeXML Plugin is a Perl Module typically named something like LaTeXML-Plugin-Foo which will declare a dependence on LaTeXML and that simply places its files in the places LaTeXML expects to find them (which needs documentation).

Assuming that LaTeXML.pm is installed in INSTALLDIR, LaTeXML will look in:

  • (La)TeX packages: wherever kpsewhich will find them
  • LaTeXML Bindings: INSTALLDIR/LaTeXML/Packages/foo.sty.ltxml
  • CSS: INSTALLDIR/LaTeXML/resources/CSS/foo.css
  • XSLT: INSTALLDIR/LaTeXML/resources/XSLT/foo.xsl
  • Javascript: INSTALLDIR/LaTeXML/resources/javascript/foo.js
  • Profiles: INSTALLDIR/LaTeXML/resources/Profiles/foo.opt
  • Manifest creators: INSTALLDIR/LaTeXML/Post/Manifest/foo.pm

Known LaTeXML Plugins