The present section explains how your files should be structured when you use TikZ. On the top level, you need to include the tikz package. In the main text, each graphic needs to be put in a {tikzpicture} environment. Inside these environments, you can use {scope} environments to create internal groups. Inside the scopes you use \path commands to actually draw something. On all levels (except for the package level), graphic options can be given that apply to everything within the environment.
This package does not have any options.
This will automatically load the PGF package and several other stuff that TikZ needs (like the xkeyval package).
PGF needs to know what TEX driver you are intending to use. In most cases PGF is clever enough to determine the correct driver for you; this is true in particular if you LATEX. Currently, the only situation where PGF cannot know the driver “by itself” is when you use plain TEX or ConTEXt together with dvipdfm. In this case, you have to write \def\pgfsysdriver{pgfsys-dvipdfm.def} before you input tikz.tex.
The “outermost” scope of TikZ is the {tikzpicture} environment. You may give drawing commands only inside this environment, giving them outside (as is possible in many other packages) will result in chaos.
In TikZ, the way graphics are rendered is strongly influenced by graphic options. For example, there is an option for setting the color used for drawing, another for setting the color used for filling, and also more obscure ones like the option for setting the prefix used in the filenames of temporary files written while plotting functions using an external program. The graphic options are nearly always specified in a so-called key-value style. (The “nearly always” refers to the name of nodes, which can also be specified differently.) All graphic options are local to the {tikzpicture} to which they apply.
All TikZ commands should be given inside this environment, except for the \tikzstyle command. Unlike other packages, it is not possible to use, say, \pgfpathmoveto outside this environment and doing so will result in chaos. For TikZ, commands like \path are only defined inside this environment, so there is little chance that you will do something wrong here.
When this environment is encountered, the <options> are parsed. All options given here will apply to the whole picture.
Next, the contents of the environment is processed and the graphic commands therein are put into a box. Non-graphic text is suppressed as well as possible, but non-PGF commands inside a {tikzpicture} environment should not produce any “output” since this may totally scramble the positioning system of the backend drivers. The suppressing of normal text, by the way, is done by temporarily switching the font to \nullfont. You can, however, “escape back” to normal TEX typesetting. This happens, for example, when you specify a node.
At the end of the environment, PGF tries to make a good guess at a good guess at the bounding box of the graphic and then resizes the box such that the box has this size. To “make its guess,” everytime PGF encounters a coordinate, it updates the bound box’s size such that it encompasses all these coordinates. This will usually give a good approximation at the bounding box, but will not always be accurate. First, the line thickness is not taken into account. Second, controls points of a curve often lie far “outside” the curve and make the bounding box too large. In this case, you should use the [use as bounding box] option.
The following option influences the baseline of the resulting picture:
Using this option, you can specify that the picture should be raised or lowered such that the height <dimension> is on the baseline. For example, tikz[baseline=0pt]\draw(0,0)circle(.5ex); yields since, now, the baseline is on the height of the x-axis. If you omit the <dimensions>, 0pt is assumed as default.
This options is often useful for “inlined” graphics as in
A B |
|
This option is mainly used in styles like the every picture style to execute certain code at the start of a picture.
|
All options “end” at the end of the picture. To set an option “globally” you can use the following style:
In plain TEX, you should use instead the following commands:
The following two commands are used for “small” graphics.
This command places the <commands> inside a {tikzpicture} environment and adds a semicolon at the end. This is just a convenience.
The <commands> may not contain a paragraph (an empty line). This is a precaution to ensure that users really use this command only for small graphics.
Example: \tikz{\draw (0,0) rectangle (2ex,1ex)} yields
If the <text> does not start with an opening brace, the end of the <text> is the next semicolon that is encountered.
Example: \tikz \draw (0,0) rectangle (2ex,1ex); yields
By default, pictures do not have any background, that is, they are “transparent” on all parts on which you do not draw anything. You may instead wish to have a colored background behind your picture or a black frame around it or lines above and below it or some other kind of decoration.
Since backgrounds are often not needed at all, the definition of styles for adding backgrounds has been put in the library package pgflibrarytikzbackgrounds. This package is documented in Section 14.7.
Inside a {tikzpicture} environment you can create scopes using the {scope} environment. This environment is available only inside the {tikzpicture} environment, so once more, there is little chance of doing anything wrong.
All <options> are local to the <environment contents>. Furthermore, the clipping path is also local to the environment, that is, any clipping done inside the environment “ends” at its end.
|
The following style influences scopes:
The following options are useful for scopes:
The effect applies only to the current scope, not to subscopes.
Again, the effect applies only to the current scope, not to subscopes.
In plain TEX, you use the following commands instead:
The \path command, which is described in much more detail in later sections, also takes graphic options. These options are local to the path. Furthermore, it is possible to create local scopes within a path simply by using curly braces as in
|
Note that many options apply only to the path as a whole and cannot be scoped in this way. For example, it is not possible to scope the color of the path. See the explanations in the section on paths for more details.
Finally, certain elements that you specify in the argument to the \path command also take local options. For example, a node specification takes options. In this case, the options apply only to the node, not to the surrounding path.
There is a way of organizing sets of graphic options “orthogonally” to the normal scoping mechanism. For example, you might wish all your “help lines” to be drawn in a certain way like, say, gray and thin (do not dash them, that distracts). For this, you can use styles.
A style is simply a set of graphic options that is predefined at some point. Once a style has been defined, it can be used anywhere using the style option:
|
This command defines the style <style name>. Whenever it is used using the style=<style name> command, the <options> will be invoked. It is permissible that a style invokes another style using the style= command inside the <options>, which allows you to build hierarchies of styles. Naturally, you should not create cyclic dependencies.
If the style already has a predefined meaning, it will unceremoniously be redefined without a warning.
|
If the optional + is given, the options are added to the existing definition:
|
It is also possible to set a style using an option: