diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/makeshape/ontesting.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/makeshape/ontesting.dtx | 1124 |
1 files changed, 1124 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/makeshape/ontesting.dtx b/Master/texmf-dist/source/latex/makeshape/ontesting.dtx new file mode 100644 index 00000000000..9f1bf6cf5f9 --- /dev/null +++ b/Master/texmf-dist/source/latex/makeshape/ontesting.dtx @@ -0,0 +1,1124 @@ +% \iffalse meta-comment +% +% ontesting.dtx +% 22 January 2013 +% +% This is version 1.1 +% It generates a test bed (testsample.tex) for the sample shape, +% and an article (ontesting.pdf) on the tests. +% +% Generation of testsample.tex is with +% pdflatex makeshape.ins +% which contains +% \generate{\file{testsample.tex} +% {\from{ontesting.dtx}{testbed}}} +% +% Generation of ontesting.pdf is with +% pdflatex ontesting.dtx +% +% The \OnlyDescription command is not used for this document. +% +% This is part of Silhouette 2.1 +% +% ------------------------------------------------------------------ +% \fi +% +% \iffalse +%^^A--------------------------------------------------------- +%^^A Preamble for documentation +%^^A--------------------------------------------------------- +%<*driver> +\documentclass[10pt,a4paper]{ltxdoc} + +\usepackage[T1]{fontenc} +\usepackage{lmodern} + +\usepackage{hyperref} + +\usepackage{makeshape} +\GetFileInfo{makeshape.sty} + +\newcommand{\mnote}[1] +{\marginpar{\scriptsize \raggedright #1 }} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\begin{document} +\DocInput{ontesting.dtx} +\end{document} +%</driver> +% \fi +% +%^^A------------------------------------------------------------------- +%^^A Change log... +%^^A------------------------------------------------------------------- +%^^A +%^^A 0.0 - 6 January 2013 +% \changes{0.0}{2013/01/06}{ +% Experimental - part of Silhouette 2.0.1. +% Testing code is adopted from existing documents but improved. +% Monolithic testing code generation. +% User documentation is incomplete. +% } +%^^A +%^^A 1.0 - 9 January 2013 (started 7 January) +% \changes{1.0}{2013/01/09}{ +% \emph{Experimental phase complete.} +% Testing code generation is embedded in the documentation. +% Testing code is updated with improved tests. +% Documentation on the role of the tests is completed. +% File names are finalised. +% } +%^^A +%^^A 1.1 - 22 January 2013 +% \changes{1.1}{2013/01/22}{ +% Tidied up the structure and layout of the test code. +% The description of the tests is improved. +% The report's title is changed. +% } +%^^A +%^^A------------------------------------------------------------------- +%^^A Check sums... +%^^A------------------------------------------------------------------- +% +%^^A no checksum required +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +%^^A=========================================================================== +%^^A Start report body +%^^A=========================================================================== +% +% \title{The {\sf makeshape} package\thanks{ +% This document is part of \textsf{makeshape}~\fileversion, dated~\filedate.}\\ +% {\tt testshape.tex}\\A Document for Testing the Package and \\Custom Shapes} +% +% \author{Adrian P. Robson\thanks{\texttt{adrian.robson@nepsweb.co.uk}}} +% \date{22 January 2013} +% +% \maketitle +% +% \tableofcontents +% +%\section{Introduction} +% +% Here we discus the |testsample.tex| document +% that is a test bed for the {\sf makeshape} package \cite{makeshape} +% and its sample shape. +% The package is in |makeshape.sty| and the sample shape is defined in |sampleshape.tex|. +% The test bed can be usefully adapted to work with any PGF \cite{pgfMan} shape +% developed with the {\sf makeshape} package. +% +% There are 11 test PGF pictures in the |testsample.tex| document, +% and we describe what each of these tests achieves, and what aspects are important for custom shapes. +% +% +%^^A################################################################# +%^^A# Test bed document - preamble - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +%% +%% This is a test bed for the makeshape package's +%% sampleshape in sampleshape.tex +%% +%% It can be easily adapted for other shapes. +%% +%% 22 January 2013 + +\documentclass[10pt,a4paper]{article} + +\usepackage{enumitem} +\usepackage{tikz} +\usetikzlibrary{backgrounds} +\usetikzlibrary{arrows} + +%%------------------------------------------------- +%% file and shape being tested +\def\filename{sampleshape} % file being tested +\input{\filename} % It is a .tex +%%\usepackage{\filename} % It is a .sty +\def\testshape{sample} % shape being tested +%%------------------------------------------------- + +%%-------------------------------------------------------- +%% Utility macros +%%-------------------------------------------------------- + +%% \spot{x}{y} +\newcommand{\spot}[2]{ + \draw[help lines,red] (#1,#2) circle (1pt); +} + +%% \markOrig +\def\mrksz{4pt} +\def\mrkcol{yellow} +\newcommand{\markOrig}{ + \draw[help lines,\mrkcol] (0,0) circle (\mrksz); + \draw[help lines,\mrkcol] (-\mrksz,0) -- (\mrksz,0); + \draw[help lines,\mrkcol] (0,-\mrksz) -- (0,\mrksz); +} + +%% \markOrigC{colour} +\def\mrksz{4pt} +\newcommand{\markOrigC}[1]{ + \draw[help lines,#1] (0,0) circle (\mrksz); + \draw[help lines,#1] (-\mrksz,0) -- (\mrksz,0); + \draw[help lines,#1] (0,-\mrksz) -- (0,\mrksz); +} + +%% Anchors ... +%% \***{node}{size}{colour} + +\def\centeranchor#1#2#3{ + \draw[help lines,#3] (#1.center) circle (#2); +} + +\def\textanchor#1#2#3{ + \draw[help lines,#3] (#1.text) circle (#2); +} + +\def\cardinalanchors#1#2#3{ + \draw[help lines,#3] (#1.north) circle (#2); + \draw[help lines,#3] (#1.west) circle (#2); + \draw[help lines,#3] (#1.south) circle (#2); + \draw[help lines,#3] (#1.east) circle (#2); +} + +\def\corneranchors#1#2#3{ + \draw[help lines,#3] (#1.north west) circle (#2); + \draw[help lines,#3] (#1.south west) circle (#2); + \draw[help lines,#3] (#1.south east) circle (#2); + \draw[help lines,#3] (#1.north east) circle (#2); +} + +\def\allanchors#1#2#3{ + \corneranchors{#1}{#2}{#3} + \cardinalanchors{#1}{#2}{#3} +} + +%%-------------------------------------------------------- + +\title{The {\sf makeshape} package\\ + Shape Test Bed + \vspace{-3ex} } +\author{} +\date{ +\begin{tabular}{rl} + File & {\tt \filename}\\ + Shape & {\tt \testshape} +\end{tabular} +\\[2ex] +\today} + +\begin{document} + +\maketitle + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - preamble - end +%^^A################################################################# +% +% \section{The Tests} +% +% \subsection{Basic Shape} +% +% This section shows the shape with its default size and separation options. +% Cardinal anchor points are show in red; the centre anchor in blue; +% and the text anchor in green. +% The green lines show the the text box size. +% +% It tests the package's management of the text box, the text and centre anchors, +% and the shape's cardinal anchors. +% \emph{Check that the background path is correct, +% and that the anchors are in the correct positions.} +% +%^^A################################################################# +%^^A# Test bed document - basic shape tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Basic Shape} + +\begin{center} +\begin{tikzpicture} + +\node at (0,0) + [\testshape, draw + ] (test) {\verb|x x|} ; + +\allanchors{test}{2pt}{red} +\textanchor{test}{2pt}{green} +\draw[help lines,green] (test.text) -- ++(7pt,0); +\draw[help lines,green] (test.text) -- ++(0,5pt); +\centeranchor{test}{2pt}{blue} + +%% mark the anchors with arrows from enclosing rectangle +\node at (0,0) + [rectangle, red, + minimum width=4cm, + minimum height=2cm + ] (outer) {} ; +\begin{scope}[>=latex'] +\draw[->,help lines,red] (outer.north) -- (test.north); +\draw[->,help lines,red] (outer.east) -- (test.east); +\draw[->,help lines,red] (outer.south) -- (test.south); +\draw[->,help lines,red] (outer.west) -- (test.west); +\draw[->,help lines,red] (outer.north east) -- (test.north east); +\draw[->,help lines,red] (outer.south east) -- (test.south east); +\draw[->,help lines,red] (outer.south west) -- (test.south west); +\draw[->,help lines,red] (outer.north west) -- (test.north west); +\end{scope} + +\begin{scope}[on background layer] +\node at (4cm,0) + [rectangle, draw + ] (rectRmin) {\verb|x x|}; + +\node at (0,-1.7cm) + [rectangle, draw + ] (rectBmin) {\verb|x x|}; + +\draw[help lines,green] (rectRmin.north west) -- ++(-4.5cm,0); +\draw[help lines,green] (rectRmin.south west) -- ++(-4.5cm,0); +\draw[help lines,green] (rectBmin.north west) -- ++(0,2.3cm); +\draw[help lines,green] (rectBmin.north east) -- ++(0,2.3cm); +\markOrig +\end{scope} + +\end{tikzpicture} + +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - basic shape tests - end +%^^A################################################################# +% +% \subsection{Minimum Dimensions} +% +% This tests support for minimum width and height keys. +% Yellow lines mark the required sizes and centres, and +% green lines show the text box location. +% Cardinal anchors are shown in red. +% +% \emph{Check that the background path has scaled properly to the correct dimensions; +% and the anchors are in the right places.} +% +%^^A################################################################# +%^^A# Test bed document - minimum dimension tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +\vfill +%%-------------------------------------------------------- +\section*{Minimum Dimensions} + +\def\minh{30pt} +\def\minw{80pt} + +{\tt minimum width = \minw}\\ +{\tt minimum height = \minh} + +\begin{center} +\begin{tikzpicture} + +%% The test shape +\node at (0,0) + [\testshape, draw, + minimum width=\minw, + minimum height=\minh, + ] (test) {\verb|x x|} ; + +\allanchors{test}{1pt}{red} + +%% Guide lines +\begin{scope}[on background layer] +\node at (4.5cm+\minw,0) + [rectangle, draw + ] (rectRmin) {\verb|x x|}; + +\node at (1.5cm+\minw,0) + [rectangle, draw, + minimum width=\minw, + minimum height=\minh + ] (rectR) {\verb|x x|}; + +\node at (0,-1cm-\minh) + [rectangle, draw, + minimum width=\minw, + minimum height=\minh + ] (rectB) {\verb|x x|}; + +\node at (0,-2.5cm-\minh) + [rectangle, draw, + ] (rectBmin) {\verb|x x|}; + +\markOrig +\draw[help lines,yellow] (rectR.north west) -- ++(-1.7cm-\minw,0); +\draw[help lines,yellow] (rectR.south west) -- ++(-1.7cm-\minw,0); +\draw[help lines,yellow] (rectR.west) -- ++(-1.7cm-\minw,0); +\draw[help lines,yellow] (rectR.west) -- ++(\minw+0.2cm,0); +\draw[help lines,yellow] (rectB.north west) -- ++(0,1.2cm+\minh); +\draw[help lines,yellow] (rectB.north east) -- ++(0,1.2cm+\minh); +\draw[help lines,yellow] (rectB.north) -- ++(0,1.2cm+\minh); +\draw[help lines,yellow] (rectB.north) -- ++(0,-\minh-0.2cm); + +\draw[help lines,green] (rectRmin.north west) -- ++(-4.6cm-\minw,0); +\draw[help lines,green] (rectBmin.north west) -- ++(0,2.6cm+\minh); +\end{scope} + +\end{tikzpicture} +\end{center} +\vfill + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - minimum dimension tests - end +%^^A################################################################# +% +% \subsection{Inner Separation} +% +% This tests support for the inner separation keys. +% Inner separation is handled by the package and is included in +% the corrected text box. +% Green lines show the basic text box location, and +% blue lines show the corrected text box location. +% Cardinal anchors are shown in red. +% +% \emph{Check that the shape has scaled properly under the influence of the two keys; +% and the anchors are in the right places.} +% +%^^A################################################################# +%^^A# Test bed document - inner separation tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +\newpage +%%-------------------------------------------------------- +\section*{Inner Separation} + +\def\insepx{20pt} +\def\insepy{10pt} + +{\tt inner x seperation = \insepx}\\ +{\tt inner y seperation = \insepy} + +\begin{center} +\begin{tikzpicture} + +%% The test shape +\node at (0,0) + [\testshape, draw, + inner xsep=\insepx, inner ysep=\insepy + ] (test) {\verb|x x|} ; + +\allanchors{test}{1pt}{red} + +%% Guide lines +\begin{scope}[on background layer] +\markOrig + +\node at (2.5cm,0) + [rectangle, draw + ] (rectRmin) {\verb|x x|}; + +\node at (0,-1.5cm) + [rectangle, draw + ] (rectBmin) {\verb|x x|}; + +\node at (4cm,0) + [rectangle, draw, + inner ysep=\insepy + ] (rectRwithSep) {\verb|x x|}; + +\node at (0,-2.2cm) + [rectangle, draw, + inner xsep=\insepx + ] (rectBwithSep) {\verb|x x|}; + +\draw[help lines,green] (rectRmin.north west) -- ++(-3.4cm,0); +\draw[help lines,green] (rectBmin.north west) -- ++(0,2cm); +\draw[help lines,blue] (rectRwithSep.north west) -- ++(-4.9cm,0); +\draw[help lines,blue] (rectBwithSep.north west) -- ++(0,2.7cm); +\end{scope} + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - inner separation tests - end +%^^A################################################################# +% +% \subsection{Outer Separation} +% +% This section tests the outer separation keys. +% The actual shape is drawn in black. +% To shown the boundary of the outer separation surface, +% the shape is expanded and drawn in green. +% Anchors, which should be on this surface are displayed in red. +% +% \emph{Check that the expanded green shape is well formed, +% and that the anchors are in the correct place.} +% +%^^A################################################################# +%^^A# Test bed document - outer separation tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Outer Separation} + +\def\minh{20pt} +\def\minw{60pt} +\def\outerx{20pt} +\def\outery{10pt} + +{\tt outer x separation = \outerx}\\ +{\tt outer y separation = \outery} + +\begin{center} +\begin{tikzpicture} + +\markOrig + +%% the shape with outer separation +\node at (0,0) + [\testshape, draw, + minimum width=\minw, + minimum height=\minh, + outer xsep=\outerx, outer ysep=\outery + ] (test) {\verb|x x|} ; + +%% shape expanded to outer separation boundary +\node at (0,0) + [\testshape, draw, help lines, green, + minimum width=\minw+2*\outerx, + minimum height=\minh+2*\outery, + ] (bigger) {} ; + +%% mark the anchors with arrows from enclosing rectangle +\node at (0,0) + [rectangle, + minimum width=\minw+1cm, + minimum height=\minh+1cm, + outer xsep=\outerx, outer ysep=\outery + ] (outer) {} ; + +\begin{scope}[>=latex'] +\draw[->,help lines,red] (outer.north) -- (test.north); +\draw[->,help lines,red] (outer.east) -- (test.east); +\draw[->,help lines,red] (outer.south) -- (test.south); +\draw[->,help lines,red] (outer.west) -- (test.west); +\draw[->,help lines,red] (outer.north east) -- (test.north east); +\draw[->,help lines,red] (outer.south east) -- (test.south east); +\draw[->,help lines,red] (outer.south west) -- (test.south west); +\draw[->,help lines,red] (outer.north west) -- (test.north west); +\end{scope} + +%% mark anchors with circles +\allanchors{test}{2pt}{red} + +%% mark text and centre anchors +\textanchor{test}{2pt}{green} +\draw[help lines,green] (test.text) -- ++(7pt,0); +\draw[help lines,green] (test.text) -- ++(0,5pt); +\centeranchor{test}{2pt}{blue} + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - outer separation tests - end +%^^A################################################################# +% +% \subsection{Anchorborder} +% +% There are three tests that are applied to verify the behaviour of +% the package's |\anchorborder|, and the shape's anchor path. +% +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Anchorborder } + +%</testbed> +%\fi +% +% \subsubsection{\texorpdfstring{External Points with Outer Separation and\\ +% Minimum Dimensions} +% {External Points with Outer Separation and +% Minimum Dimensions}} +% +% This tests the connection of an external point to the shape's surface. +% It exercises outer separation and minimum dimensions. +% The black surface is the shape without any separation, +% and the outer green surface is where the outer separation surface should be. +% \emph{Check that the black arrows touch the outer green surface; +% and that the green shape is correct.} +% +%^^A################################################################# +%^^A# Test bed document - external points with outer separation and +%^^A# minimum dimensions tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\subsection*{External Points with Outer Separation and\\Minimum Dimensions} + +\def\width{2cm} +\def\height{1cm} +\def\testouter{10pt} + +{\tt outer sep = \testouter}\\ +{\tt minimum height = \height}\\ +{\tt minimum width = \width} + +\begin{center} +\begin{tikzpicture} + +\markOrig + +%% The test shape +\node at (0,0) [\testshape, draw, font={\sf \small}, + minimum width=\width, + minimum height=\height, + outer sep=\testouter + ] (test) {Test}; + +%% green path where anchors should be +\node at (0,0) [\testshape, draw, help lines, green, + minimum width=\width+2*\testouter, + minimum height=\height+2*\testouter, + ] (bigger) {} ; + +\def\n{20} +\def\radius{3cm} +\draw[dotted] (0,0) circle (\radius); +\foreach \s in {1,...,\n} +{ + \draw[->, >=latex'] ({360/\n * (\s - 1)}:\radius) -- (test); +} +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - external points with outer separation and +%^^A# minimum dimensions tests - end +%^^A################################################################# +% +% \subsubsection{Internal Points with Minimum Dimensions} +% +% This tests the connection of an internal point to the shape's surface. +% It uses minimum dimensions. +% \emph{Check that the red arrows touch the outer black surface, +% and that the black shape is correct.} +% +%^^A################################################################# +%^^A# Test bed document - internal points with minimum dimensions +%^^A# tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\subsection*{Internal Points with Minimum Dimensions} + +\def\width{3cm} +\def\height{3cm} + +{\tt minimum height = \height}\\ +{\tt minimum width = \width} + +\vspace{-3ex} +\begin{center} +\begin{tikzpicture} + +\markOrig + +%% The test shape +\node at (0,0) [\testshape, draw, font={\sf \small}, + minimum width=\width, + minimum height=\height, + ] (test) {}; + +\def\n{20} +\def\radius{1cm} +\draw[dotted] (0,0) circle (\radius); +\foreach \s in {1,...,\n} +{ + \draw[->, >=latex', red] ({360/\n * (\s - 1)}:\radius) -- (test); +} +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - internal points with minimum dimensions +%^^A# tests - end +%^^A################################################################# + +% \subsubsection{Angles with Outer Separation and Minimum Dimensions} +% +% This tests the `connect a line at an angle' feature. +% Different x and y outer separations and minimum dimensions are used. +% The black surface is the shape without any separation, +% and the outer red surface is where the outer separation surface should be. +% \emph{Check that the blue dots are on the outer red surface, +% and that the red shape is correct.} +% +%^^A################################################################# +%^^A# Test bed document - angles with outer separation and minimum +%^^A# dimensions tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\subsection*{Angles with Outer Separation and Minimum Dimensions} + +\def\angle{120} +\def\width{2cm} +\def\height{1cm} +\def\testouterx{20pt} +\def\testoutery{10pt} + +Marked angle = \angle\\ +{\tt outer xsep = \testouterx}\\ +{\tt outer ysep = \testoutery}\\ +{\tt minimum height = \height}\\ +{\tt minimum width = \width} + +\vspace{-5ex} +\begin{center} +\begin{tikzpicture} + +\markOrig + +%% red path where anchors should be ? +\node at (0,0) [\testshape, draw, help lines, red, + minimum width=\width+2*\testouterx, + minimum height=\height+2*\testoutery, + ] (bigger) {}; + +\node at (0,0) [\testshape, draw, + minimum width=\width, + minimum height=\height, + outer xsep=\testouterx, + outer ysep=\testoutery + ] (test) {}; + +\foreach \angle in {0,5,...,355} { + \fill[blue] (test.\angle) circle[radius=1pt]; +} + +%% single angle test +\def\angle{120} +\draw [help lines] (test.center) -- ++(\angle:1.5cm); +\draw[green] (test.\angle) circle[radius=2pt]; +\draw[green] (test.\angle) -- ++(3pt,3pt); +\draw[green] (test.\angle) -- ++(-3pt,-3pt); +\draw[green] (test.\angle) -- ++(-3pt,3pt); +\draw[green] (test.\angle) -- ++(3pt,-3pt); + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - angles with outer separation and minimum +%^^A# dimensions tests - end +%^^A################################################################# +% +% \subsection{Simple Node Connections} +% +% This tests simple node connection. +% \emph{Check that the centre shape is connect to the surrounding eight shapes.} +% +%^^A################################################################# +%^^A# Test bed document - simple node connections tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Simple Node Connections} + +\begin{center} +\begin{tikzpicture} +\def\ra{0} \def\rb{60pt} \def\rc{120pt} +\def\ca{0} \def\cb{100pt} \def\cc{200pt} + +\draw[help lines,step=20pt,dotted] (0pt,0pt) grid (\cc,\rc); + +\tikzset{node style/.style={ minimum width=40pt,minimum height=20pt}} + +\markOrig + +\node at (\ca,\ra) [draw, \testshape, node style] (A) {A}; +\node at (\cb,\ra) [draw, \testshape, node style] (B) {B}; +\node at (\cc,\ra) [draw, \testshape, node style] (C) {C}; +%% +\node at (\ca,\rb) [draw, \testshape, node style] (D) {D}; +\node at (\cb,\rb) [draw, \testshape, node style] (E) {E}; +\node at (\cc,\rb) [draw, \testshape, node style] (F) {F}; +%% +\node at (\ca,\rc) [draw, \testshape, node style] (G) {G}; +\node at (\cb,\rc) [draw, \testshape, node style] (H) {H}; +\node at (\cc,\rc) [draw, \testshape, node style] (I) {I}; + +\draw (E) -- (F); +\draw (E) -- (D); +\draw (E) -- (B); +\draw (E) -- (H); +\draw (E) -- (G); +\draw (E) -- (A); +\draw (E) -- (I); +\draw (E) -- (C); + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - simple node connections tests - end +%^^A################################################################# +% +% \subsection{Scaling} +% +% This is a simple scaling test that uses minimum dimensions to draw +% the shape at three sizes. +% There are guide lines showing dimensions for each size. +% \emph{Check that all of the shapes are correct.} +% +%^^A################################################################# +%^^A# Test bed document - scaling tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Scaling} + +\def\minh{20pt} +\def\minw{80pt} +\def\exd{5pt} + +\begin{center} +\begin{tikzpicture} + +\node at (0,0) + [\testshape, draw, + minimum width=\minw, + minimum height=\minh, + ] (test1) {} ; + +\node at (0,0) + [\testshape, draw, blue, + minimum width=\minw+1cm, + minimum height=\minh+1cm, + ] (test2) {} ; + +\node at (0,0) + [\testshape, draw, red, + minimum width=\minw+2cm, + minimum height=\minh+2cm, + ] (test3) {} ; + +\def\tgridA#1#2{ +\draw[help lines] ({0.5*(\minw+#1)+\exd},{0.5*(\minh+#1)}) -- ({-0.5*(\minw+#1)-\exd},{0.5*(\minh+#1)}); +\draw[help lines] ({0.5*(\minw+#1)+\exd},{-0.5*(\minh+#1)}) -- ({-0.5*(\minw+#1)-\exd},{-0.5*(\minh+#1)}); +\draw[help lines] ({0.5*(\minw+#1)},{0.5*(\minh+#1)+\exd}) -- ({0.5*(\minw+#1)},{-0.5*(\minh+#1)-\exd}); +\draw[help lines] ({-0.5*(\minw+#1)},{0.5*(\minh+#1)+\exd}) -- ({-0.5*(\minw+#1)},{-0.5*(\minh+#1)-\exd}); +} + +\begin{scope}[on background layer] +\tgridA{0pt}{0pt} +\tgridA{1cm}{1cm} +\tgridA{2cm}{2cm} +\markOrig +\end{scope} + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - scaling tests - end +%^^A################################################################# +% +% +% \subsection{Package Tests} +% +%^^A################################################################# +%^^A# Test bed document - package tests peamble - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\section*{Package Tests} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - package tests preamble- end +%^^A################################################################# +% +% \subsubsection{Text Alignment and the Text Box} +% +% This verifies the operation of the text box macros. +% All combinations of test ascenders and descenders are used. +% It tests the package's management of the text box and the text and centre anchors. +% The left hand shapes are standard text boxes. +% +% \emph{ +% Check the shape's text boxes align with the standard boxes. +% Also that the blue centre anchor is at the yellow origin; +% and the green text anchor is in the correct place. +% Finally, the red cardinal anchors should be suitably located on the shapes boundary. } +% +%^^A################################################################# +%^^A# Test bed document - text alignment and +%^^A# the text box tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\subsection*{Text Alignment and the Text Box} + +\begin{center} +\begin{tikzpicture} + +\node at (0,0) + [\testshape, draw + ] (test1) {\verb|x x|} ; + +\node[ \testshape, draw, + below of=test1, + node distance=1cm + ] (test2) {\verb|x dx|} ; + +\node[ \testshape, draw, + below of=test2, node distance=1cm + ] (test3) {\verb|xp x|} ; + +\node[ \testshape, draw, + below of=test3, node distance=1cm + ] (test4) {\verb|xp dx|} ; + +\allanchors{test1}{1pt}{red} +\corneranchors{test2}{1pt}{red} +\corneranchors{test3}{1pt}{red} +\corneranchors{test4}{1pt}{red} +\centeranchor{test1}{2pt}{blue} +\centeranchor{test2}{2pt}{blue} +\centeranchor{test3}{2pt}{blue} +\centeranchor{test4}{2pt}{blue} +\textanchor{test1}{1pt}{green} +\draw[help lines,green] (test1.text) -- ++(7pt,0); +\draw[help lines,green] (test1.text) -- ++(0,5pt); +\textanchor{test2}{1pt}{green} +\textanchor{test3}{1pt}{green} +\textanchor{test4}{1pt}{green} + +\begin{scope}[on background layer] + +\markOrig + +\node at(4cm,0) [ rectangle, draw + ] (ref1) {\verb|x x|} ; +\draw[green] (ref1.north west) -- ++(-5cm,0); +\draw[green] (ref1.south west) -- ++(-5cm,0); + +\node[rectangle, draw, + below of=ref1, node distance=1cm + ] (ref2) {\verb|x dx|} ; +\draw[green] (ref2.north west) -- ++(-5cm,0); +\draw[green] (ref2.south west) -- ++(-5cm,0); + +\node[rectangle, draw, + below of=ref2, node distance=1cm + ] (ref3) {\verb|xp x|} ; +\draw[green] (ref3.north west) -- ++(-5cm,0); +\draw[green] (ref3.south west) -- ++(-5cm,0); + +\node[rectangle, draw, + below of=ref3, node distance=1cm + ] (ref4) {\verb|xp dx|} ; +\draw[green] (ref4.north west) -- ++(-5cm,0); +\draw[green] (ref4.south west) -- ++(-5cm,0); + +\end{scope} + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - text alignment and +%^^A# the text box tests - end +%^^A################################################################# +% +% \subsubsection{Inner, Outer and Angle for Shape Off Origin} +% +% This is a test for the correct operation of the package's |\anchorborder| +% with off-origin shapes. +% In particular, its use of the |\pgf@relevantforpicturesizefalse| +% and |\pgftransformreset| commands. +% +% \emph{Check that the outer box `closely' contains the picture, +% and that the green arrows and points are on the shape's boundary.} +% +%^^A################################################################# +%^^A# Test bed document - inner, outer and angle for shape off +%^^A# origin tests - start +%^^A################################################################# +%\iffalse +%<*testbed> +%%-------------------------------------------------------- +\subsection*{Inner, Outer and Angle for Shape Off Origin} + +The box should closely contain picture if {\tt anchorborder} is working correctly. +\bigskip + +\begin{center} +\begin{tikzpicture}[framed] + +\markOrigC{black} +\draw (2pt,0) node[anchor=west]{\tt \tiny origin}; + +%% The test shape +\node at (70pt,40pt) + [\testshape, draw, + red, minimum width=60pt, minimum height=40pt + ] (node) {}; + +%% outer test line +\path (node); +\pgfgetlastxy{\macrox}{\macroy} +\coordinate (Xout) at (\macrox+20pt,\macroy+40pt); + +\draw (Xout) circle(3pt); +\draw [help lines] (node.center) -- (Xout); +\draw [->, >=latex',green] (Xout) -- (node); % <<< + +%% inner test line +\path (node); +\pgfgetlastxy{\macrox}{\macroy} +\coordinate (Xin) at (\macrox-5pt,\macroy-5pt); + +\draw (Xin) circle(3pt); +\draw [help lines,shorten >=-1cm] (node.center) -- (Xin); +\draw [->, >=latex',green] (Xin) -- (node); % <<< + +%% test angle +\def\angle{120} +\draw [help lines] (node.center) -- ++(\angle:1.5cm); +\draw[green] (node.\angle) circle[radius=2pt]; % <<< + +\end{tikzpicture} +\end{center} + +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - inner, outer and angle for shape off +%^^A# origin tests - end +%^^A################################################################# +% +%^^A################################################################# +%^^A# Test bed document - epilogue - start +%^^A################################################################# +%\iffalse +%<*testbed> +\end{document} +%</testbed> +%\fi +%^^A################################################################# +%^^A# Test bed document - epilogue - end +%^^A################################################################# +% +% \section{Reuse} +% +% The |testsample.tex| file can be adapted to test other shapes developed using +% the {\sf makeshape} package. Find the following section: +% +% \begin{verbatim} +% %%------------------------------------------------- +% %% file and shape being tested +% \def\filename{sampleshape} % file being tested +% \input{\filename} % It is a .tex +% %%\usepackage{\filename} % It is a .sty +% \def\testshape{sample} % shape being tested +% %%------------------------------------------------- +% \end{verbatim} +% Then change |sampleshape| to the new file name, and |sample| to the particular shape's name. +% Choose |\input| or |\usepackage| dependinmg on the file type. +% +% The report's ending `Package Test' section can be deleted, and additional shape specific tests added. +% The file's {\sf makeshape} package oriented name +% and its heading comment should probably be changed as well. +% +%^^A=========================================================================== +%^^A References +%^^A=========================================================================== +% +% \begin{thebibliography}{9} +% \raggedright +% +% \bibitem{makeshape} +% Adrian P. Robson, +% \emph{The makeshape package +% and a method for creating custom shapes in PGF}, 2013. +% +% \bibitem{pgfMan} +% Till Tantau, \emph{The TikZ and PGF Packages, Manual for version 2.10}, +% 2010. +% Available as +% \href{http://mirrors.ctan.org/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf} +% {\tt pgfmanual.pdf} +% from the \href{http://ctan.org}{Comprehensive TeX Archive Network}. +% +% \end{thebibliography} +% +%^^A=========================================================================== +%^^A Print Changes +%^^A +%^^A -> Run pdfLaTeX ontesting.dtx +%^^A makeindex -s gglo.ist -o ontesting.gls ontesting.glo +%^^A pdfLaTeX ontesting.dtx +%^^A=========================================================================== +% +%^^A \PrintChanges +% +\endinput + |