A simple interface to create TikZ graphics. Just build pictures using
Figure data constructors, and get the TikZ script using the function
figuretikz. Use the function
tikzpicture to insert the TikZ script in
the LaTeX document. And do not forget to import the
tikz package in the
Please, note that this module is not intended to be imported in the same module than Text.LaTeX.Packages.TikZ. This module is itself a self-contained alternative of that module. If you still want to use both modules, please, use qualified imports to avoid name clashes.
In the Examples directory of the source distribution, the file
contains a complete example of usage of this module with several pictures.
Below you can see a picture along with the code it came from.
myFigure :: Figure myFigure = Scale 2 $ Figures [ RectangleFilled (0,0) 1 1 , Colored Green $ RectangleFilled (-1,1) 1 1 , Colored Red $ RectangleFilled ( 0,2) 1 1 , Colored Blue $ RectangleFilled ( 1,1) 1 1 ]
- tikz :: PackageName
- data Figure
- = Line [Point]
- | Polygon [Point]
- | PolygonFilled [Point]
- | Rectangle Point Double Double
- | RectangleFilled Point Double Double
- | Circle Point Double
- | CircleFilled Point Double
- | Ellipse Point Double Double
- | EllipseFilled Point Double Double
- | Text Point LaTeX
- | Colored Color Figure
- | LineWidth Measure Figure
- | Scale Double Figure
- | Rotate Double Figure
- | Figures [Figure]
- type Point = (Double, Double)
- data Color
- pathImage :: Double -> (Double, Double) -> (Double -> Point) -> Figure
- figuretikz :: Figure -> TikZ
- (->>) :: TikZ -> TikZ -> TikZ
- tikzpicture :: LaTeXC l => TikZ -> l
tikz package to use the functions exported
by this module. For example, adding this line to your
usepackage  tikz
A figure in the plane.
Line along a list of points.
Line along a list of points, but the last point will be joined with the first one.
|Rectangle Point Double Double|
Rectangle with top-right corner at the given point and width and height given by the other parameters.
|RectangleFilled Point Double Double|
|Circle Point Double|
Circle centered at the given point with the given radius.
|CircleFilled Point Double|
|Ellipse Point Double Double|
Ellipse centered at the given point with width and height given by the other parameters.
|EllipseFilled Point Double Double|
|Text Point LaTeX|
|Colored Color Figure|
Color for the given
|LineWidth Measure Figure|
Line width for the given
|Scale Double Figure|
Scaling of the given
|Rotate Double Figure|
A figure composed by a list of figures.
In the future we will accept colors other than the basic ones.
Precision argument, ε.
|-> (Double, Double)|
|-> (Double -> Point)|
Path function, f.
The figure of a path. A path (in this context) means a function from an interval to
the plane. The image of such a function is what this function returns as a
An additional argument is needed to set the precision of the curve.
The actual implementation builds a spline of degree one joining different points of the image. Given that the interval is (a,b) and the precision argument is ε, the points in the spline will be f(a), f(a+ε), f(a+2ε), and so on, until reaching f(b). The smaller is ε, the closer is the figure to the original image.
Here is an example with a logarithmic spiral.
spiral :: Figure spiral = LineWidth (Pt 2) $ pathImage 0.01 (0,4) $ \t -> ( a * exp t * cos (b*t) , a * exp t * sin (b*t) ) where a = 0.1 ; b = 4