Skip to content

ascribe/rinohtype

 
 

Repository files navigation

RinohType

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 be more user-friendly than LaTeX. This includes providing clear error messages and making it very easy to adjust the document style.

RinohType is currently in a near-beta phase and thus 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 some 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 Sphinx builder to render more complex documents. The included document templates and style sheets are fairly basic but these will be improved 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)

Requirements

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.

For parsing reStructuredText documents RinohType depends on docutils. For parsing PNG images we require pure-Python PurePNG. pip takes care of these requirement when you install RinohType. If you want to include images other than PDF, PNG or JPEG, you will need Pillow.

Getting Started

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:

rinoh demo.txt

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.

Sphinx Builder

To use RinohType to render Sphinx documents, you need to adjust the Sphinx project's conf.py:

  1. add rinoh.frontend.sphinx to the extensions list, and
  2. set the rinoh_documents configuration option:

    rinoh_documents = [('index',          # top-level rst file (index.rst)
                        'target',         # output (sphinx.pdf)
                        'Document Title,  # document title
                        'Author')]        # document author
  3. now we can select the rinoh builder when building the documentation:

    sphinx-build -b rinoh . _build/rinoh

License

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.

Packages

No packages published

Languages

  • Python 99.7%
  • HTML 0.3%