TeXML

Developer(s)| Oleg A. Paraschenko
Stable release|

December 2010

Written in| Python
Operating system| Cross-platform
Type| Typesetting
License| MIT/X Consortium license
Website| http://www.getfo.org/

TeXML [tɛχːml] is – as a process – a TeX-based alternative to XSL-FO.

TeXML has been developed as an open-source project with the aim to automatically present XML data as PDF with sophisticated layout properties.

By means of an auxiliary structure definition, TeXML overcomes the syntax-based differences between TeX and XML.

Technically, the markup elements of TeX are described by using the XML syntax.

## History

[edit]

TeXML is a further development of a specification originally defined by Douglas Lovell at IBM, where Structure and Transformation have to be distinguished.

* Structure

The XML definition of the TeXML structure can be considered as being completed since 1999 (TeXML.dtd).

It represents the markup link between TeX and XML.

* Transformation

The transformation processes run smoothly since the end of 2010, a productive application of the technology is possible.

The original approach of using a Java application was published by IBM at IBM alphaWorks, but is no longer present. It was presented in a paper

at the 1999 annual meeting of the TeX Users Group.[1]

## Application

[edit]

TeXML is used to generate Technical Documentation from XML data.

After the transformation TeXML → TeX, the entire LaTeX-defined range of TeX macros is available.

By means of using TeX macros, it is possible to publish XML data having configurable layout options.

## Specials

[edit]

* TeXML allows automatic publication of XML data by means of a typesetting engine, which was originally designed for manual typesetting.
* In contrast to publication using the XSL-FO technique layout properties of XML data can be manipulated by using exception rules in the intermediate code.
* Exception rules are learned by the publication process, the layout properties are thus enhanced with each generation cycle.
* High-speed publishing processes, an increase in speed of up to 100 times compared to XSL-FO based processes, especially in the case of large documents.

## TeXML structure

[edit]

The Document Type Definition (DTD) of the TeXML structure consists of the XML elements:

* Root element: TeXML
* Encoding commands: cmd
* Encoding environments: env
* Encoding groups: group
* Encoding math groups: math and dmath
* Encoding control symbols: ctrl
* Encoding special symbols: spec
* PDF literals: pdf

## Composition of a TeXML document

[edit]

An example of an XML document, which has already been transformed into the TeXML structure:

<TeXML>
<TeXML escape="0">
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
</TeXML>
<env name="document">
Misinterpretation of special characters as being functional characters is called "Escaping", thus: $, ^, >
</env>
</TeXML>

## TeXML process

[edit]

The TeXML process transforms XML data which are described in the auxiliary intermediate TeXML structure to TeX:

\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Misinterpretation of special characters as being functional characters is called "Escaping", thus: \textdollar{}, \^{},
\textgreater{}
\end{document}

## Supporting processes

[edit]

Works on the "Data Collection Level" (XML) and on the "Publication Level" (TeX) are supported by different tools, for example:

* Data Collection Level: XML editors

– Eclipse (IDE), open source
– other free XML editors

* Publication Level: synchronization between code and generated PDF by means of pdfSync:

– Windows PC: editor MiKTeX
– Mac OS X: editor TeXShop

## Literature

[edit]

* Frank Mittelbach The LaTeX Companion Archived 2004-05-18 at the Wayback Machine – Tools and techniques for computer typesetting
* Michel Goossens The XeTeX Companion – TeX meets OpenType and Unicode

## External links

[edit]

* SGML/XML and (La)TeX – Approaches to transform XML to TeX
* TeXML: an XML syntax for TeX – TeXML project (Download)
* How to embed pdfsync into pdftex – Synchronization between Code and PDF
* TeXML: Typesetting XML with TEX – Original concept of the TeXML project
* Resurrecting TEX in the XML world \- 2007 TUGboat article by Oleg Parashchenko re-motivates TeXML
* Generate TEX documents using pdfscript \- 2010 TUGboat article by Oleg Parashchenko describes Python implementation

1. ^ [1], TUG-99