diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/tkz-base/TKZdoc-base-BB.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/tkz-base/TKZdoc-base-BB.tex | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tkz-base/TKZdoc-base-BB.tex b/Master/texmf-dist/doc/latex/tkz-base/TKZdoc-base-BB.tex new file mode 100644 index 00000000000..15a00e38c8d --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-base/TKZdoc-base-BB.tex @@ -0,0 +1,239 @@ +\section{Bounding box management} +The initial bounding box after using the macro \tkzcname{tkzInit} is defined by the rectangle based on the points $(0,0)$ and $(10,10)$. The \tkzcname{tkzInit} macro allows this initial bounding box to be modified using the arguments (\tkzname{xmin}, \tkzname{xmax}, \tkzname{ymin}, and \tkzname{ymax}). Of course any external trace modifies the bounding box. \TIKZ\ maintains that bounding box. It is possible to influence this behavior either directly with commands or options in \TIKZ\ such as a command like \tkzcname{useasboundingbox} or the option \tkzname{use as bounding box}. A possible consequence is to reserve a box for a figure but the figure may overflow the box and spread over the main text. +The following command \tkzcname{pgfresetboundingbox} clears a bounding box and establishes a new one. + +%Enfin Il est parfois utile de contenir une figure dans une b +%current bounding box or current path bounding box remember picture et overlay + +%<---------------------------------------------------------------------------> +% tkzShowBB +%<---------------------------------------------------------------------------> +\subsection{tkzShowBB} +The simplest macro. +\begin{NewMacroBox}{tkzShowBB}{\oarg{local options}}% +This macro displays the bounding box. A rectangular frame surrounds the bounding box. This macro accepts \TIKZ\ options. +\end{NewMacroBox} + + +\subsubsection{Example with \tkzcname{tkzShowBB}} +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture}[scale=.5] + \tkzInit[ymax=5,xmax=8] + \tkzGrid + \tkzDefPoint(3,0){A} + \begin{scope} + \tkzClipBB + \tkzDrawCircle[R](A,5 cm) + \tkzShowBB + \end{scope} +\tkzDrawCircle[R,red](A,4 cm) +\end{tikzpicture} +\end{tkzexample} +%<---------------------------------------------------------------------------> +% tkzClipBB +%<---------------------------------------------------------------------------> +\subsection{tkzClipBB} +\begin{NewMacroBox}{tkzClipBB}{}% +The idea is to limit future constructions to the current bounding box. +\end{NewMacroBox} + +\subsubsection{Example with \tkzcname{tkzClipBB} and the bisectors} + +\begin{tkzexample}[latex=6cm,small] + \begin{tikzpicture} + \tkzInit[xmin=-3,xmax=6, ymin=-1,ymax=6] + \tkzDefPoint(0,0){O}\tkzDefPoint(3,1){I} + \tkzDefPoint(1,4){J} + \tkzDefLine[bisector](I,O,J) \tkzGetPoint{i} + \tkzDefLine[bisector out](I,O,J) \tkzGetPoint{j} + \tkzDrawPoints(O,I,J,i,j) + \tkzClipBB + \tkzDrawLines[add = 1 and 2,color=red](O,I O,J) + \tkzDrawLines[add = 1 and 2,color=blue](O,i O,j) + \tkzShowBB + \end{tikzpicture} +\end{tkzexample} + + +%<---------------------------------------------------------------------------> +% tkzSetBB +%<---------------------------------------------------------------------------> +\subsection{tkzSetBB} +\begin{NewMacroBox}{tkzSetBB}{\parg{$x_A~;~y_A$} \parg{$x_B~;~y_B$} or {\parg{$A$} \parg{$B$}}}% +This macro defines the rectangle with coordinates $(x_A~;~y_A$) and $(x_B~;~y_B)$ as the new bounding box. +\end{NewMacroBox} + +\subsubsection{Example with \tkzcname{tkzShowBB}} +\begin{tkzexample}[latex=8cm,small] +above\\ +left +\begin{tikzpicture} + \tkzDefPoint(0,0){A} + \tkzDefPoint(3,3){B} + \tkzDefPoint(1,1){C} + \tkzSetBB(A)(2,2) + \tkzDrawSegment(A,B) + \tkzDrawPoints(A,C) + \tkzShowBB +\end{tikzpicture}right +\end{tkzexample} +%<---------------------------------------------------------------------------> +% tkzSaveBB +%<---------------------------------------------------------------------------> +\subsection{tkzSaveBB}{} +\begin{NewMacroBox}{tkzSaveBB}{}% +This macro saves the bounding box, i.e. it stores the coordinates of two points that define a rectangle. +\end{NewMacroBox} + +\begin{tkzexample}[latex=7cm,small] +A figure above the text. +\begin{tikzpicture} + \begin{scope} + \tkzSetBB(0,0)(6,2) \tkzShowBB[fill=blue!20] + \tkzSaveBB + \end{scope} + \tkzDefPoint(3,3){A}\tkzShowBB + \tkzDrawCircle[R,fill=yellow,opacity=.2](A,2cm) + \tkzRestoreBB +\end{tikzpicture} +\end{tkzexample} + + + + +%<---------------------------------------------------------------------------> +% tkzRestoreBB +%<---------------------------------------------------------------------------> +\subsection{tkzRestoreBB} +\begin{NewMacroBox}{tkzRestoreBB}{} +This macro retrieves the bounding box backup. As you can see, the figure overflows the box. The bounding box has been reduced. +\end{NewMacroBox} +\subsubsection{Example of the use of \tkzcname{tkzRestoreBB}} +\begin{tkzexample}[latex=8cm,small] + \vspace{ 2cm} +Start\\ +\begin{tikzpicture} + \tkzDefPoint(-2,-2){A} + \tkzDefPoint(2,1){B} + \tkzDefPoint(0,0){O} + \tkzSaveBB + \tkzShowBB[red,line width=1pt] + \tkzRestoreBB + \tkzDrawCircle(O,B) + \tkzClipBB + \tkzFillCircle[gray!20](O,B) +\end{tikzpicture} +End +\end{tkzexample} + + +%<---------------------------------------------------------------------------> +% tkzClip +%<---------------------------------------------------------------------------> +\subsection{tkzClip} +\begin{NewMacroBox}{tkzClip}{\oarg{local options}} +The role of this macro is to make invisible what is outside the rectangle defined by (xmin~;~ymin) and (xmax~;~ymax). + +\medskip +\begin{tabular}{lll} +\hline +options & default & definition \\ +\midrule +\TOline{space} {1} {added value on the right, left, bottom and top of the background} +\bottomrule +\end{tabular} + +\medskip + +The role of the \tkzname{space} option is to enlarge the visible part of the drawing. This part becomes the rectangle defined by (xmin-space~;~ymin-space) and (xmax+space~;~ymax+space). \tkzname{space} can be negative! The unit is cm and should not be specified. +\end{NewMacroBox} + +\subsubsection{First example with \tkzcname{tkzClip}} \hypertarget{clip}{} + +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture} + \tkzInit[xmax=3, ymax=3] + \tkzGrid + \tkzAxeXY + \draw[red] (-1,-1)--(5,5); +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Second example with \tkzcname{tkzClip}} +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture} + \tkzInit[xmax=3, ymax=3] + \tkzGrid + \tkzAxeXY + \tkzClip + \draw[red] (-1,-1)--(5,5); +\end{tikzpicture} +\end{tkzexample} +%<---------------------------------------------------------------------------> +It is possible to add a bit of space \tkzcname{tkzClip[space]}. + +\subsubsection{\tkzcname{tkzClip} and l'option \tkzname{space}} +The dimensions to define the clipped rectangle are \tkzname{xmin-1}, \tkzname{ymin-1}, \tkzname{xmax+1} and \tkzname{ymax+1}. + +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture} + \tkzInit[xmax=3, ymax=3] + \tkzGrid \tkzAxeXY + \tkzClip[space=-0.5] + \draw[red] (-0.5,-0.5)--(3.5,3.5); +\end{tikzpicture} +\end{tkzexample} + +\subsection{Reverse clip: tkzreverseclip} +The next example uses + +\begin{tkzltxexample}[] + \def\tkzClipOutPolygon(#1,#2){\clip[tkzreserveclip] (#1) + \foreach \pt in {#2}{--(\pt)}--cycle; + } + \tikzset{tkzreverseclip/.style={insert path={% + (\tkz@xa,\tkz@ya) rectangle (\tkz@xb,\tkz@yb)}}} + \end{tkzltxexample} + +\subsubsection{Example with \tkzcname{tkzClipOutPolygon}} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.5] + \tkzInit[xmin=-5,xmax=5,ymin=-5,ymax=5] + \pgfinterruptboundingbox + \tkzDefPoints{-.5/0/P1,.5/0/P2} + \foreach \i [count=\j from 3] in {2,...,7}{% + \tkzDefShiftPoint[P\i]({45*(\i-1)}:1 cm){P\j} + } + \endpgfinterruptboundingbox + \tkzClipOutPolygon(P1,P2,P3,P4,P5,P6,P7,P8) + \tkzCalcLength[cm](P1,P5)\tkzGetLength{r} + \begin{scope}[blend group=screen] + \foreach \i in {1,...,8}{% + \pgfmathparse{100-5*\i} + \tkzFillCircle[R,color=blue!% + \pgfmathresult](P\i,\r) + } + \end{scope} +\end{tikzpicture} +\end{tkzexample} + + +\subsection{Options from \TIKZ: trim left or right} +See the \tkzimp{pgfmanual} + +\subsection{\TIKZ\ Controls \tkzcname{pgfinterruptboundingbox} and \tkzcname{endpgfinterruptboundingbox}} +This command temporarily interrupts the calculation of the box and configures a new box. + +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture} +\tkzDefPoint(0,5){A}\tkzDefPoint(5,4){B} +\tkzDefPoint(0,0){C}\tkzDefPoint(5,1){D} +\pgfinterruptboundingbox + \tkzInterLL(A,B)(C,D)\tkzGetPoint{I} +\endpgfinterruptboundingbox +\tkzClipBB + \tkzDrawCircle(I,B) +\tkzDrawSegments(A,B C,D A,C) +\end{tikzpicture} +\end{tkzexample} +\endinput
\ No newline at end of file |