A new version of PGF, version 1.18, was recently released. As always with a new release, there are many new and exciting features and improvements. Below I have summarized some of the new features. For a full list of changes see the changelog.
Math library
Mark Wibrow has contributed an impressive and flexible math library. The new library allows you to use mathematical expression when specifying coordinates. Example:
\node at (2*0.5,{2*sin(10)}) {$\gamma$}; \draw (0,0) -- (pi/4r:1);
A consequence of the new library is that you now can use fractional values when specifying angular coordinates! You can also plot simple functions inline without using gnuplot.
Matrices
A TikZ matrix is a new and powerful way of arranging elements of your illustration in a grid like fashion. It is similar to LaTeX' array environment and PSTricks' psmatrix environment. Example:
\begin{tikzpicture} \matrix (magic) [matrix of nodes] { 8 & 1 & 6 \\ 3 & 5 & 7 \\ 4 & 9 & 2 \\ }; \draw[thick,red,->] (magic-1-1) |- (magic-2-3); \end{tikzpicture}
Graphic externalization commands
A common problem when distributing TeX-documents with PGF and TikZ code, is that colleagues and editors does not PGF installed. New in this version are a set of commands for creating a version of your document which does not need PGF installed to compile. Your illustrations are instead created as external files and included in your document. This can also be useful for illustrations that are very time consuming to draw.
New node shapes
Mark Wibrow has contributed two new and highly configurable node shapes:
- regular polygon. The number of sides can be set with the option regular polygon sides.
- star. You can set the number of points with the star points option.
See the node shapes example for more information. A few new shapes are also available in the CVS version.
Calendar library
With the \calendar command from the calendar library you can typeset all kinds of calendars. The library also includes utilities for marking special days and to do various date calculations.
Final words
I have now briefly described most the new features of PGF 1.18. You should read the manual carefully to get all the details. The final new feature I will mention is the paper folding library. Very useful when you want to fold a paper dodecahedron.
PGF and TikZ is getting better and better for each version. Judging from the activity on various mailing lists and forums, it also seems that the number of users is steadily increasing.
Edit and compile if you like:
\documentclass{article} \usepackage{tikz} \usetikzlibrary{shapes,snakes,calendar,matrix,backgrounds,folding} \begin{document} \pagestyle{empty} % Math engine \pgfmathsetseed{1} \begin{tikzpicture}[x=5pt,y=5pt,thick,baseline,cap=round] \coordinate (current point) at (0,0); \coordinate (old velocity) at (0,0); \coordinate (new velocity) at (rand,rand); \foreach \i in {0,1,...,100} { \draw[black!\i] (current point) .. controls ++([scale=-1]old velocity) and ++(new velocity) .. ++(rand,rand) coordinate (current point); \coordinate (old velocity) at (new velocity); \coordinate (new velocity) at (rand,rand); }; \end{tikzpicture} % Inline plotting \begin{tikzpicture}[domain=0:4,scale=0.5] \draw[very thin,color=black!20] (-0.1,-1.1) grid (3.9,3.9); \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$}; \draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$}; \draw[color=red] plot (\x,\x) node[right] {$f(x) =x$}; \draw[color=blue] plot (\x,{sin(\x r)}) node[right] {$f(x) = \sin x$}; \draw[color=orange] plot (\x,{0.05*exp(\x)}) node[right] {$f(x) = \frac{1}{20} \mathrm e^x$}; \end{tikzpicture} % New node shapes \begin{tikzpicture} \matrix[nodes={draw, thick, fill=blue!20,minimum size=1cm}, row sep=0.3cm,column sep=0.5cm] { \node[regular polygon,regular polygon sides=5] {};& \node[regular polygon,regular polygon sides=7] {};& \node[regular polygon,regular polygon sides=9] {};\\ \node[star,star points=4] {};& \node[star,star points=7,star point ratio=0.8] {};& \node[star,star points=10] {};\\ }; \end{tikzpicture} % Calendar library \begin{tikzpicture} \calendar [ dates=2007-07-01 to 2007-07-last, week list,inner sep=2pt,month label above centered, month text=\%mt \%y0 ] if (weekend) [red,nodes={draw=none}]; \end{tikzpicture} % Matrices \begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto] \matrix [matrix of math nodes, column sep={2cm,between origins}, row sep={3cm,between origins}, nodes={circle, draw, minimum size=7.5mm}] { & |(A)| A & \\ |(B)| B & |(E)| E & |(C)| C \\ & |(D)| D \\ }; \tikzstyle{every node}=[font=\small\itshape] \draw (A) to [bend left] (B) node [midway] {g}; \draw (B) to [bend left] (A) node [midway] {f}; \draw (D) -- (B) node [midway] {c}; \draw (E) -- (B) node [midway] {b}; \draw (E) -- (C) node [near end] {a}; \draw [-,line width=8pt,draw=white] (D) to [bend right, looseness=1] (A); \draw (D) to [bend right, looseness=1] (A) node [near start] {b} node [near end] {e}; \end{tikzpicture} % Paper folding library \begin{tikzpicture}[transform shape] \tikzfoldingdodecahedron [folding line length=6mm, face 1={ \node[red] {1};}, face 2={ \node {2};}, face 3={ \node {3};}, face 4={ \node {4};}, face 5={ \node {5};}, face 6={ \node {6};}, face 7={ \node {7};}, face 8={ \node {8};}, face 9={ \node {9};}, face 10={\node {10};}, face 11={\node {11};}, face 12={\node {12};}]; \end{tikzpicture} \end{document}
Click to download: pgf-version-118.tex • pgf-version-118.pdf
Open in Overleaf: pgf-version-118.tex