diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en')
12 files changed, 445 insertions, 19 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-decorations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-decorations.tex index b51d5373162..a4067c9861a 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-decorations.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-decorations.tex @@ -968,7 +968,7 @@ only use one meta-decoration per path. \begin{environment}{{pgfmetadecoration}\marg{name}} This environment decorates the input path described in \meta{environment - contents}, with the meta-decoration \meta{name}. + contents}, with the meta-decoration \meta{name}. \end{environment} \begin{plainenvironment}{{pgfmetadecoration}\marg{name}} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex index eace57ffde3..56f49d7e5dc 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex @@ -66,7 +66,7 @@ The following commands are the most basic for specifying a coordinate. \draw[help lines] (0,0) grid (3,2); \foreach \angle in {0,10,...,90} - {\pgfpathcircle{\pgfpointpolar{\angle}{1cm/2cm}}{2pt}} + {\pgfpathcircle{\pgfpointpolar{\angle}{1cm and 2cm}}{2pt}} \pgfusepath{fill} \end{tikzpicture} \end{codeexample} @@ -662,8 +662,8 @@ be used to perform the above code: Note that this macro is used often internally. For this reason, it is not a good idea to keep anything important in the variables |\pgf@x| and |\pgf@y| since they will be overwritten and changed frequently. Instead, intermediate -values can ge stored in the \TeX-dimensions |\pgf@xa|, |\pgf@xb|, |\pgf@xc| and -their |y|-counterparts |\pgf@ya|, |\pgf@yb|, |pgf@yc|. For example, here is the +values can be stored in the \TeX-dimensions |\pgf@xa|, |\pgf@xb|, |\pgf@xc| and +their |y|-counterparts |\pgf@ya|, |\pgf@yb|, |\pgf@yc|. For example, here is the code of the command |\pgfpointadd|: % \begin{codeexample}[code only] diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transparency.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transparency.tex index fda8f6a8872..22156f98d3e 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transparency.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transparency.tex @@ -349,6 +349,7 @@ Transparency groups are declared using the following commands. is ``large enough'' and then insert this picture into the main picture while ignoring the size. The following example shows how this is done: +% TODO: Nesting tikzpictures is NOT supported {\tikzexternaldisable \begin{codeexample}[] \begin{tikzpicture} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-circuits.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-circuits.tex index 66bbd1e3233..31d4345cb69 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-circuits.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-circuits.tex @@ -1241,7 +1241,7 @@ Let us begin with the base library that defines the handling of inputs. \foreach \x/\y/\z in {false/blue/1pt, true/red/2pt} \foreach \a in {north, south, east, west, north east, south east, north west, south west} - \draw[logic gate anchors use bounding box=\x, color=\y] + \draw[logic gate anchors use bounding box=\x, color=\y] (A.\a) circle(\z); \end{tikzpicture} \end{codeexample} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-decorations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-decorations.tex index 58d2b6f3af8..718d8b7870c 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-decorations.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-decorations.tex @@ -1819,7 +1819,7 @@ shapes. This library is included mostly for historical reasons, using the \end{key} \begin{key}{/pgf/decoration/text effects/word count=\meta{macro}} - Store the number of words in the decoration text in \meta{macro}. + Store the number of words in the decoration text in \meta{macro}. Numbering starts at |1|. When the character is the word separator, \meta{macro} takes the number of the previous word. If the decoration text starts with a word separator \meta{macro} will be |0|. diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-perspective.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-perspective.tex new file mode 100644 index 00000000000..61ed10179ec --- /dev/null +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-perspective.tex @@ -0,0 +1,418 @@ +\section{Three Point Perspective Drawing Library} + +\noindent\emph{by Max Snippe} + +\begin{tikzlibrary}{perspective} + This library provides tools for perspective drawing with one, two, or three + vanishing points. +\end{tikzlibrary} + +\subsection{Coordinate Systems} + +\begin{coordinatesystem}{three point perspective} + The |three point perspective| coordinate system is very similar to the |xyz| + coordinate system, save that it will display the provided coordinates with a + perspective projection. + % + \begin{key}{/tikz/cs/x=\meta{number} (initially 0)} + The $x$ component of the coordinate. Should be given \emph{without} unit. + \end{key} + % + \begin{key}{/tikz/cs/y=\meta{number} (initially 0)} + Same as |x|. + \end{key} + % + \begin{key}{/tikz/cs/z=\meta{number} (initially 0)} + Same as |x|. + \end{key} +\end{coordinatesystem} + +\begin{coordinatesystem}{tpp} + The |tpp| coordinate system is an alias for the |three point perspective| + coordinate system. +\end{coordinatesystem} + +\subsection{Setting the view} + +\begin{key}{/tikz/3d view=\marg{azimuth}\marg{elevation} + (default \{-30\}\{15\})} + With the |3d view| option, the projection of the 3D coordinates on the 2D page + is defined. It is determined by rotating the coordinate system by + $-\meta{azimuth}$ around the $z$-axis, and by \meta{elevation} around the + (new) $x$-axis, as shown below. + + \begin{tikzpicture}[ + viewpoint/.pic={ + \draw (22.5:0.45) -- (0,0) -- (-22.5:0.45); + \draw (0,0) ++ (22.5:0.35) arc (22.5:-22.5:0.35); + \draw (0.225,0) circle (0.02 and 0.09); + }] + \begin{scope}[3d view={-20}{20}] + \draw[->] (-3,0,0) -- (3,0,0) node[pos=1.05]{x}; + \draw[->] (0,-3,0) -- (0,3,0) node[pos=1.05]{y}; + \draw[->] (0,0,-1) -- (0,0,3) node[pos=1.05]{z}; + + \pgfmathsetmacro\az{50} + \begin{scope}[canvas is xy plane at z=0] + \draw[->] (0,0) ++(0,-2) arc (-90:-90+\az:2) coordinate[pos=0.5](az); + \draw (az) -- ++(-90+\az/2:1) node[below]{\meta{azimuth}}; + \draw[dashed] (0,0) -- ++(-90+\az:3); + \end{scope} + \begin{scope}[rotate around z=\az] + \pgfmathsetmacro\el{50} + \begin{scope}[canvas is yz plane at x=0] + \draw[->] (0,0) ++(-2.5,0) arc (180:180-\el:2.5) + coordinate[pos=0.5](el); + \draw (el) -- ++(180-\el/2:1) node[above]{\meta{elevation}}; + \draw[dashed] (0,0) -- + pic[solid,sloped,transform shape,pos=1.2]{viewpoint} ++(180-\el:3); + \end{scope} + \end{scope} + \end{scope} + \end{tikzpicture} + + For example, when both \meta{azimuth} and \meta{elevation} are 0$^\circ$, + $+z$ will be pointing upward, and $+x$ will be pointing right. The default is + as shown below. +\begin{codeexample}[] +\begin{tikzpicture}[3d view] + \draw[->] (-1,0,0) -- (1,0,0) node[pos=1.1]{x}; + \draw[->] (0,-1,0) -- (0,1,0) node[pos=1.1]{y}; + \draw[->] (0,0,-1) -- (0,0,1) node[pos=1.1]{z}; +\end{tikzpicture} +\end{codeexample} +\end{key} + +\begin{stylekey}{/tikz/isometric view} + A special kind of |3d view| is isometric, which can be set with the + |isometric view| style. It simply sets |3d view={-45}{35.26}|. The value for + \meta{elevation} is determined with $\arctan(1/\sqrt{2})$. In isometric + projection the angle between any pair of axes is 120$^\circ$, as shown below. +\begin{codeexample}[] +\begin{tikzpicture}[isometric view] + \draw[->] (-1,0,0) -- (1,0,0) node[pos=1.1]{x}; + \draw[->] (0,-1,0) -- (0,1,0) node[pos=1.1]{y}; + \draw[->] (0,0,-1) -- (0,0,1) node[pos=1.1]{z}; +\end{tikzpicture} +\end{codeexample} +\end{stylekey} + +\subsection{Defining the perspective} + +\newcommand\simplecuboid[3]{% + \fill[gray!80!white] (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=0,y=#2,z=#3) + -- (tpp cs:x=#1,y=#2,z=#3) + -- (tpp cs:x=#1,y=0,z=#3) -- cycle; + \fill[gray] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=0,y=#2,z=#3) + -- (tpp cs:x=0,y=#2,z=0) -- cycle; + \fill[gray!50!white] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=#1,y=0,z=#3) + -- (tpp cs:x=#1,y=0,z=0) -- cycle;} + +\newcommand{\simpleaxes}[3]{% + \draw[->] (-0.5,0,0) -- (#1,0,0) node[pos=1.1]{x}; + \draw[->] (0,-0.5,0) -- (0,#2,0) node[pos=1.1]{y}; + \draw[->] (0,0,-0.5) -- (0,0,#3) node[pos=1.1]{z};} + +In this section, the following example cuboid will be used with various scaling. +As a reference, the axes will be shown too, without perspective projection. +\begingroup +\let\simplecuboid\relax +\let\simpleaxes\relax +\begin{codeexample}[] +\newcommand\simplecuboid[3]{% + \fill[gray!80!white] (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=0,y=#2,z=#3) + -- (tpp cs:x=#1,y=#2,z=#3) + -- (tpp cs:x=#1,y=0,z=#3) -- cycle; + \fill[gray] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=0,y=#2,z=#3) + -- (tpp cs:x=0,y=#2,z=0) -- cycle; + \fill[gray!50!white] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=0,z=#3) + -- (tpp cs:x=#1,y=0,z=#3) + -- (tpp cs:x=#1,y=0,z=0) -- cycle;} +\newcommand{\simpleaxes}[3]{% + \draw[->] (-0.5,0,0) -- (#1,0,0) node[pos=1.1]{x}; + \draw[->] (0,-0.5,0) -- (0,#2,0) node[pos=1.1]{y}; + \draw[->] (0,0,-0.5) -- (0,0,#3) node[pos=1.1]{z};} + +\begin{tikzpicture}[3d view] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} +\endgroup + +\begin{key}{/tikz/perspective=\meta{vanishing points} + (default p=\{(10,0,0)\},q=\{(0,10,0)\},r=\{(0,0,20)\})} + The `strength' of the perspective can be determined by setting the location of + the vanishing points. The default values have a stronger perspective towards + $x$ and $y$ than towards $z$, as shown below. +\begin{codeexample}[] +\begin{tikzpicture}[3d view,perspective] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} + From this example it also shows that the maximum dimensions of the cuboid are + no longer 2 by 2 by 2. This is inherent to the perspective projection. + % + \begin{key}{/tikz/perspective/p=\marg{x,y,z} (initially (0,0,0))} + The location of the vanishing point that determines the `strength' of the + perspective in $x$-direction can be set with the |p| key. +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + p = {(5,0,0)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} + Note also that when only |p| is provided, the perspective in $y$ and $z$ + direction is turned off. + + To turn of the perspective in $x$-direction, one must set the $x$ component + of |p| to \texttt{0} (e.g. |p={(0,a,b)}|, where \texttt{a} and \texttt{b} + can be any number and will be ignored). Or one can provide |q| and |r| and + omit |p|. + + By changing the $y$ and $z$ components of |p|, one can achieve various + effects. +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + p = {(5,0,1)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + p = {(5,1,0)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + p = {(5,1,1)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} + \end{key} + % + \begin{key}{/tikz/perspective/q=\marg{x,y,z} (initially (0,0,0))} + Similar to |p|, but can be turned off by setting its $y$ component to + \texttt{0}. +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + q = {(0,5,0)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} + \end{key} + % + \begin{key}{/tikz/perspective/r=\marg{x,y,z} (initially (0,0,0))} + Similar to |p|, but can be turned off by setting its $z$ component to + \texttt{0}. +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + r = {(0,0,5)}}] + \simplecuboid{2}{2}{2} + \simpleaxes{2}{2}{2} +\end{tikzpicture} +\end{codeexample} + \end{key} +\end{key} + +\subsection{Shortcomings} + Currently a number of things are not working, mostly due to the fact that PGF + uses a 2D coordinate system underwater, and perspective projection is a + non-linear affine transformation which needs to be aware of all three + coordinates. These three coordinates are currently lost when processing a 3D + coordinate. + The issues include, but possibly are not limited to: + \begin{itemize} + \item Keys like |shift|, |xshift|, |yshift| are not working + \item Keys like |rotate around x|, |rotate around y|, and |rotate around z| + are not working + \item Units are not working + \item Most keys from the |3d| library are unsupported, e.g. all the + |canvas is .. plane| keys. + \end{itemize} + +\subsection{Examples} +An |r| that lies `below' your drawing can mimic a macro effect. +\nopagebreak +\begin{codeexample}[] +\begin{tikzpicture}[ + isometric view, + perspective={ + p = {(8,0,0)}, + q = {(0,8,0)}, + r = {(0,0,-8)}}] + + \simplecuboid{2}{2}{2}] + +\end{tikzpicture} +\end{codeexample} + +A peculiar phenomenon inherent to perspective drawing, is that however great +your coordinate will become in the direction of the vanishing point, it will +never reach it. +\nopagebreak +\begin{codeexample}[] +\begin{tikzpicture}[ + isometric view, + perspective={ + p = {(4,0,0)}, + q = {(0,4,0)}}] + + \node[fill=red,circle,inner sep=1.5pt,label=above:p] at (4,0,0){}; + + \foreach \i in {0,...,100}{ + \filldraw[fill = gray] (tpp cs:x=\i,y=0,z=0) + -- (tpp cs:x=\i+0.5,y=0,z=0) + -- (tpp cs:x=\i+0.5,y=2,z=0) + -- (tpp cs:x=\i,y=2,z=0) + -- cycle;} +\end{tikzpicture} +\end{codeexample} + +Even for simple examples, the added perspective might add another `dimension' to +your drawing. In this case, two vanishing points give a more intuitive result +then three would. +\nopagebreak +\begin{codeexample}[] +\begin{tikzpicture}[ + scale=0.7, + 3d view, + perspective={ + p = {(20,0,0)}, + q = {(0,20,0)}}] + + \filldraw[fill=brown] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=4,z=0) + -- (tpp cs:x=0,y=4,z=2) + -- (tpp cs:x=0,y=2,z=4) + -- (tpp cs:x=0,y=0,z=2) -- cycle; + \filldraw[fill=red!70!black] (tpp cs:x=0,y=0,z=2) + -- (tpp cs:x=5,y=0,z=2) + -- (tpp cs:x=5,y=2,z=4) + -- (tpp cs:x=0,y=2,z=4) -- cycle; + \filldraw[fill=brown!80!white] (tpp cs:x=0,y=0,z=0) + -- (tpp cs:x=0,y=0,z=2) + -- (tpp cs:x=5,y=0,z=2) + -- (tpp cs:x=5,y=0,z=0) -- cycle; +\end{tikzpicture} +\end{codeexample} + +With the vanishing points nearby, the distortion of parallel lines becomes very +strong. This might lead to \texttt{Dimension too large} errors. +\nopagebreak +\begin{codeexample}[] +\begin{tikzpicture}[ + 3d view, + perspective={ + p = {(2,0,0)}, + q = {(0,2,0)}, + r = {(0,0,2)}}, + scale=4, + vanishing point/.style={fill,circle,inner sep=2pt}] + + \simplecuboid{3}{1}{2} + + \node[vanishing point,label = right:p] (p) at (2,0,0){}; + \node[vanishing point,label = left:q] (q) at (0,2,0){}; + \node[vanishing point,label = above:r] (r) at (0,0,2){}; + + \begin{scope}[dotted] + \foreach \y in {0,1}{ + \foreach \z in {0,2}{ + \draw (tpp cs:x=0,y=\y,z=\z) -- (p.center);}} + \foreach \x in {0,3}{ + \foreach \z in {0,2}{ + \draw (tpp cs:x=\x,y=0,z=\z) -- (q.center);}} + \foreach \x in {0,3}{ + \foreach \y in {0,1}{ + \draw (tpp cs:x=\x,y=\y,z=0) -- (r.center);}} + \end{scope} +\end{tikzpicture} +\end{codeexample} + +% A more complex example. +\iffalse +Of course these examples can become as complex as desired, but as with any 3D +drawing using \tikzname, the order of drawing commands is important and can +become increasingly more complex. +\nopagebreak +\begin{codeexample}[] +\begin{tikzpicture}[ + cycle of vertices/.style 2 args={ + insert path={ + foreach \i [count=\j,evaluate=\j as \k using + {ifthenelse(\j==1,"","-- "}] in {#2}{\k (vert-#1-\i)} -- cycle}}, + scale=0.7, + line join=round, + bottom/.style={draw=white!50!black,fill=white!40!black}, + front/.style={draw=white!50!black,fill=black}, + side/.style={draw=white!50!black,fill=white!80!black}, +] + \begin{scope}[ + 3d view={-20}{0}, + perspective={ + p = {(20,0,0)}, + q = {(0,20,0)}, + r = {(5,1,50)}, + }] + \path foreach \x/\y/\z [count=\i] in { + 3.5/2.0/0.0,3.5/2.0/4.0,6.0/2.0/4.0,6.5/2.0/3.5,6.5/2.0/0.5,6.0/2.0/0.0, + 4.5/2.0/1.0,4.5/2.0/3.0,5.5/2.0/3.0,5.5/2.0/1.0,3.5/0.0/0.0,3.5/0.0/4.0, + 6.0/0.0/4.0,6.5/0.0/3.5,6.5/0.0/0.5,6.0/0.0/0.0,4.5/0.0/1.0,4.5/0.0/3.0, + 5.5/0.0/3.0,5.5/0.0/1.0% + }{(tpp cs:x=\x,y=\y,z=\z) coordinate[name=vert-D-\i]}; + \filldraw[front,cycle of vertices={D}{1,...,6}, + cycle of vertices={D}{7,10,9,8}]; + \filldraw[side,cycle of vertices={D}{10,9,19,20}]; + \filldraw[bottom,cycle of vertices={D}{8,9,19,18}]; + \filldraw[front,cycle of vertices={D}{11,...,16}, + cycle of vertices={D}{17,20,19,18}]; + \filldraw[side,cycle of vertices={D}{1,2,12,11}]; + % '3' + \path foreach \x/\y/\z [count=\i] in { + 0.0/2.0/0.0,0.0/2.0/1.0,2.0/2.0/1.0,2.0/2.0/1.5,0.0/2.0/1.5,0.0/2.0/2.5, + 2.0/2.0/2.5,2.0/2.0/3.0,0.0/2.0/3.0,0.0/2.0/4.0,3.0/2.0/4.0,3.0/2.0/0.0, + 0.0/0.0/0.0,0.0/0.0/1.0,2.0/0.0/1.0,2.0/0.0/1.5,0.0/0.0/1.5,0.0/0.0/2.5, + 2.0/0.0/2.5,2.0/0.0/3.0,0.0/0.0/3.0,0.0/0.0/4.0,3.0/0.0/4.0,3.0/0.0/0.0% + }{(tpp cs:x=\x,y=\y,z=\z) coordinate[name=vert-3-\i]}; + \filldraw[front,cycle of vertices={3}{1,...,12}]; + \filldraw[side,cycle of vertices={3}{3,4,16,15}]; + \filldraw[side,cycle of vertices={3}{7,8,20,19}]; + \filldraw[side,cycle of vertices={3}{1,2,14,13}]; + \filldraw[side,cycle of vertices={3}{5,6,18,17}]; + \filldraw[side,cycle of vertices={3}{9,10,22,21}]; + \filldraw[bottom,cycle of vertices={3}{4,5,17,16}]; + \filldraw[bottom,cycle of vertices={3}{8,9,21,20}]; + \filldraw[front,cycle of vertices={3}{13,...,24}]; + \end{scope} +\end{tikzpicture} +\end{codeexample} +\fi
\ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-body.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-body.tex index 78b72d5ab8c..15a678e7270 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-body.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-body.tex @@ -50,6 +50,7 @@ \foreach \where in {-9cm,9cm} {\nodeshadowed [at={(\where,5cm)}] { + % TODO: Nesting tikzpictures is NOT supported \tikz \draw [green!20!black, rotate=90] [l-system={rule set={F -> FF-[-F+F]+[+F-F]}, axiom=F, order=4, step=2pt, randomize step percent=50, angle=30, randomize angle percent=5}] @@ -220,7 +221,7 @@ \title{\bfseries The \tikzname\ and {\Large PGF} Packages\\ \large Manual for version \pgfversion\\[1mm] -\large\href{https://sourceforge.net/projects/pgf}{\texttt{https://sourceforge.net/projects/pgf}}} +\large\href{https://github.com/pgf-tikz/pgf}{\texttt{https://github.com/pgf-tikz/pgf}}} \author{Till Tantau\footnote{Editor of this documentation. Parts of this documentation have been written by other authors as indicated in these parts or chapters and in Section~\ref{section-authors}.}\\ @@ -536,6 +537,7 @@ libraries are not loaded by default since many users will not need them. \include{pgfmanual-en-library-mindmaps} \include{pgfmanual-en-library-folding} \include{pgfmanual-en-library-patterns} +\include{pgfmanual-en-library-perspective} \include{pgfmanual-en-library-petri} \include{pgfmanual-en-library-plot-handlers} \include{pgfmanual-en-library-plot-marks} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-preamble.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-preamble.tex index 5515cc8b7ed..d35c0e89abd 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-preamble.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-preamble.tex @@ -94,6 +94,7 @@ views, animations, rdf, + perspective, } \usepackage{ifluatex} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex index a8ddbd9194a..8ae0628b367 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex @@ -359,6 +359,19 @@ This section describes the package |pgffor|, which is loaded automatically by \end{codeexample} % \end{key} + + \begin{key}{/pgf/foreach/parse=\marg{boolean} (default false)} + If this key is set to true the upper bound in the loop will be + fed into |\pgfmathparse|. This allows to use complex expressions as + the upper bound. However, the expression must be safe for evaluation + in |\pgfmathparse|. It is known that internal \TeX\ registers can + cause trouble. + % +\begin{codeexample}[] +\foreach \x [parse=true] in {1,...,1.0e+1 - 1}{ \x } +\end{codeexample} + % + \end{key} \end{command} \begin{command}{\breakforeach} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex index 8ffafad7f54..c3921486e6d 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex @@ -1046,7 +1046,7 @@ which you need. whatever value it had at the beginning of the scope. More precisely, when \tikzname\ encounters |}| on a path, it checks whether at this particular moment the key is set to |true|. If so, the current position reverts to the - value is had when the matching |{| was read. + value it had when the matching |{| was read. % \begin{codeexample}[] \begin{tikzpicture} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-decorations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-decorations.tex index 1600e6f5378..009660a911d 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-decorations.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-decorations.tex @@ -474,25 +474,20 @@ decorations, not with meta-decorations. which |0pt| by default. Thus, for the |pre| option to have any effect, you also need to set the |pre length| option. % + % TODO: Nesting tikzpictures is NOT supported \begin{codeexample}[] -\begin{tikzpicture} \tikz [decoration={zigzag,pre=lineto,pre length=1cm}] \draw [decorate] (0,0) -- (2,1) arc (90:0:1); -\end{tikzpicture} \end{codeexample} % \begin{codeexample}[] -\begin{tikzpicture} \tikz [decoration={zigzag,pre=moveto,pre length=1cm}] \draw [decorate] (0,0) -- (2,1) arc (90:0:1); -\end{tikzpicture} \end{codeexample} % \begin{codeexample}[] -\begin{tikzpicture} \tikz [decoration={zigzag,pre=crosses,pre length=1cm}] \draw [decorate] (0,0) -- (2,1) arc (90:0:1); -\end{tikzpicture} \end{codeexample} Note that the default |pre| option is |lineto|, not |curveto|. This means @@ -500,17 +495,13 @@ decorations, not with meta-decorations. reasons). Change the |pre| key to |curveto| if you have a curved path. % \begin{codeexample}[] -\begin{tikzpicture} \tikz [decoration={zigzag,pre length=3cm}] \draw [decorate] (0,0) -- (2,1) arc (90:0:1); -\end{tikzpicture} \end{codeexample} % \begin{codeexample}[] -\begin{tikzpicture} \tikz [decoration={zigzag,pre=curveto,pre length=3cm}] \draw [decorate] (0,0) -- (2,1) arc (90:0:1); -\end{tikzpicture} \end{codeexample} % \end{key} diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-Euclid.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-Euclid.tex index c35deca1f82..ace6c5d8827 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-Euclid.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-Euclid.tex @@ -488,7 +488,7 @@ The second proposition in the Elements is the following: Produce the straight lines \A\E\ and \B\F\ in a straight line with \D\A\ and \D\B. Describe the circle \C\G\H\ with center \B\ and radius \B\C, and again, describe the circle \G\K\L\ with center - \D\ and radius \D\G. + \D\ and radius \D\G. Since the point \B\ is the center of the circle \C\G\H, therefore \B\C\ equals \B\G. Again, since the point \D\ is the center of the |