fluiddoc.mathmacro

Sphinx extension providing a new directive mathmacro

This extension has to be added after the other math extension since it redefined the math directive and the math role. For example, like this (in the conf.py file):

extensions = [
    'sphinx.ext.autodoc', 'sphinx.ext.doctest',
    'sphinx.ext.mathjax',
    'sphinx.ext.viewcode', 'sphinx.ext.autosummary',
    'numpydoc',
    'fluiddoc.mathmacro']

Here, I show how to use a new mathmacro substitution directive in reStructuredText. I think even this small example demonstrates that it is useful.

Example

First some math without math macros. Let’s take the example of the incompressible Navier-Stokes equation:

\[\mbox{D}_t \textbf{v} = -\boldsymbol{\nabla} p + \nu \boldsymbol{\nabla} ^2 \textbf{v}.\]

where \(\mbox{D}_t\) is the convective derivative, \(\textbf{v}\) the velocity, \(\boldsymbol{\nabla}\) the nabla operator, \(\nu\) the viscosity and \(\boldsymbol{\nabla}^2\) the Laplacian operator.

The code for this is:

.. math::
  \mbox{D}_t \textbf{v} =
  -\boldsymbol{\nabla} p + \nu \boldsymbol{\nabla} ^2 \textbf{v}.

where :math:`\mbox{D}_t` is the convective derivative, :math:`\textbf{v}` the
velocity, :math:`\boldsymbol{\nabla}` the nabla operator, :math:`\nu` the
viscosity and :math:`\boldsymbol{\nabla}^2` the Laplacian operator.

Now, let’s use some math macros and try to get the same result… We use the following code:

The Navier-Stokes equation can now be written like this:

.. math:: \Dt \vv = - \bnabla p + \nu \bnabla^2 \vv

where |Dt| is the convective derivative, |vv| the velocity, |bnabla| the nabla
operator, :math:`\nu` the viscosity and :math:`\bnabla^2` the Laplacian operator.

It gives:

The Navier-Stokes equation can now be written like this:

\[\mbox{D}_t \textbf{v} = - \boldsymbol{\nabla} p + \nu \boldsymbol{\nabla}^2 \textbf{v}\]

where \(\mbox{D}_t\) is the convective derivative, \(\textbf{v}\) the velocity, \(\boldsymbol{\nabla}\) the nabla operator, \(\nu\) the viscosity and \(\boldsymbol{\nabla}^2\) the Laplacian operator.

Functions

multiple_replace(string, replace_dict)

multiple_replacer(replace_dict)

Return a function replacing doing multiple replacements.

new_math_role(role, rawtext, text, lineno, ...)

New math role parsing the latex code.

setup(app)

Classes

MathMacro(name, arguments, options, content, ...)

Directive defining a math macro.

NewMathDirective(name, arguments, options, ...)

New math block directive parsing the latex code.