summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex')
-rw-r--r--graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex1607
1 files changed, 1607 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex b/graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex
new file mode 100644
index 0000000000..f29e86756b
--- /dev/null
+++ b/graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.1.tex
@@ -0,0 +1,1607 @@
+%!TEX root = tzplot-doc.tex
+%\begin{document}
+
+%%%%%=====CNONTINUED============
+%%%%%%==========================
+%%%\part{Points, Lines, and Curves}
+%%%%%%==========================
+%%%\label{p:linesandcurves}
+
+
+%%==================================
+\chapter{Polygons and Circles}
+\label{c:polygons}
+
+%%------------------------------------------------------------
+\section{Polygons: \protect\cmd{\tzpolygon}: Semicolon versions}
+\label{s:polygons}
+
+\subsection{\protect\cmd{\tzpolygon}}
+\label{ss:tzpolygon}
+
+\icmd{\tzpolygon} connects an arbitrary number of coordinates to draw a polygon, a closed figure. |\tzpolygon| is equivalent to a \xem{closed} |\tzlines|. Since |\tzpolygon| is a \xem{semicolon version}, you need to enter a \xem{semicolon} to indicate when the coordinate repetition ends.
+
+
+\begin{tzdef}
+% syntax: minimum
+\tzpolygon(<coor>)(<coor>)..repeated..(<coor>) ;
+% syntax: medium
+\tzpolygon (<coor>){<text>}[<node opt>]..repeated..(<coor>){<text>}[<node opt>] ;
+% syntax: full
+\tzpolygon[<opt>]<shift coor>"<path name>"
+ (<coor>){<text>}[<node opt>]
+ ..repeated.. (){}[] ; <code.append>
+% defaults
+ []<>""(<m>){}[] ..repeated.. (){}[] ; <>
+\end{tzdef}
+
+\begin{tztikz}
+\tzpolygon(1,1)(2,2)(3,1)(4,3); % works like:
+ \draw (1,1) -- (2,2) -- (3,1) -- (4,3) -- cycle;
+\end{tztikz}
+
+You can add text next to lines by specifying the options |{<text>}| and |[<node opt>]| \xem{in-between} coordinates.
+
+\begin{tzcode}{.3}
+% \tzpolygon
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzpolygon[fill,blue,auto]
+ (0,1){Side A}[sloped,red]
+ (1,3){B}
+ (2,3)
+ (3,2){Side D}[swap,sloped]
+ (1,0);
+\end{tikzpicture}
+\end{tzcode}
+
+You can also move the polygon by specifying the option |<shift coor>| before the first coordinate.
+The \xem{empty} shift option |<>| is \xem{not allowed}.
+
+\begin{tzcode}{.3}
+% \tzpolygon: shift
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzpolygon[blue,auto]
+ (0,1){Side A}[sloped,red]
+ (1,3){B}
+ (2,3)
+ (3,2){Side D}[swap,sloped]
+ (1,0);
+\tzpolygon[auto,dashed]<1,-.5>
+ (0,1)(1,3)(2,3){C}(3,2)(1,0);
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\subsection{\protect\cmd{\tzpolygon*}}
+\label{ss:tzpolygon*}
+
+The starred version \icmd{\tzpolygon*} paints the interior of the polygon with the default options |fill=black!50| with |fill opacity=.3| and |text opacity=1|.
+
+\begin{tzdef}
+% syntax: minimum
+\tzpolygon*(<coor>)(<coor>)..repeated..(<coor>) ;
+% syntax: medium
+\tzpolygon*(<coor>){<text>}[<node opt>]..repeated..(<coor>){<text>}[<node opt] ;
+% syntax: full
+\tzpolygon*[<opt>]<shift coor>"<path name>"
+ (<coor>){<text>}[<node opt>]
+ ..repeated.. (){}[] ; {<fill opacity>} <code.append>
+% defaults
+ *[fill=black!50,fill opacity=.3,text opacity=1]<>""
+ (<m>){}[] .. repeated.. (){}[] ; {.3} <>
+\end{tzdef}
+
+You can change the fill opacity by specifying the the last curly brace option |{<fill opacity>}| immediately \xem{after the semicolon}.
+
+\begin{tzcode}{.3}
+% \tzpolygon: shift
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzpolygon*[draw=blue,auto]
+ (0,1){Side A}[sloped,red]
+ (1,3){B}
+ (2,3)
+ (3,2){Side D}[swap,sloped]
+ (1,0);
+\tzpolygon*[green,auto,dashed,text=black]<1,-.5>
+ (0,1)(1,3)(2,3){C}(3,2)(1,0); {.7}
+\end{tikzpicture}
+\end{tzcode}
+
+You can also change the defaults using |\settzfillcolor| and |\settzfillopacity|.
+
+
+\subsection{\protect\cmd{\tzpolygon+}, \protect\cmd{\tzpolygon*+}: Relative coordinates: Semicolon versions}
+\label{ss:tzpolygon+}
+
+The plus version \icmd{\tzpolygon+} uses each coordinate (except the first one) relative (with |++|) to the previous coordinate.
+
+\xem{Everything else is the same as in} |\tzpolygon|.
+
+\icmd{\tzpolygon*+} is just a plus version of |\tzpolygon*|.
+
+\begin{tztikz}
+\tzpolygon+(1,1)(2,2)(3,1)(4,3); % works like:
+ \draw (1,1) -- ++(2,2) -- ++(3,1) -- ++(4,3) -- cycle;
+\end{tztikz}
+
+\begin{tztikz}
+\tzpolygon+[dashed]"AA"(1,1)(2,2){A}(3,1){B}[below]; % works like:
+ \draw [dashed,name path=AA] (1,1)
+ -- ++(2,2)
+ -- ++(3,1) node {A}
+ -- ++(4,3) node [below] {B}
+ -- cycle;
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzpolygon: shift
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzpolygon*+[blue,auto]
+ (0,1){Side A}[sloped,red]
+ (1,2){B}
+ (1,0)
+ (1,-1){Side D}[swap,sloped]
+ (-2,-2);
+\tzpolygon*+[green,auto,dashed,text=black]<1,-.5>
+ (0,1)(1,2)(1,0){C}(1,-1)(-2,-2); {.7}
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+%%------------------------------------------------------------
+\section{Rectangles}
+\label{s:rectangles}
+
+\subsection{\protect\cmd{\tzframe} and its variants}
+\label{ss:tzframe}
+
+\icmd{\tzframe} accepts two coordinates draws a rectangle.
+
+
+\begin{tzdef}
+% syntax: minimum
+\tzframe(<coor>)(<coor>)
+% syntax: full
+\tzframe[<opt>]<shift coor>"<path name>"(<coor1>)(<coor2>)<code.append>
+% defaults
+ []<>""(<m>)(<m>)<>
+\end{tzdef}
+
+\icmd{\tzrectangle} and \icmd{\tzbox} are aliases of |\tzframe|.
+
+\begin{tztikz}
+\tzframe(0,1)(3,2) % works like:
+ \draw (0,1) rectangle (3,2);
+\end{tztikz}
+
+
+The plus version \icmd{\tzframe+} uses the second coordinate as the coordinate relative (with |++|) to the first. \icmd{\tzrectangle+} and \icmd{\tzbox+} are aliases of |\tzframe+|.
+
+\begin{tztikz}
+\tzframe+(0,1)(3,2) % works like:
+ \draw (0,1) rectangle ++(3,2);
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzframe, \tzframe+
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzframe(0,0)(3,2)
+\tzframe+[blue,rounded corners=2mm](1,3)(1,-2)
+\end{tikzpicture}
+\end{tzcode}
+
+The starred version \icmd{\tzframe*} fills the interior
+with |black!50| with |fill opacity=.3| and |text opacity=1|, by default.
+(\icmd{\tzrectangle*} and \icmd{\tzbox*} are aliases of |\tzframe*|.)
+
+|\tzframe+| has also its starred version \icmd{\tzframe*+}.
+(\icmd{\tzrectangle*+} and \icmd{\tzbox*+} are aliases of |\tzframe*+|.)
+
+\begin{tzdef}
+% syntax
+\tzframe*[<opt>]<shift coor>"<path name>"
+ (<coor1>)(<coor2>){<fill opacity>}<code.append>
+% defaults
+ *[fill=black!50,fill opacity=.3,text opacity=1]<>""(<m>)(<m>){.3}<>
+\end{tzdef}
+
+With the starred versions, you can change the fill opacity using the last option |{<fill opacity>}|.
+
+\begin{tzcode}{.3}
+% \tzframe*(+)
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzframe[fill](0,0)(3,2)
+\tzframe*+[green,rounded corners=2mm](1,3)(1,-2){.7} %%
+\end{tikzpicture}
+\end{tzcode}
+
+You can move |\tzframe| and its variants by specifying the option |<shift coor>| immediately before the first mandatory coordinate.
+The empty shift option |<>| is not allowed.
+
+\begin{tzcode}{.3}
+% \tzframe(*)(+): shift
+\begin{tikzpicture}
+\tzhelplines*(4,4)
+\tzframe(0,0)(3,2)
+\tzframe[blue,dashed]<1,1>(0,0)(3,2)
+\tzcoors(1,3)(A)(1,-2)(B);
+\tzframe*+[blue,rounded corners=2mm](A)(B)
+\tzframe*+[red,rounded corners=2mm]<-.5,-.5>(A)(B)
+\tzframe*+[green,rounded corners=2mm]<1,1>(A)(B)
+\end{tikzpicture}
+\end{tzcode}
+
+You can use the last option |<code.append>| to add more \Tikz\ code.
+
+\begin{tzcode}{.3}
+% \tzframe(*), \tzrectangle(*): <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzframe*[blue,even odd rule](0,0)(3,2)
+ <(.5,.5) rectangle (2.5,1.5)>
+\tzframe[fill=green,even odd rule](2,1)(4,4)
+ <(2.3,1.2) rectangle (3.5,3.6)>
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\subsection{\protect\cmd{\tzrectanglering(*)}}
+
+\icmd{\tzrectanglering*} draws two rectangles and draws a rectangle ring by filling the interior with the default options \ixxw{even odd rule}, |fill=black!50|, |fill opacity=.3|, and |text opacity=1|.
+
+\begin{tzdef}
+% syntax: minimal
+\tzrectanglering*(<coorA1>)(<coorA2>)(<coorB1>)(<coorB2>)
+% syntax: full
+\tzrectanglering*[<opt>]<shift coor>
+ (<coorA1>)(<coorA2>)(<coorB1>)(<coorB2>)
+ {<fill opacity>}<code.append>
+% defaults:
+ *[even odd rule,fill=black!50,fill opacity=.3,text opacity=1]
+ <>(<m>)(<m>)()(){.3}<>
+\end{tzdef}
+
+\begin{tztikz}
+\tzrectanglering*(A1)(A2)(B1)(B2) % works like:
+ \draw [fill=black!50,fill opacity=.3,text opacity=1, even odd rule]
+ (A1) rectangle (A2)
+ (B1) rectangle (B2) ;
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzrectanglering*
+\begin{tikzpicture}
+\tzhelplines(4,2)
+\tzrectanglering*[blue](0,0)(3,2)(.5,.5)(2.5,1.5)
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzrectanglering*: shift
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzrectanglering*[blue](0,0)(3,2)(.5,.5)(2.5,1.5)
+\tzrectanglering*[red]<.9,.9>(0,0)(3,2)(.5,.5)(2.5,1.5)
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+
+\icmd{\tzrectanglering} draws two rectangles with the default option |even odd rule|.
+
+
+\begin{tzdef}
+% syntax: minimal
+\tzrectanglering(<coorA1>)(<coorA2>)(<coorB1>)(<coorB2>)
+% syntax: full
+\tzrectanglering[<opt>]<shift coor>(<coorA1>)(<coorA2>)
+ (<coorB1>)(<coorB2>)<code.append>
+% defaults
+ [even odd rule]<>(<m>)(<m>)()()<>
+\end{tzdef}
+
+\begin{tztikz}
+\tzrectanglering(0,0)(2,2)(.5,.5)(1.5,1.5) % works like:
+ \draw (0,0) rectangle (2,2)
+ (.5,.5) rectangle (1.5 and 1.5);
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzrectanglering: shift
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzrectanglering[blue](0,0)(3,2)(.5,.5)(2.5,1.5)
+\tzrectanglering[red,fill=green]<.9,.9>
+ (0,0)(3,2)(.5,.5)(2.5,1.5)
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\begin{tzcode}{.3}
+% \tzrectanglering*
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzrectanglering*[blue](0,0)(3,2)(1.5,1.5)(4,3)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \tzrectanglering(*): nonzero rule, fill opacity
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzrectanglering*[red,draw=none,nonzero rule]
+ (0,0)(3,2)(1.5,1.5)(4,3){1}
+\tzrectanglering[fill=white](0,0)(3,2)(1.5,1.5)(4,3)
+\end{tikzpicture}
+\end{tzcode}
+
+With the last option |<code.append>| you can add some more \Tikz\ code.
+
+\begin{tzcode}{.3}
+% \tzframering(*), \tzboxring(*)
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzframering*[blue](0,0)(3,4)
+ < (1.3,1.3) circle (1cm) (2,3) circle (.5) >
+\tzboxring[pattern=bricks](1,1)(4,3)
+ < (2.5,2) ellipse (1 and .7) >
+\end{tikzpicture}
+\end{tzcode}
+
+\icmd{\tzframering} and \icmd{\tzboxring} are aliases of |\tzrectaglering|.
+
+\icmd{\tzframering*} and \icmd{\tzboxring*} are aliases of |\tzrectaglering*|.
+
+%%------------------------------------------------------------
+\section{Circles and rings}
+\label{s:circleandring}
+
+\subsection{\protect\cmd{\tzcircle(*)}}
+\label{ss:tzcircle}
+
+\icmd{\tzcircle} draws a circle around a specified coordinate with a specified radius.
+The coordinate and the radius are mandatory.
+
+\begin{tzdef}
+% syntax
+\tzcircle[<opt>]<shift coor>"<path name>"(<coor>)(<radius>)<code.append>
+% defaults
+ []<>""(<m>)(<m>)<>
+\end{tzdef}
+
+\begin{tztikz}
+\tzcircle(0,0)(1cm) % works like:
+ \draw (0,0) circle (1cm);
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzcircle: "name path" and intersections
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcircle(1,1)(1cm)
+\tzcircle[blue,dashed]"AA"(2,2)(1cm)
+\tzvXpointat{AA}{2.5}(A) % intersections
+\tzdots*(A-1){$A_1$}[r](A-2){$A_2$}[r];
+\end{tikzpicture}
+\end{tzcode}
+
+
+The starred version \icmd{\tzcircle*} fills the interior
+with |fill=black!50| with |fill opacity=.3| and |text opacity=1|, by default.
+You can change the fill opacity using the curly brace option |{<fill opacity>}| \xem{right after} the option |(<radius>)|.
+
+\begin{tzdef}
+% syntax
+\tzcircle*[<opt>]<shift coor>"<path name>"
+ (<coor>)(<radius>){<fill opacity>}<code.append>
+% defaults
+ *[fill=black!50,fill opacity=.3,text opacity=1]<>""(<m>)(<m>){.3}<>
+\end{tzdef}
+
+
+You can move the circles by specifying the option |<shift coor>| \xem{before} the center coordinate or \xem{immediately before} the option |"<path name>"| if it exists.
+The \xem{empty} shift option |<>| is \xem{not allowed}.
+
+\begin{tzcode}{.3}
+% \tzcircle(*): shift
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoors(2,2)(A)(3,1)(B);
+\tzcircle(2,2)(1)
+\tzcircle[blue,dashed]<-.5,0>(A)(1)
+\tzcircle*(3,1)(.5cm)
+\tzcircle*[blue]<.5,0>(B)(.5cm)
+\end{tikzpicture}
+\end{tzcode}
+
+With the last option |<code.append>|, you can add some \Tikz\ code.
+
+\begin{tzcode}{.3}
+% \tzcircle(*): <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoors(2,2)(A)(3,1)(B);
+\tzcircle*[blue,even odd rule](A)(1cm)
+ <(2,2) circle (1.5)>
+\tzcircle[fill=green,even odd rule](B)(1cm)
+ <(3,1) circle (.7)>
+\end{tikzpicture}
+\end{tzcode}
+
+
+\subsection{\protect\cmd{\tzring(*)}}
+
+\icmd{\tzring*} draws two circles and draws a circle ring by filling the interior with the default options \ixxw{even odd rule}, |fill=black!50|, |fill opacity=.3|, and |text opacity=1|.
+
+\begin{tzdef}
+% syntax: minimal
+\tzring*(<coor>)(<radius>)(<coor>)(<radius>)
+% syntax: full
+\tzring*[<opt>]<shift coor>
+ (<coor>)(<radius>)(<coor>)(<radius>){<fill opacity>}<code.append>
+% defaults:
+ *[even odd rule,fill=black!50,fill opacity=.3,text opacity=1]
+ <>(<m>)(<m>)()(){.3}<>
+\end{tzdef}
+
+\begin{tztikz}
+\tzring*(0,0)(1cm)(0,0)(1.5cm) % works like:
+ \draw [fill=black!50,fill opacity=.3,text opacity=1, even odd rule]
+ (0,0) circle (1cm) (0,0) circle (1.5cm);
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzring*: fill opacity
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzring*[green](2,2)(1)(2,2)(1.5)
+\tzring*[fill=blue](3,1)(1)(3,1)(.7){1} %
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \tzring*: nonzero rule
+\begin{tikzpicture}
+\tzhelplines(4,2)
+\tzring*[fill=red,nonzero rule](1,1)(1)(2,1)(1)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \tzring*: nonzero rule
+\begin{tikzpicture}
+\tzhelplines(4,2)
+\tzring*[fill=red,nonzero rule](1,1)(1)(2,1)(1){1}
+\tzring*[fill=white](1,1)(1)(2,1)(1){1}
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzring*: nonzero rule
+\begin{tikzpicture}
+%\tzhelplines(4,3)
+\tzframe(0,0)(4,3)
+\tzring*[blue](1.5,1.5)(1)(2.5,1.5)(1)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\icmd{\tzring} draws two circles with the default option \ixxw{even odd rule}.
+
+
+\begin{tzdef}
+% syntax: minimal
+\tzring*(<coor>)(<radius>)(<coor>)(<radius>)
+% syntax: full
+\tzring*[<opt>]<shift coor>
+ (<coor>)(<radius>)(<coor>)(<radius>)<code.append>
+% defaults:
+ [even odd rule]<>(<m>)(<m>)()()<>
+\end{tzdef}
+
+\begin{tzcode}{.3}
+% \tzring: shift
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoors(2,2)(A)(3,1)(B);
+\tzring[blue](2,2)(1)(2,2)(1.5)
+\tzring[fill=green]<-1,0>(3,1)(1)(3,1)(.7) % shift
+\end{tikzpicture}
+\end{tzcode}
+
+You can add some \Tikz\ code with the last option |<code.append>|.
+
+
+\begin{tzcode}{.3}
+% \tzring(*): <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzring*[blue](2,2)(1)< (1.5,2) circle (.3 and .5) >
+\tzring*[pattern=bricks](3,1)(1)
+ < (2.5,.5) rectangle ++(1,1) >
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \tzring(*): nonzero rule, fill opacity
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzring*[fill=red,draw=none,nonzero rule](1,1)(1){1}
+ <(3,.5) rectangle (1.5,3)>
+\tzcirclering[fill=white](1,1)(1)
+ <(3,.5) rectangle (1.5,3)>
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\icmd{\tzcirclering} and \icmd{\tzcirclering*} are aliases of |\tzring| and |\tzring*|, respectively.
+
+
+
+
+%%------------------------------------------------------------
+\section{Ellipses}
+\label{s:ellipses}
+
+\subsection{\protect\cmd{\tzellipse(*)}}
+\label{ss:tzellipse}
+
+
+\icmd{\tzellipse} draws an ellipse around a specified coordinate with the specified x-radius and y-radius.
+
+The starred version \icmd{\tzellipse*} fills the interior
+with |fill=black!50| with |fill opacity=.3| and |text opacity=1|, by default.
+
+|\tzellise(*)| is basically the same as |\tzcircle(*)|.
+
+\begin{tzdef}
+% syntax
+\tzellipse*[<opt>]<shift coor>"<path name>"
+ (<coor>)(<x and y radius>){<fill opacity>}<code.append>
+% defaults: \tzellipse*
+ *[fill=black!50,fill opacity=.3,text opacity=1]<>""(<m>)(<m>){.3}<>
+% defaults: \tzellipse
+ *[]<>""(<m>)(<m>)<>
+\end{tzdef}
+
+
+
+\begin{tztikz}
+\tzellipse(0,0)(1 and .5) % works like:
+ \draw (0,0) ellipse (1 and .5);
+\end{tztikz}
+
+
+You can move the ellipse by specifying the option |<shift coor>| immediately before the mandatory coordinate.
+The \xem{empty} shift option |<>| is \xem{not allowed}.
+
+Using the last option |{<fill opacity>}|, you can change the fill opacity.
+
+\begin{tzcode}{.3}
+% \tzellipse(*)
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzellipse(2,2)(1.5 and 1)
+\tzellipse*[blue](2,1)(1 and 1.5){.5} % fill opacity
+\tzellipse[fill=green](3,1)(1cm and .5cm)
+\tzellipse*[red]<0,-.5>(3,1)(1cm and .5cm) % shift
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+You can add some \Tikz\ code with the option |<code.append>|.
+
+\begin{tzcode}{.3}
+% \tzellipse(*), \tzoval(*): <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzoval*[blue,even odd rule](2,2)(1.5 and 1)
+ <(2,2) ellipse (2 and 1.5)>
+\tzellipse[fill=green,even odd rule](3,1)(1 and 1)
+ <(3,1) ellipse (.5 and .8)>
+\end{tikzpicture}
+\end{tzcode}
+
+\icmd{\tzoval} is an alias of |\tzellipse| and \icmd{\tzoval*} is an alias of |\tzellipse*|.
+
+
+\subsection{\protect\cmd{\tzellipsering(*)}}
+
+\icmd{\tzellipse*} draws two ellipses and draws an ellipse ring by filling the interior with the default options \ixxw{even odd rule}, |fill=black!50|, |fill opacity=.3|, and |text opacity=1|.
+
+\icmd{\tzellipse} draws two ellipses with the default option |even odd rule|.
+
+|\tzellipsering(*)| is basically the same as |\tzring(*)|.
+
+\begin{tzdef}
+% syntax: minimal
+\tzellipse*(<coor>)(<x and y radius>)(<coor>)(<x and y radius>)
+% syntax: full
+\tzellipsering*[<opt>]<shift coor>
+ (<coor>)(<x and y radius>)(<coor>)(<x and y radius>)
+ {<fill opacity>}<code.append>
+% defaults: \tzellipse*
+ *[even odd rule,fill=black!50,fill opacity=.3,text opacity=1]
+ <>(<m>)(<m>)()(){.3}<>
+% defaults: \tzellipse
+ *[even odd rule]<>(<m>)(<m>)()()<>
+\end{tzdef}
+
+\begin{tztikz}
+\tzellipsering*(2,1)(1cm and 1.5cm)(2,2)(1.5cm and 1.5cm) % works like:
+ \draw [fill=black!50,fill opacity=.3,text opacity=1, even odd rule]
+ (2,1) ellipse (1cm and 1.5cm) (2,2) ellipse (1.5cm and 1.5cm);
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzring*: fill opacity
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzellipsering*[blue](2,2)(1 and 1)(2,2)(1.5cm)
+\tzring*[fill=green](2,1)(1 and 1.5)(2,1)(.7 and 1){1}
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+
+
+
+\begin{tzcode}{.3}
+% \tzellipsering(*)
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoors(2,2)(A)(3,1)(B);
+\tzellipsering*[blue](2,2)(1 and 1.5)
+ < (1.5,2.5) circle (3mm) >
+\tzellipsering[pattern=bricks]<1,0>(2,1)(1 and 1.5)
+ < (2.5,.5) rectangle ++(1,1) >
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzellipsering(*)
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoors(2,2)(A)(3,1)(B);
+\tzovalring*[fill=red,draw=none,nonzero rule]
+ (2,2)(1 and 1.5)(3,1)(1 and 1.5){1}
+\tzovalring[fill=white]
+ (2,2)(1 and 1.5)(3,1)(1 and 1.5)
+\end{tikzpicture}
+\end{tzcode}
+
+\icmd{\tzovalring} is an alias of |\tzellipsering| and \icmd{\tzovalring*} is an alias |\tzellipsering*|.
+
+
+
+%%==================================
+\chapter{Arcs, Wedges, and Angle Marks}
+\label{c:arcs}
+
+%%------------------------------------------------------------
+\section{\protect\cmd{\tzarc(')}: Centered arcs}
+\label{s:tzarc}
+
+\subsection{Arcs}
+\label{ss:tzarc}
+
+\icmd{\tzarc} draws an arc around a specified \xem{center coordinate}.
+
+\begin{tzdef}
+% syntax: minimum
+\tzarc(<coor>)(<angA:angB:radius>)
+% syntax: full
+\tzarc[<opt>]<shift coor>"<path name>"
+ (<coor>)(<angA:angB:radius>){<text>}[<node opt>]<code.append>
+% defaults
+ []<>""(<m>)(<m>){}[]<>
+\end{tzdef}
+
+
+\begin{tztikz}
+\tzarc(1,1)(30:120:1) % works like:
+ \draw (1,1) ++(30:1) arc (30:120:1);
+\end{tztikz}
+
+The \iisw{swap version} \icmd{\tzarc'} switches its drawing direction from \ixxw{counterclockwise} to \ixxw{clockwise} and vice versa.
+
+\begin{tztikz}
+\tzarc'(1,1)(30:120:1) % works like:
+ \draw (1,1) ++(30:1) arc (30:120-360:1);
+\end{tztikz}
+
+
+\begin{tzcode}{.3}
+% \tzarc, \tzarc'
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzdots*(1,1)(3,2);
+\tzarc [blue,->] (1,1)(-45:180:1)
+\tzarc'[dashed,->] (1,1)(-45:180:1)
+\draw [->](3,2) ++(-45:1) arc (-45:180:1);
+\draw [dashed,->](3,2) ++(-45:1) arc (-45:180-360:1);
+\end{tikzpicture}
+\end{tzcode}
+
+You can add text along the arc by specifying the options |{<text>}| and |[<node opt>]| immediately after the two mandatory arguments.
+
+
+\begin{tzcode}{.3}
+% \tzarc('): adding text
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzarc [blue,->] (1,1)(-45:180:1){A}[r]
+\tzarc'[dashed,->](1,1)(-45:180:1)
+\tzarc[->] (3,2)(-45:180:1){arc}[midway,sloped]
+\tzarc'[dashed,->](3,2)(-45:180:1)
+\end{tikzpicture}
+\end{tzcode}
+
+You can move arcs by specifying the option |<shift coor>| before the center coordinate or immediately before the option |"<path name>"| if it exists.
+The \xem{empty} shift option |<>| is \xem{not allowed}.
+
+\begin{tzcode}{.3}
+% \tzarc('): shift, name path, intersection
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzarc [blue,->] (1,1)(-45:180:1){A}[r]
+\tzarc'[dashed,->] (1,1)(-45:180:1)
+\tzarc [blue,->] <2,1>(1,1)(-45:180:1){A-shifted}[r]
+\tzarc'[dashed,->]<2,1>"AA"(1,1)(-45:180:1) %%
+\tzvXpointat*{AA}{2.5}
+\end{tikzpicture}
+\end{tzcode}
+
+You can also extend the path of |\tzarc| by specifying the last option |<code.append>| with \Tikz\ code written in it. For example, |<--cycle>| makes the path closed.
+
+
+\begin{tzcode}{.3}
+% \tzarc('): <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzarc [blue,->](1,1)(-45:180:1)
+ < to[bend left] ++(1,-1) >
+\tzarc [red,->] <2,1>(1,1)(-45:180:1)<--cycle>
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\subsection{Elliptical arcs}
+\label{ss:ellipticalarc}
+
+|\tzarc| draws an \iisw{elliptical arc} if you specify |x-radius| and |y-radius|.
+
+\begin{tzcode}{.3}
+% \tzarc: elliptical
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzarc[->,red](1,1)(30:270:1.5 and 0.5)
+\tzarc'[->,dotted](1,1)(30:270:1.5 and 0.5)
+\tzdots*(1,1)(2,2);
+\tzarc[->,blue,dashed](2,2)(0:-270:1 and 2)
+\tzarc'[->](2,2)(0:-270:1 and 2)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \tzarc: elliptical
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzarc[->,red](1,1)(30:270:1.5 and 0.5)
+\tzdots*(1,1)(2,2);
+\tzarc[blue,fill=green,fill opacity=.3]
+ (2,2)(0:-270:1 and 2)<--(2,2)--cycle> % code.append
+\tzarc[->,blue,dashed]
+ <1,0>(2,2)(0:-270:1 and 2) % shift
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+
+%%------------------------------------------------------------
+\section{\protect\cmd{\tzarcfrom(')}: Arcs as in \Tikz}
+\label{s:tzarcfrom}
+
+\icmd{\tzarcfrom} draws an arc starting from a specified point, like \Tikz\ does.
+
+\begin{tzdef}
+% syntax: minimum
+\tzarcfrom(<coor>)(<angA:angB:radius>)
+% syntax: full
+\tzarcfrom[<opt>]<shift coor>"<path name>"
+ (<coor>)(<angA:angB:radius>){<text>}[<node opt>]<code.append>
+% defaults
+ []<>""(<m>)(<m>){}[]<>
+\end{tzdef}
+
+
+\begin{tztikz}
+\tzarcfrom(1,1)(30:120:1) % works like:
+ \draw (1,1) arc (30:120:1);
+\end{tztikz}
+
+\xem{Everything else is the same as in }|\tzarc|.
+
+\icmd{\tzarcfrom'} is the \iisw{swap version} of |\tzarcfrom|.
+
+
+\begin{tzcode}{.3}
+% \tzarcfrom
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzdots*(1,1)(3,2);
+\tzarcfrom [blue,->] (1,1)(-45:180:1){A}[r]
+\tzarcfrom'[dashed,->](1,1)(-45:180:1)
+\tzarcfrom[->](3,2)(-45:180:1){arc}[midway,sloped]
+\tzarcfrom'[dashed,->](3,2)(-45:180:1)
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+%%------------------------------------------------------------
+\section{\protect\cmd{\tzarcsfrom}: Connected arcs: Semicolon version}
+\label{s:tzarcsfrom}
+
+The macro \icmd{\tzarcsfrom} (i.e. |\tzarcs + from|) accepts an arbitrary number of parenthesis arguments in the form of |(<angA:AngB:radius>)| following the start coordinate. Since |tzarcsfrom| is a semicolon version, you need to enter a \xem{semicolon} to indicate when the repetition ends.
+
+\begin{tzdef}
+% syntax: minimum
+\tzarcsfrom(<start coor>)
+ (<angA:angB:radius>)..repeated..(<angA:angB:radius>) ;
+% syntax: full
+\tzarcsfrom[<opt>]<shift coor>"<path name>"
+ (<start coor>)(<angA:angB:radius>){<text>}[<node opt>]
+ ..repeated..(){}[] ; <code.append>
+% defaults
+ []<>""(<m>) (<m>){}[]..repeated..(){}[] ; <>
+\end{tzdef}
+
+
+\begin{tzcode}{.4}
+% \tzarcfrom: adding text, <code.append>
+\begin{tikzpicture}
+\tzhelplines(4,4)
+\tzcoor*(3,2)(A)
+\tzarcsfrom[->,auto](A)
+ (0:180:1){1}[midway]
+ (180:360:1.2){2}[midway]
+ (0:180:1.4){3}[midway,swap]
+ (180:360:1.6){4}[midway,swap];
+ < node [right,blue] {End!} >
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\begin{tzcode}{.4}
+% \tzarcfrom: shift
+% flag: step 1
+\begin{tikzpicture}
+\tzhelplines(-2,-2)(2,2)
+\tzdot*(0,0)
+\edef\x{atan(2/3)}
+\tzarcsfrom[red,->](0,0)
+ (-\x:-\x-180:1){red 1}[midway];
+\tzarcsfrom[blue,->](0,0)
+ (180-\x:-\x:1){blue 1}[midway];
+\tzarcsfrom[dashed,->]<.5,.5>(0,0)
+ (180-\x:-\x:1){blue 1}[midway];
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.4}
+% flag: step 2
+\begin{tikzpicture}
+\edef\x{atan(2/3)}
+\tzarcsfrom[red](0,0)
+ (-\x:-\x-180:1){1}[midway]
+ (-\x+180:-\x:2){2}[midway];
+\tzarcsfrom[blue](0,0)
+ (180-\x:-\x:1){1}[midway]
+ (-\x:-\x-180:2){2}[midway];
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.4}
+% flag: step 3
+\definecolor{flagred}{RGB}{205,48,57}
+\definecolor{flagblue}{RGB}{17,73,156}
+\begin{tikzpicture}[scale=1]
+\edef\x{atan(2/3)}
+\tzarcsfrom[draw=none,fill=flagred](0,0)
+ (-\x:-\x-180:1)
+ (-\x+180:-\x:2)
+ (-\x:-\x+180:1);<-- cycle>
+\tzarcsfrom[draw=none,fill=flagblue](0,0)
+ (180-\x:-\x:1)
+ (-\x:-\x-180:2)
+ (-\x+180:-\x+360:1);<-- cycle>
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.4}
+% flag: shift
+\definecolor{flagred}{RGB}{205,48,57}
+\definecolor{flagblue}{RGB}{17,73,156}
+\begin{tikzpicture}[scale=1]
+\edef\x{atan(2/3)}
+\tzarcsfrom[draw=none,fill=flagred]<.1,.3>(0,0)
+ (-\x:-\x-180:1)
+ (-\x+180:-\x:2)
+ (-\x:-\x+180:1);<-- cycle>
+\tzarcsfrom[draw=none,fill=flagblue](0,0)
+ (180-\x:-\x:1)
+ (-\x:-\x-180:2)
+ (-\x+180:-\x+360:1);<-- cycle>
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+%%------------------------------------------------------------
+\section{Wedges}
+\label{s:wedges}
+
+\subsection{\protect\cmd{\tzwedge(')}}
+\label{ss:tzwedge}
+
+\icmd{\tzwedge} draws a wedge around a specified \xem{center} coordinate.
+
+|\tzwedge| works similarly to |\tzarc|, but it forms a closed path from the center coordinate. |\tzwedge| does not have the option |<code.append>|.
+
+\begin{tzdef}
+% syntax
+\tzwedge[<opt>]<shift coor>"<path name>"
+ (<coor>)(<angA:angB:radius>){<text>}[<node opt>]
+% defaults
+ []<>""(<m>)(<m>){}[midway]
+\end{tzdef}
+
+
+\begin{tztikz}
+\tzwedge(1,1)(30:120:1) % works like:
+ \draw (1,1) -- ++(30:1) arc (30:120:1) -- cycle;
+\end{tztikz}
+
+The swap version \icmd{\tzwedge'} is the \iisw{swap version} of \icmd{\tzwedge}.
+It switches the drawing direction from \ixxw{counterclockwise} to \ixxw{clockwise} and vice versa.
+
+
+\begin{tztikz}
+\tzwedge'(1,1)(30:120:1) % works like:
+ \draw (1,1) -- ++(30:1) arc (30:120-360:1) -- cycle;
+\end{tztikz}
+
+\begin{tzcode}{.3}
+% \tzwedge, \tzwedge'
+\begin{tikzpicture}
+\tzcoor*(2,1)(A)(3pt)
+\tzhelplines(4,3)
+\tzwedge[blue,very thick](A)(30:120:1.5)
+\tzarc[->,green] (A)(30:120:1.3)
+\tzwedge'[dashed](A)(0:135:1.5){clockwise}[sloped,red]
+\tzarc'[->,green](A)(0:135:1.3)
+\tzwedge'[fill](A)(-60:240:1)
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzwedge('): shift
+\begin{tikzpicture}
+\tzcoor*(2,1)(A)
+\tzhelplines(4,3)
+\tzwedge[blue,very thick]<.1,.1>(A)(30:120:1.5) % shift
+\tzarc[->,lightgray]<.1,.1>(A)(30:120:1.3) % shift
+\tzwedge'[dashed](A)(0:135:1.5){clockwise}[sloped,red]
+\tzarc'[->,lightgray](A)(0:135:1.3)
+\tzwedge'[fill]<2,0>(A)(-60:240:1) % shift
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+
+
+\subsection{\protect\cmd{\tzwedge*(')}}
+\label{ss:tzwedge*}
+
+The starred version \icmd{\tzwedge*} fills the wedges with |fill=black!50| with |fill opacity=.3| and |text opacity=1|, by default.
+With |\settzfillcolor| and |\settzfillopacity|, you can change the default values.
+You can also change the fill opacity by specifying the last optional argument |{<fill opacity>}|.
+
+\begin{tzdef}
+% syntax:
+\tzwedge*[<opt>]<shift coor>"<path name>"
+ (<coor>)(<angA:angB:radius>){<text>}[<node opt>]{<fill opacity>}
+% defaults:
+ *[fill=black!50,fill opacity=.3,text opacity=1]<>""(<m>)(<m>){}[midway]{.3}
+\end{tzdef}
+
+\icmd{\tzwedge*'} is the \iisw{swap version} of |\tzwedge*|.
+
+\begin{tzcode}{.3}
+% \tzwedge*, \tzwedge*'
+\begin{tikzpicture}[->,>=stealth]
+\tzhelplines(3,3)
+\tzwedge[very thick,blue](1,1)(30:120:1.5)
+\tzwedge*[-,very thick,blue,fill=red](1,1)(30:120:1)
+\tzwedge'[dashed](1,1)(30:120:1.5){clockwise}[pos=.45]
+\tzwedge*'[dashed,fill=green](1,1)(-90:180:1)
+\tzdot*(1,1)
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzwedge*('): shift, fill opacity
+\begin{tikzpicture}
+\tzdot*(1,1)
+\tzhelplines(3,3)
+\tzwedge[blue,very thick](1,1)(30:120:1.5)
+\tzwedge[red,very thick]<.5,.5>(1,1)(30:120:1.5)
+\tzwedge'[dashed](1,1)(0:135:1.5)
+\tzwedge*[fill=blue](1,1)(300:240:1){B}[b]
+\tzwedge*[blue]<2,0>(1,1)(300:240:1){B}[b]{.7}
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzwedge*('): name path, intersections
+\begin{tikzpicture}
+\tzhelplines(3,3)
+\tzwedge'[blue]"AA"(0,1)(45:330:2)
+\tzvXpointat{AA}{1}(A)
+\tzdots*(A){A}[al](A-2);
+\tzwedge*'[blue,fill=red]
+ (0,1)(45:330:2mm){$\theta$}[midway,r]
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+
+%%------------------------------------------------------------
+\section{Angle marks}
+\label{s:anglemarks}
+
+
+%%------------------------------------------------------------
+\subsection{\protect\cmd{\tzpointangle}: Angles between points}
+\label{ss:tzpointangle}
+
+\icmd{\tzpointangle}|(<coor1>)(<coor2>)(<\mymacro>)| computes the angle between two points and allows you to use, where |(coor1)| serves as the coordinate of the center.
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}[font=\scriptsize]
+\tzhelplines(5,4)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[135];
+\tzline[red,dashed](0,1)(5,1)
+\tzline[tzextend={1cm}{1cm}](B)(A) % (B): center
+\tzpointangle(B)(A){\myAngA}
+\tznode(3,1){\myAngA\textdegree}[ar=2mm,absolute]
+\tzarc(1,1)(0:\myAngA:2cm)
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}[font=\scriptsize]
+\tzhelplines(5,4)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[135](2,3)(C){C} ;
+\tzline[red,dashed](0,1)(5,1)
+\tzline[tzextend={1cm}{1cm}](B)(A)
+\tzline[tzextend={1cm}{1cm}](B)(C)
+\tzpointangle(B)(A){\myAngA}
+\tznode(3,1){\myAngA\textdegree}[ar=2mm,absolute]
+\tzarc(1,1)(0:\myAngA:2cm)
+\tzpointangle(B)(C){\myAngC}
+\tznode(2,2){\myAngC\textdegree}[r=3mm]
+\tzarc(1,1)(0:\myAngC:1.5cm)
+\tzarc(1,1)(\myAngA:\myAngC:10pt){$\theta$}[ar,midway]
+\tzarc(1,1)(\myAngA:\myAngC:11pt)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}[font=\scriptsize]
+\tzhelplines(5,4)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[135](2,3)(C){C} ;
+\tzline[tzextend={1cm}{1cm}](B)(A)
+\tzline[tzextend={1cm}{1cm}](B)(C)
+\tzpointangle(B)(A){\myAngA}
+\tzpointangle(B)(C){\myAngC}
+\tzarc(1,1)(\myAngA:\myAngC:10pt){$\theta$}[ar,midway]
+\tzarc(1,1)(\myAngA:\myAngC:11pt)
+\end{tikzpicture}
+\end{tzcode}
+
+
+%%------------------------------------------------------------
+\subsection{\protect\cmd{\tzanglemark(')}: Angle marks}
+\label{ss:tzanglemark}
+
+\icmd{\tzanglemark} accepts three mandatory coordinates to display an angle mark by an arc (of radius |10pt|, by default) for the second coordinate, on the |behind| layer by default.
+You can change the angle arc radius by \icmd{\settzAAradius}.
+You can change the layer by \icmd{\settzanglelayer}. Its alias is |\settzanglemarklayer|.
+
+The default line width of angle marks is |very thin|. You can change the default line with with \icmd{\settzAAlinestyle}.
+
+\begin{tzdef}
+% syntax: minimum
+\tzanglemark(<coorA>)(<coorB>)(<coorC>)
+% syntax: full
+\tzanglemark[<opt>](<coorA>)(<coorB>)(<coorC>){<text>}[<node opt>](<arc radius>)
+% defaults
+ [very thin](<m>)(<m>)(<m>){}[pos=1.5](10pt)
+\end{tzdef}
+
+You can add angle text by the options |{<text>}| and |[<node opt>]|.
+
+\begin{tzcode}{.3}
+% simple example
+\begin{tikzpicture}
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzanglemark(A)(B)(C){$\theta$} % angle mark
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \settzAAradius
+\begin{tikzpicture}
+\tzcoors(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzlines[thick,blue](A)(2.5,0)(C);
+\tzanglemark(A)(B)(C){$\theta$} %%
+\settzAAradius{20pt} %%
+\tzanglemark(C)(2.5,0)(A){$\alpha$}[pos=.7] %%
+\end{tikzpicture}
+\end{tzcode}
+
+
+\paragraph{How it works} Every |\tzanglemark| calculates angles (from 0\textdegree to 360\textdegree) and stores the values under the names \icmd{\tzangleONE} and \icmd{\tzangleTWO}. The difference of the two numbers is stored as an absolute value under the name \icmd{\tzangleresult}.
+Of course, you can use these values \xem{only after} running |\tzanglemark|.
+\begin{itemize}\firmlist
+\item |\tzanglemark| draws an angle mark between two angles, |counterclockwise|, from small two large.
+\item |\tzanglemark'| draws an angle mark between two angles, |clockwise|, from small to large.
+\end{itemize}
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzanglemark[->](A)(B)(C){$\theta$}
+\tznode[scale=.7](3,1){ONE: \tzangleONE}[r]
+\tznode[scale=.7](3,.5){TWO: \tzangleTWO}[r]
+\tznode[scale=.7](3,0){$\theta$: \tzangleresult}[r]
+\end{tikzpicture}
+\end{tzcode}
+
+
+\remark Simple to use:
+\begin{itemize}\firmlist
+\item
+|\tzmarkanlge(A)(B)(C)| draws an angle mark by an arc from |(A)| to |(C)| about |(B)|.
+\item
+|\tzmarkanlge(C)(B)(A)| draws an angle mark by an arc from |(C)| to |(A)| about |(B)|.
+\item Ignoring the direction, |\tzanglemark(A)(B)(C)| and |\tzanglemark(C)(B)(A)| give the same result.
+\end{itemize}
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzanglemark[->](C)(B)(A){$\theta$}
+\tznode[scale=.7](3,1){ONE: \tzangleONE}[r]
+\tznode[scale=.7](3,.5){TWO: \tzangleTWO}[r]
+\tznode[scale=.7](3,0){$\theta$: \tzangleresult}[r]
+\end{tikzpicture}
+\end{tzcode}
+
+\paragraph{Swap version}
+The \iisw{swap version} \icmd{\tzanglemark'} draws an angle mark for an angle in $360\text{\textdegree}-\theta$.
+In other words, |\tzanglemark'| \xem{switches the direction} of drawing an angle arc from |counterclockwise| to |clockwise|, and vice versa.
+
+\begin{tzcode}{.3}
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,3)(A){A}(1,2)(B)(3,0)(C){C}[0] ;
+\tzlines[thick](A)(B)(C);
+\tzanglemark[->](A)(B)(C){$\theta$}
+\tznode[scale=.7](3,2){ONE: \tzangleONE}[r]
+\tznode[scale=.7](3,1.5){TWO: \tzangleTWO}[r]
+\tznode[scale=.7](3,1){$\theta$: \tzangleresult}[r]
+\tzanglemark'[->](A)(B)(C){$\theta'$}(15pt) % swap
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+\paragraph{Angle mark text position}
+The midpoint of an angle arc is stored under the coordinate name |tzAAmid|.
+The angle mark text is put on the line that goes through the middle point and \icmd{(tzAAmid)}. The default |(<arc radius>)| is |10pt| and the default position of angle text is |pos=1.5| in |[<node opt>]|.
+
+\begin{tzcode}{.3}
+% angle marc text position
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzanglemark(C)(B)(A){$\theta$}[pos=.65](20pt) %%
+\tzdot*(tzAAmid)
+\tzline[red,dashed,tzextend={1cm}{2cm}](B)(tzAAmid)
+\end{tikzpicture}
+\end{tzcode}
+
+\remark Instead of using the options |{<text>}| and |[<node opt>]|, you can also use the coordinate |(tzAAmid)| to place the angle text wherever you want, without using |\tzanglemark(')|. Of course, you can use the correct |(tzAAmid)| only after running |\tzanglemark|.
+
+
+
+%%------------------------------------------------------------
+\subsection{\protect\cmd{\tzanglemark*(')}: Fill angle marks}
+\label{ss:tzanglemark*}
+
+\icmd{\tzanglemark*} fills (in the |behind| layer, by default) the angle mark area with |fill=black!50| and with the options |fill opacity=.3| and |text opacity=1| by default. It does not draw any lines: |[draw=none]| by default.
+
+Using the macros such as |\settzfillcolor|, |\settzfillopacity|, and \icmd{\settzanglelayer}, you can change the default values.
+
+
+
+\begin{tzdef}
+% syntax: minimum
+\tzanglemark*(<coorA>)(<coorB>)(<coorC>)
+% syntax: full
+\tzanglemark[<opt>](<coorA>)(<coorB>)(<coorC>){<text>}[<node opt>](<arc radius>)
+% defaults
+ [very thin](<m>)(<m>)(<m>){}[pos=1.5](10pt)
+% syntax
+\tzanglemark*[<opt>](<coor1>)(<coor2>)(<coor3>)
+ {<text>}[<node opt>](<arc radius>){<fill opacity>}
+% defaults
+ *[very thin,draw=none,fill=black!50,fill opacity=.3,text opacity=1]
+ (<m>)(<m>)(<m>){}[pos=1.5](10pt){.3}
+\end{tzdef}
+
+
+\begin{tzcode}{.3}
+% \tzanglemark*
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,2)(A){A}(1,1)(B){B}[180](2,3)(C){C} ;
+\tzlines(A)(B)(C);
+\tzanglemark*[red](C)(B)(A){$\theta$}
+\end{tikzpicture}
+\end{tzcode}
+
+
+\icmd{\tzanglemark*'} is the \iisw{swap version} of |\tzanglemark*|.
+
+\begin{tzcode}{.3}
+% \tzanglemark*(')
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(4,3)(A){A}(1,2)(B)(3,0)(C){C}[0] ;
+\tzlines(A)(B)(C);
+\tzanglemark*[red](A)(B)(C){$\theta$}
+\tzanglemark*'[blue](A)(B)(C){$\theta'$}(15pt) % swap
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzanglemark*('): \settzAAlinestyle
+\begin{tikzpicture}
+\settzAAlinestyle{thick}
+\tzhelplines(4,3)
+\tzcoors*(4,3)(A){A}(1,2)(B)(3,0)(C){C}[0] ;
+\tzlines[thick,blue](A)(B)(C);
+\tzanglemark*[red](A)(B)(C){$\theta$}
+\tzanglemark(A)(B)(C)
+\settzAAlinestyle{very thin} % default
+\tzanglemark'(A)(B)(C)(14pt)
+\tzanglemark'(C)(B)(A)(15pt){$\theta'$}
+\end{tikzpicture}
+\end{tzcode}
+
+
+
+%%%% (REMOVED!!!)
+%%%%%------------------------------------------------------------
+%%%\section{\protect\cmd{\tzpicangle}: angle marks}
+%%%\label{s:tzpicangle}
+%%%
+%%%\begin{tzdef}
+%%%% syntax: angle ABC or angle CBA
+%%%\tzpicangle(')[<angle pic opt>][<path/draw opt>](<coor1>)(<coor2>)(<coor3>)
+%%% {<angle pic text>}[<text eccentricity>](<angle pic arc radius>)
+%%%% defaults:(')[][]()()(){}[1.5](10pt)
+%%%\end{tzdef}
+%%%
+%%%When |(coor1) -- (coor2) -- (coor3)| is arranged naturally (counterclockwise),
+%%%|\tzarc| draws an arc naturally (counterclockwise), while |tzarc'| draws an arc clockwise.
+%%%
+%%%When |(coor1) -- (coor2) -- (coor3)| is arranged clockwise,
+%%%|\tzarc| draws an arc counterclockwise, while |tzarc'| draws an arc counterclockwise.
+%%%
+%%%\remark
+%%%Internally, |\tzpicangle| is defined to draw an arc by a |pic| operation of \TikZ, so it is not affected by scaling, unless |transform shape| is not used.
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzlines(2,2)(1,1)(3,0);
+%%%\tzpicangle[->,draw=red,fill=red!30](2,2)(1,1)(3,0){a}
+%%%\tzlines [xshift=1cm](2,2)(1,1)(3,0);
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzlines(3,0)(1,1)(2,2);
+%%%\tzpicangle[->,fill=red!30](3,0)(1,1)(2,2){a}
+%%%\tzlines [xshift=1cm](3,0)(1,1)(2,2);
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}[.5](1cm)
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzlines(2,0)(0,0)(0,2);
+%%%\tzpicangle[fill=red!30](2,0)(0,0)(0,2){a}
+%%%\tzlines [xshift=1cm](2,2)(1,1)(3,0);
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}[.5](1cm)
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzpicangle [fill=red!30](2,2)(1,1)(3,0){a}
+%%%\tzpicangle'[][xshift=1cm](2,2)(1,1)(3,0){a}
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzpicangle [fill=red!30](3,0)(1,1)(2,2){a}
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}[.5](1cm)
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}
+%%%\tzhelplines(4,2)
+%%%\tzpicangle [fill=red!30](2,0)(0,0)(0,2){a}
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}[.5](1cm)
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+%%%
+%%%\begin{tzcode}{.3}
+%%%\begin{tikzpicture}[scale=.5]
+%%%\tzhelplines(4,2)
+%%%\tzpicangle [fill=red!30](2,0)(0,0)(0,2){a}
+%%%\tzpicangle'[->][xshift=1cm](2,2)(1,1)(3,0){a}[.5](1cm)
+%%%\end{tikzpicture}
+%%%\end{tzcode}
+
+
+
+
+\subsection{\protect\cmd{\tzrightanglemark}: Right angle marks}
+\label{ss:tzrightangle}
+
+\icmd{\tzrightanglemark} takes three coordinates as mandatory arguments to display a right angle mark for the second coordinate. The mark is drawn on the |behind| layer by default, which can be changed by \icmd{\settzanglelayer}.
+
+The default line with is |very thin|, which can be changed by the option |[<opt>]|. You can also change the line width using \icmd{\settzRAlinestyle}, which is valid until the end of |tikzpicture| environment.
+|\settzRAlinestyle| is an alias of |\settzAAlinestyle|.
+The length of the side is |5pt| by default, and it can be changed by the last option |(<size>)|.
+You can also change the size with \icmd{\settzRAsize}, which is valid until the end of the |tikzpicture| environment.
+
+\begin{tzdef}
+% syntax: minimum
+\tzrightanglemark(<coorA>)(<coorB>)(<coorC>)
+% syntax: full
+\tzrightanglemark[<opt>](<coorA>)(<coorB>)(<coorC>){<text>}[<node opt>](<size>)
+% defaults
+ [very thin](<m>)(<m>)(<m>){}[](5pt)
+\end{tzdef}
+
+\begin{tzcode}{.3}
+% simple example (with angle text)
+\begin{tikzpicture}[font=\scriptsize]
+\tzhelplines(4,3)
+\tzcoors(1,2)(A){A}(1,0)(B){B}[180](4,0)(C){C}[0];
+\tzlines(A)(B)(C);
+\tzrightanglemark(A)(B)(C){90\textdegree}
+\end{tikzpicture}
+\end{tzcode}
+
+\remark
+\begin{itemize}\firmlist
+\item |\tzrightanglemark(A)(B)(C)| and |\tzrightanglemark(C)(B)(A)| give the same result.
+\item |\tzrightanglemark'| is redundant, but it is provided to avoid frequent coding errors.
+\end{itemize}
+
+Each |\tzrightanglemark| defines \icmd{(tzRAvertex)} as the coordinate of the right angle mark vertex.
+The angle text is placed on the line going through the second coordinate and |(tzRAvertex)|. The default position is |pos=2| in |[<node opt>]|.
+
+\begin{tzcode}{.3}
+% \settzRAsize
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors(2,3)(A){A}(1,1)(B){B}[180](3,0)(C){C}[0];
+\tzlines(A)(B)(C);
+\settzRAsize{15pt}
+\tzrightanglemark(A)(B)(C){90\textdegree}[pos=1.7]
+\tzdot*(tzRAvertex)
+\tzline[red,dashed,tzextend={2mm}{2cm}](B)(tzRAvertex)
+\end{tikzpicture}
+\end{tzcode}
+
+\remark You can also use the coordinate |(tzRAvertex)| to place angle text wherever you want, after |\tzrightanglemark|.
+
+
+
+
+\subsection{\protect\cmd{\tzrightanglemark*}: Fill right angle marks}
+\label{ss:tzrightangle*}
+
+The starred version \icmd{\tzrightanglemark*} fills the interior of right angle marks with |fill=black!50|, with |fill opacity=.3| and |text opacity=1|. It does not draw any line: |[draw=none]| by default. The filled mark is drawn on the |behind| layer by default, which can be changed by \icmd{\settzanglelayer}.
+Its alias is \icmd{\settzanglemarklayer}.
+
+\begin{tzdef}
+% syntax: minimum
+\tzrightanglemark*(<coorA>)(<coorB>)(<coorC>)
+% syntax: full
+\tzrightanglemark*[<opt>](<coorA>)(<coorB>)(<coorC>)
+ {<text>}[<node opt>](<size>){<fill opacity>}
+% defaults
+ *[draw=none,very thin,fill=black!50,fill opacity=.3,text opacity=1]
+ (<m>)(<m>)(<m>){}[](5pt){.3}
+\end{tzdef}
+
+With \icmd{\settzfillcolor} and \icmd{\settzfillopacity}, you can also change the default fill color and fill opacity.
+
+
+\begin{tzcode}{.3}
+% \rightanglemark*
+\begin{tikzpicture}[scale=.8,font=\scriptsize]
+\tzhelplines(5,5)
+\tzcoorsquick(0,5)(A)(4,0)(B)(0,1)(C)(5,5)(D);
+\tzline"AB"(A)(B)
+\tzline"CD"(C)(D)
+\tzXpoint{AB}{CD}(E)
+\tzrightanglemark*(A)(E)(D){90\textdegree}
+\tzrightanglemark*[red](A)(E)(C)(20pt)
+\tzrightanglemark*[draw=blue,fill=green](B)(E)(C)(20pt)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \settzRAsize
+\begin{tikzpicture}[scale=.8,font=\scriptsize]
+\tzhelplines(5,5)
+\tzcoorsquick(0,5)(A)(4,0)(B)(0,1)(C)(5,5)(D);
+\tzline[dotted]"AB"(A)(B)
+\tzline[dotted]"CD"(C)(D)
+\tzXpoint{AB}{CD}(E)
+\settzRAsize{20pt} %%
+\tzrightanglemark*[red](A)(E)(D){$\rho$}[pos=1.3]
+\tzrightanglemark[blue,thin](A)(E)(D)
+\tzrightanglemark*[draw=blue,thin,fill=green](B)(E)(C)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\section{\protect\cmd{\tzdistance}: Distances and changes}
+\label{s:tzdistance}
+
+\icmd{\tzdistance}|(<coor1>)(<coor2>){<\mylength>}| calculates the Cartesian distance \xem{from} |(<coor1>)| \xem{to} |(<coor2>)| and stores the (absolute) value to the user-specified macro |\mylength| in centimeters.
+And |\tzdistance| also stores the changes in |x| and |y| to |{<\Deltax>}| and |{<\Deltay>}|, respectively.
+Note that the calculated distance is \xem{approximate}.
+
+\begin{tzdef}
+% syntax: minimum
+\tzdistance(<coorA>)(<coorB>){<\mylength>}
+% syntax: full
+\tzdistance(<coorA>)(<coorB>){<\mylength>}{<\Deltax>}{<\Deltay>}
+% defaults:
+ (<m>)(<m>){<m>}{}{}
+\end{tzdef}
+
+\begin{tzcode}{.3}
+% \tzdistance
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(0,0)(A)(4,0)(B)(0,3)(C);
+\tzdistance(A)(B){\lenA}
+\tzdistance(B)(C){\lenB}
+\tzpolygon(A){\lenA}[b](B){\lenB}[sloped,a](C);
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \tzdistance, \tzpointangle
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(1,0)(A){A}[180](3,1)(B){B}[0];
+\tzdistance(A)(B){\lenA}{\xdist}{\ydist}
+\tzpointangle(A)(B){\angA}
+\tzline[red](A)(B)
+\tzarc[blue](A)(\angA:90:\lenA)
+\tzline+[<->]<0,-.5>(A)(\xdist,0)
+\tzline+[<->]<1,0>(A-|B)(0,\ydist)
+\end{tikzpicture}
+\end{tzcode}
+
+\begin{tzcode}{.3}
+% \Deltax: (+), \Deltay: (-)
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(1,2)(A){A}[180](3,1)(B){B}[0];
+\tzdistance(A)(B){\lenA}{\xdist}{\ydist} % A to B
+\tzpointangle(A)(B){\angA}
+\tzline[red](A)(B)
+\tzarc[->,blue](A)(\angA:90:\lenA)
+\tzline+[|->|]<0,-.5>(A|-B)
+ {$\Delta\,x=\xdist$}[b]
+ (\xdist,0)
+\tzline+[|->|]<-1,0>(A)(0,\ydist)
+\end{tikzpicture}
+\end{tzcode}
+
+
+\begin{tzcode}{.3}
+% \Deltax: (-), \Deltay: (+)
+\begin{tikzpicture}
+\tzhelplines(4,3)
+\tzcoors*(1,2)(A){A}[180](3,1)(B){B}[0];
+\tzdistance(B)(A){\lenA}{\xdist}{\ydist} % B to A
+\tzpointangle(B)(A){\angA}
+\tzline[red](B)(A)
+\tzarc'[->,blue](A)(\angA-180:90:\lenA)
+\tzline+[|->|]<0,-.5>(B)
+ {$\Delta\,x=\xdist$}[b]
+ (\xdist,0)
+\tzline+[|->|]<-1,0>(B-|A)(0,\ydist)
+\end{tikzpicture}
+\end{tzcode}
+
+