doclayout: A prettyprinting library for laying out text documents.

[ bsd3, library, text ] [ Propose Tags ]

doclayout is a prettyprinting library for laying out text documents, with several features not present in prettyprinting libraries designed for code. It was designed for use in pandoc.

[Skip to Readme]


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1, 0.2,, 0.3,,, 0.3.1,, 0.4
Change log
Dependencies base (>=4.12 && <5), containers, emojis (>=0.1.2), mtl, safe, semigroups (>=0.18 && <0.19), text [details]
License BSD-3-Clause
Copyright 2016-19 John MacFarlane
Author John MacFarlane
Revised Revision 1 made by JohnMacFarlane at 2022-08-13T17:42:11Z
Category Text
Home page
Source repo head: git clone
Uploaded by JohnMacFarlane at 2022-04-02T22:30:30Z
Distributions Arch:0.4, Debian:0.3, Fedora:, LTSHaskell:0.4, NixOS:0.4, Stackage:0.4, openSUSE:
Reverse Dependencies 6 direct, 157 indirect [details]
Downloads 18714 total (266 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-04-02 [all 1 reports]

Readme for doclayout-0.4

[back to package description]



This is a prettyprinting library designed for laying out plain-text documents. It originated in the pandoc module Text.Pandoc.Pretty, and its development has been guided by pandoc's needs in rendering wrapped textual documents.

In supports wrapping of text on breaking spaces, indentation and other line prefixes, blank lines, and tabular content.


Text.DocLayout> mydoc = hang 2 "- " (text "foo" <+> text "bar")
Text.DocLayout> putStrLn $ render (Just 20) mydoc
- foo bar
Text.DocLayout> putStrLn $ render (Just 10) (prefixed "> " (mydoc $+$ mydoc))
> - foo
>   bar
> - foo
>   bar

The Doc type may be parameterized to either String or (strict or lazy) Text, depending on the desired render target.