Code Monkey home page Code Monkey logo

rinohtype's Introduction

rinohtype

PyPI

Python version

Discussions

Gitter chat

Tests

Test coverage

rinohtype is a batch-mode document processor. It renders structured documents to PDF based on a document template and a style sheet. An important design goal of rinohtype is make document layout and style customization user-friendly. Have a look at the showcase to get an idea of the level of customization that is possible. See the documentation to learn how to customize the style of your document.

Call for Contributions

Since rinohtype is a fairly sizable project and currently being maintained by a single person, your contribution can make a big difference. Specifically, the following things can help move rinohtype forward:

  • development of professional-looking stylesheets and document templates
  • volunteering to be a maintainer: fix issues that pop up when new versions of dependencies are released (Python, Sphinx, ...), or handling platform-specific regressions (development is mainly on macOS).
  • help with maintaining and improving the documentation
  • development of new features, e.g. widow/orphan handling, Knuth-Plass line breaking, mathematics typesetting, performance improvements, ...
  • companies might be interested in funding the development of particular features

So if you are interested in helping with any of these items, please don't hesitate to get in touch via Discussions, Gitter or [email protected]!

Features

rinohtype is still in beta, so you might run into some issues when using it. I'd highly appreciate it if you could create a ticket for any bugs you may encounter. That said, rinohtype is already quite capable. For example, it should be able to replace Sphinx's LaTeX builder in most cases. Here is an overview of the main features:

  • a powerful page layout system supporting columns, running headers/footers, floatable elements and footnotes
  • support for figures and (large) tables, optionally rendered sideways
  • automatic generation of table of contents and index
  • automatic numbering and cross-referencing of section headings, figures and tables
  • configure one of the included document templates or create your own
  • an intuitive style sheet system inspired by CSS allowing changing almost every aspect of how document elements are rendered
  • modular design allowing for multiple frontends (such as reStructuredText, Markdown, DocBook, ...)
  • handles OpenType, TrueType and Type1 fonts with support for advanced typographic features such as kerning, ligatures, small capitals and old style figures
  • built-in support for the 1000+ libre licensed fonts on Google Fonts
  • embeds PDF, PNG and JPEG images, preserving transparency and color profiles
  • easy to install and deploy; pure-Python with few dependencies
  • built on Unicode; ready for non-latin languages

rinohtype's primary input format is reStructuredText. The rinoh command line tool renders reStructuredText documents and the included Sphinx builder makes it possible to output large documents with your own style applied. Have a look at the rinohtype manual for an example of the output.

There is also a commercial DITA frontend, but it's development is currently on hold. Please contact me if you are interested in testing it.

Requirements

rinohtype supports all stable Python 3 versions that have not reached end-of-life status. For parsing reStructuredText and CommonMark documents, rinohtype depends on docutils and myst-parser respectively. pip takes care of installing these requirements when you install rinohtype.

Syntax highlighting of code blocks is enabled if Pygments is installed, which will be installed automatically with Sphinx. If you want to include images other than PDF, PNG or JPEG, you also need to install Pillow.

Getting Started

Installation is trivial:

pip install rinohtype

If you want to have access to bug fixes and features that are not available in a release, you can install the current development version:

pip install https://github.com/brechtm/rinohtype/archive/refs/heads/master.zip

reStructuredText Renderer

The easiest way to get started with rinohtype is to render a reStructuredText document (such as CHANGES.rst from this repository) using the rinoh command line tool:

rinoh CHANGES.rst

When rinoh finishes, you will find CHANGES.pdf alongside the input file.

By default rinoh renders the input document using the article template. Run rinoh --help to see how you can tell rinoh which document template and style sheet to use.

Sphinx Builder

rinohtype can be used as a drop-in replacement for the LaTeX builder (the latex_documents configuration variable has to be set). Simply select the rinoh builder when building the Sphinx project:

sphinx-build -b rinoh . _build/rinoh

Contributing

See CONTRIBUTING.rst and DEVELOPING.rst

License

All of rinohtype's source code is licensed under the Affero GPL 3.0, unless indicated otherwise in the source file (such as hyphenator.py and purepng.py).

The Affero GPL requires for software that builds on rinohtype to also be released as open source under this license. For building closed-source applications, you can obtain a commercial license. The author of rinohtype is also available for consultancy projects involving rinohtype.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.