= reStructuredText Support in Trac
== Introduction
Trac supports [http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html reStructuredText (RST)] as an alternative to wiki markup where WikiFormatting is used.
From the reStucturedText webpage:
"reStructuredText is an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax and parser system. It is useful for in-line program documentation (such as Python docstrings), for quickly creating simple web pages, and for standalone documents. reStructuredText is designed for extensibility for specific application domains."
If you want a file from your Subversion repository to be displayed as reStructuredText in the Trac source browser, set `text/x-rst` as the value for the Subversion property `svn:mime-type`, or add the extension `rst` to the filename. See [trac:source:/trunk/INSTALL.rst this example].
The examples will only be rendered as reStructuredText if docutils is installed. If Pygments is installed but docutils is not installed, the examples will be syntax-highlighted rather than rendered as reStructuredText.
=== Requirements
To activate RST support in Trac, install the python docutils package with the command `easy_install docutils`, or through your operating system package manager. If not already available on your operating system, you can download it from [https://pypi.python.org/pypi/docutils PyPI].
=== More information on RST
* [http://docutils.sourceforge.net/rst.html reStructuredText Website]
* [http://docutils.sourceforge.net/docs/rst/quickref.html RST Quick Reference]
== Using RST in Trac
To specify that a block of text should be parsed using RST, use the ''rst'' processor.
=== TracLinks in reStructuredText
* Trac provides a custom RST directive `trac::` to allow TracLinks from within RST text.
||= Wiki Markup ||= Display ||
{{{#!td
{{{
{{{#!rst
This is a reference to |a ticket|
.. |a ticket| trac:: #42
}}}
}}}
}}}
{{{#!td
{{{#!rst
This is a reference to |a ticket|
.. |a ticket| trac:: #42
}}}
}}}
* You can also use the custom `:trac:` role to create TracLinks in RST.
||= Wiki Markup ||= Display ||
{{{#!td
{{{
{{{#!rst
This is a reference to ticket `#12`:trac:
To learn how to use Trac, see `TracGuide`:trac:
}}}
}}}
}}}
{{{#!td
{{{#!rst
This is a reference to ticket `#12`:trac:
To learn how to use Trac, see `TracGuide`:trac:
}}}
}}}
For a complete example of all uses of the `:trac:` role, see WikiRestructuredTextLinks.
=== Syntax highlighting in reStructuredText
There is a directive for doing TracSyntaxColoring in RST as well. The directive is called code-block:
||= Wiki Markup ||= Display ||
{{{#!td
{{{
{{{#!rst
.. code-block:: python
class Test:
def TestFunction(self):
pass
}}}
}}}
}}}
{{{#!td
{{{#!rst
.. code-block:: python
class Test:
def TestFunction(self):
pass
}}}
}}}
Note the need to indent the code at least one character after the `.. code-block` directive.
=== Wiki Macros in reStructuredText
To enable [WikiMacros Wiki Macros] in RST, you use the same `code-block` directive as for syntax highlighting:
||= Wiki Markup ||= Display ||
{{{#!td
{{{
{{{#!rst
.. code-block:: RecentChanges
Trac,3
}}}
}}}
}}}
{{{#!td
{{{#!rst
.. code-block:: RecentChanges
Trac,3
}}}
}}}
Or use the `:code-block:` role for a more concise Wiki Macro-like syntax:
||= Wiki Markup ||= Display ||
{{{#!td
{{{
{{{
#!rst
:code-block:`RecentChanges:Trac,3`
}}}
}}}
}}}
{{{#!td
{{{#!rst
:code-block:`RecentChanges:Trac,3`
}}}
}}}
=== Bigger RST Example
The example below should be self-explanatory:
||= Wiki Markup ||= Display ||
{{{#!td
{{{#!html
<pre class="wiki">{{{#!rst
FooBar Header
=============
reStructuredText is **nice**. It has its own webpage_.
A table:
===== ===== ======
Inputs Output
------------ ------
A B A or B
===== ===== ======
False False False
True False True
False True True
True True True
===== ===== ======
RST TracLinks
-------------
See also ticket `#42`:trac:.
.. _webpage: http://docutils.sourceforge.net/rst.html
}}}</pre>
}}}
}}}
{{{#!td
{{{#!rst
FooBar Header
=============
reStructuredText is **nice**. It has its own webpage_.
A table:
===== ===== ======
Inputs Output
------------ ------
A B A or B
===== ===== ======
False False False
True False True
False True True
True True True
===== ===== ======
RST TracLinks
-------------
See also ticket `#42`:trac:.
.. _webpage: http://docutils.sourceforge.net/rst.html
}}}
}}}
----
See also: WikiRestructuredTextLinks, WikiProcessors, WikiFormatting