- Author
-
William Morgan (mailto: [email protected])
- Copyright
-
Copyright 2005–2010 William Morgan
- License
-
GNU GPL version 2
Introduction
Ritex converts expressions from WebTeX into MathML. WebTeX is an adaptation of TeX math syntax for web display. Ritex supports most TeX math syntax, and supports macros.
For example, Ritex turns
\alpha^\beta
into
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mi>α</mi>
<mi>β</mi>
</msup>
</math>
How to get Ritex
To install, use RubyGems: gem install ritex. For examples and git instructions, see the home page: masanjin.net/ritex/
News about Ritex
See the blog: all-thing.net/label/ritex/.
Synopsis
require 'rubygems'
require 'ritex'
p = Ritex::Parser.new
ARGF.each { |l| puts p.parse(l) }
## or ...
ARGF.each do |l|
begin
puts p.parse(l)
rescue Racc::ParseError
$stderr.puts "invalid input"
end
end
See the documentation for Ritex::Parser for gory details.
Ritex’s MathML output
To be pedantic, Ritex is a WebTeX to MathML converter. WebTeX is an adapation of the TeX math syntax which is designed for web page display. WebTeX documentation can be found at:
http://stuff.mit.edu/afs/athena/software/webeq/currenthome/docs/webtex/toc.html
If you’re familiar with TeX math syntax, it’s mostly the same, but there are several important differences in WebTeX. Notably:
-
arrays: Use array syntax; there’s no no eqnarray or align
-
macro definitions: define; no newcommand or def
-
left and right no longer need “invisible” delimiters like “.”
These differences are explained in the WebTeX documentation.
Ritex also supports many of itex2MML’s various extensions to WebTeX, mainly consisting of additional aliases (e.g. infinity for infty) and markup (e.g. underoverset).
Comparison with itex2MML
itex2MML is another option for converting LaTeX-like math into MathML. It has Ruby bindings. Compared against itex2MML version 1.3.7 (3/7/2009), Ritex has several differences:
-
It supports macros.
-
It’s written in Ruby.
-
It fixes several output bugs:
-
Operators like < and > produce <mo> (math operator) tags instead of <mi> (math identifier) tags.
-
A sequence of letters like “abc” is treated as three separate variables and not as one variable. That’s The TeX Way (tm).
-
\ (backslash space) is a medium space, not an undefined character.
-
binom output does not add extra parentheses
-
Empty delimiters are accepted (e.g. “left” is sufficient; no need for “left.”) as per WebTeX spec.
-
cellopts{} can be elided in arrays as per WebTeX examples.
-
-
It’s slower.