With Thot you can write your sites, documentation or even your blog with
your favourite text editor and then have everything rendered to static pages.
Thot understands Markdown_, RST_, Creole_ and Trac_'s
markup. You can still write everything as plaintext or HTML as well.
For templating you can resort to Mako_ or Jinja2_.
.. _Markdown: http://daringfireball.net/projects/markdown/syntax
.. _RST: http://docutils.sourceforge.net/docs/user/rst/quickref.html
.. _Creole: http://www.wikicreole.org/wiki/Creole1.0
.. _Trac: http://trac.edgewall.org/wiki/WikiFormatting
.. _Mako: http://www.makotemplates.org/
.. _Jinja2: http://jinja.pocoo.org/
Still not what you're looking for? You can replace almost everything by your own
plugins. ;-)
Need an example? This is a blog powered by Thot:
http://tsu.sarumindustries.de/2011/12/15-durchs-Lowsec-fliegen-oder-per-Blackops-Portal-springen.html
Usage
Quickstart
Run thot --quickstart mysite
to have directory mysite
created with a basic site
skeleton. You will be asked a series of questions regarding author's name and such by
that script.
quickstart
obeys the optional parameter -t <shortname>
, with "shortname" being
the shortname for a recognized templating engine. mako
or jinja2
without any
additional plugins.
Run the thot
command to generate a site. The command looks for files with a .htm/.html,
.xml, .rst and .md/.markdown extension and parses them. Directories and files that start
with a dot or an underscore will be ignored. Everything else will be copied. The generated
site will be available in the _output
directory.
Basics
Place or edit your templates inside the templates
directory of your site.
You can assign a page template self
(thus none) or any other by "template: " keyword.
Every page consists of one header and one content section, in that order. It looks
like this:
::
title: Hello World
template: post.mak
This is the content. Hello World!
The header is formatted in YAML_. You can access it from within the content by
variable page
. With Mako by ${ page['title'] }
or Jinja2 by {{ page.title }}
for
example.
Content can be anything, from plaintext over html to markup, which is determined by
the file extension. Although the content will be subject to rendering by the templating
engine of your choice, you are free to abstain from using it.
You can find your default timezone and other settings in _config.yml
, which is
parsed as YAML.
.. _YAML: http://yaml.org/spec/1.1/
Thot can take advantage of...
-
LaTeX for math rendering. Needs dvipng
and utf8x
(Gentoo: dev-texlive/texlive-latexextra).
Enables RST directives math
for formulas (with optional attribute label
)
and eq
for linking to labelled formulas.
-
Pyphen
and Wordaxe
for server-side hyphenation.