Safe Haskell | Safe-Inferred |
---|
A simple interface to create TikZ graphics. Just build pictures using
the 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
preamble.
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 tikzsimple.hs
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
Documentation
Import the tikz
package to use the functions exported
by this module. For example, adding this line to your
document preamble:
usepackage [] tikz
Figures
A figure in the plane.
Line [Point] | Line along a list of points. |
Polygon [Point] | Line along a list of points, but the last point will be joined with the first one. |
PolygonFilled [Point] | Same as |
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 | Same as |
Circle Point Double | Circle centered at the given point with the given radius. |
CircleFilled Point Double | As in |
Ellipse Point Double Double | Ellipse centered at the given point with width and height given by the other parameters. |
EllipseFilled Point Double Double | Same as |
Text Point LaTeX | Insert some |
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 | Rotate a |
Figures [Figure] | A figure composed by a list of figures. |
In the future we will accept colors other than the basic ones.
Basic colors.
Additional functions
:: Double | Precision argument, ε. |
-> (Double, Double) | Interval, (a,b). |
-> (Double -> Point) | Path function, f. |
-> Figure | Output figure. |
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 Figure
.
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
Figure scripting
tikzpicture :: LaTeXC l => TikZ -> lSource
Transform a TikZ script to a LaTeX
block.