7 Mathematische Formeln

Da xml2lms das Schreiben der XML-Quelldateien im normalen Editor ohne weitere Hilfsmittel ermöglichen soll, ist die Verwendung von MathML für den Formelsatz aufgrund der Komplexität ungeeignet. Statt dessen wurde der auch von DocBook-XML unterstützte Ansatz gewählt, die Formeln in LaTeX zu setzen und für die HTML-Ausgabe geeignet als Bild zu rendern. Alternativ wäre ein Rendern mit Hilfe von jsmath [URL:jsMath] jsMath vorstellbar.

In LaTeX geschriebene mathematische Formeln werden mit dem <eq>-Tag eingebunden. Enthält die Formel XML-Steuerzeichen (<, >, &, ...), muss sie mit einem CDATA-Tag geschützt werden:

<eq [id="Id" ] [class="class"]>
[
<![CDATA[
]
TeX-Formel
[
]]>
]
</eq>

Der Parameter class kann folgende Werte annehmen:

KlasseBeschreibung
equationabgesetzte Formel
alignmehrzeilige Formel
Tabelle 7.1 Klassen des Elements eq

Ganz konkret werden die Formeln über PDFLaTeX mit den Paketen amsmath und amsfonts gerendet.

Test 1:

\begin{equation*}
c = \sqrt{a^2+b^2}
\end{equation*}

Quelltext:

sample-math1.xml
<eq>
c = \sqrt{a^2+b^2}
</eq>

Test 2:

\begin{align*}
x_1 &< \log y && \text{Zeile 1}\\
x_2 &> b+c    && \text{Zeile 2}\\
\end{align*}
Formel 7.1

Quelltext zu Formel 7.1:

sample-math2.xml
<eq id="eq-test" class="align">
<![CDATA[
x_1 &< \log y && \text{Zeile 1}\\
x_2 &> b+c    && \text{Zeile 2}\\
]]>
</eq>

Da die Formel XML-Steuerzeichen enthält, muss sie in einem CDATA-Block geschützt werden.

Eine Inline Formel wird mit dem m-Tag ohne Attribute erzeugt. Ein Beispiel \begin{math}
\Pi(n) \approx \frac{n}{\ln n}
\end{math} steht hier und hier: \begin{math}
c^2=a^2+b^2
\end{math}.

Quelltext:

sample-math3.xml
<m>
\Pi(n) \approx \frac{n}{\ln n}
</m>

Die Verarbeitung erfolgt für die HTML-Ausgaben über einen externen LaTeX-Aufruf. Aus der Formel wird eine eigene LaTeX-Datei erzeugt, diese übersetzt und mit Hilfe von dvips und GhostScript in eine PNG-Graphik konvertiert.