reST modifications

Last update: 19.03.2009 (note about rst2html)

The list of roles and directives I've added to "my" reST.

Contents

Roles

In order to use own roles you have to modify a file .../doctuils/parsers/rst/roles.py — simply append myroles.py at end of roles.py, and copy roles_aux.py to the same directory where roles.py is located.

Simple math — math & cmath

Syntax of math expression has been borrowed from TeX; at the moment just subscripts and superscripts are supported. Small letters are italized, and some replacements are made.

Both roles math and cmath do the same thing, just produce nodes with different class names. For example my cmath style definition: display: block; text-align: center; font-size: larger.

Syntax:

:math:`expression`
:cmath:`expression`

Famous Einstein equation (e = m*c^2)

e = mc2

Determinant of matrix A4x4 (a_{11}*a_{22} - a_{12}*a_{21}):

det(A4x4) = a11a22a12a21

Cubic Bezier curve (p(t) = p_0 B^3_0(t) + p_1 B^3_1(t) + p_2 B^3_2(t) + p_3 B^3_3(t), 1 >= t >= 0):

p(t) = p0B30(t) + p1B31(t) + p2B32(t) + p3B33(t), 1 ≥ t ≥ 0

Polynomial of degree n (f(x) = a_0*x^n + a_1*x^{n-1} + ... + a_n*x^0):

f(x) = a0xn + a1xn − 1 + … + anx0

Trigonometry: sin^2x+cos^2x=1

sin2x + cos2x = 1

Directives

Installing new directives is also described in the reST documentation.

Other way to use additional roles and directives

Permanent installing role or directive require some changes in docutils sources — sometimes we don't have permissions to do it.

However it is quite simple to use additional roles and directives in scripts like rst2html:

try:
        import locale
        locale.setlocale(locale.LC_ALL, ”)
except:
        pass

from docutils.core import publish_cmdline, default_description

# directive
from pycode import py_getdef

import docutils.parsers.rst.directives as directives
directives._directive_registry["pycode"] = ("pycode", "py_getdef")

# roles
import myroles
import docutils.parsers.rst.roles as roles
roles.register_canonical_role('math',   myroles.inlinemath_role)
roles.register_canonical_role('cmath',  myroles.centermath_role)
roles.register_canonical_role('plwiki', myroles.plwiki_link_role)
roles.register_canonical_role('enwiki', myroles.enwiki_link_role)


description = ('Generates (X)HTML documents from standalone reStructuredText '
                           'sources.  ' + default_description)

publish_cmdline(writer_name='html', description=description)

Downloads

https://github.com/WojciechMula/toys/tree/master/restructuredtext