The Python document processor
RinohType is a document processor in the style of LaTeX. It can render structured text documents to PDF based on a document template and a style sheet. An important goal of RinohType is to make it easier to use than LaTeX. This includes providing clearer error messages and making it easy for users to adjust the document style.
This is a preview release unsuited for production use, but you can use it to explore RinohType’s features and bugs. I’d highly appreciate if you could create a ticket for any bugs you encounter. You can find articles on my blog discussing RinohType’s development progress.
Currently, RinohType only supports reStructuredText input. It ships with the rinoh command line tool to render basic reStructuredText documents and a preliminary Sphinx builder to render more complex documents. The included document templates and style sheets are fairly basic but these will be improved upon in the future.
Please be warned that some PDF readers have trouble displaying the PDFs generated by RinohType (issue 2). I believe this is due to a bug in these PDF readers. The following PDF viewers are affected:
- Firefox’s built-in PDF viewer (pdf.js)
- Evince and other poppler-based applications (e.g. Zathura)
RinohType currently only runs on Python 3.2 and up. It might be back-ported to Python 2.7 at some point in the future, but this is not certain.
If you want to include bitmap images in document, RinohType requires Pillow. Without Pillow, only PDF images are supported.
Command-line reStructuredText renderer
The easiest way to get started with RinohType is to render a reStructuredText document (such as demo.txt) using the rinoh command line tool:
When the script finishes, you will find demo.pdf alongside the input file.
rinoh renders the input document using the article template. You can specify the paper size using the --paper command line argument.
To use RinohType to render Sphinx documents, you need to adjust the Sphinx project’s conf.py:
add rinoh.frontend.sphinx to the extensions list, and
set the rinoh_documents configuration option:
rinoh_documents = [('index', 'target', 'Document Title, 'Author')] # source start file, target name (without PDF extension), # title, author).
All of RinohType’s source code is licensed under the Affero GPL, unless indicated otherwise in the source file (such as hyphenator.py).
My intention is to make RinohType free for non-commercial use and offer a separate license for commercial use. The AGPL will likely be replaced soon with another license to better reflect this intention.