summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-04-04 20:55:44 +0000
committerKarl Berry <karl@freefriends.org>2019-04-04 20:55:44 +0000
commitacab24042d34dd439e1d074820d1da2fa1d591cd (patch)
tree32881f869e20a69711c5fe86134aa48143d9b1e8 /Master/texmf-dist/doc/generic/pgf/text-en
parent93f5c4643a3d0a596d220ff14756ce68d99afe33 (diff)
pgf (4apr19)
git-svn-id: svn://tug.org/texlive/trunk@50758 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-decorations.tex2
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex6
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transparency.tex1
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-circuits.tex2
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-decorations.tex2
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-perspective.tex418
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-body.tex4
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main-preamble.tex1
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex13
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex2
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-decorations.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-Euclid.tex2
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