HaTeX- The Haskell LaTeX library.

Safe HaskellSafe




This module provides a monadic interface to build TPath values. It does so using PathBuilders. The construction of a PathBuilder is equivalent to the construction of a TPath by hand, but with a sometimes more convenient syntax.

For example, this path corresponds to a triangle:

trianglePath :: TPath
trianglePath = bpath (pointAtXY (-1) 0) $ do
   line $ pointAtXY 1 0
   line $ pointAtXY 0 1

The equivalent syntax created by hand would be:

trianglePath :: TPath
trianglePath = Cycle $ Start (pointAtXY (-1) 0) ->- pointAtXY 1 0 ->- pointAtXY 0 1

The Cycle constructor at the beginning may seem unintuitive, since we are building the path from left to right. In the PathBuilder monad, the instructions are always written in order.


Path builder

data PathBuilder a Source #

Use a path builder to construct a value of type TPath. Use bpath for this purpose.

bpath :: TPoint -> PathBuilder a -> TPath Source #

Build a path using a starting point and a PathBuilder.

Builder functions

line :: TPoint -> PathBuilder () Source #

Line from the current point to the given one.

rectangle :: TPoint -> PathBuilder () Source #

Rectangle with the current point as one cornder and the given point as the opposite corner.

circle :: Double -> PathBuilder () Source #

Circle with the given radius centered at the current point.

ellipse Source #


:: Double

Half width of the ellipse.

-> Double

Half height of the ellipse.

-> PathBuilder () 

Ellipse with width and height described by the arguments and centered at the current point.

node :: LaTeX -> PathBuilder () Source #

Text centered at the current point.