% \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} % % \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 % %\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} % %\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 % %\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} % %\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} % %\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 } % %\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} % %\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} % %\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} % %\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} % %\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} % %\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} % %\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} % %\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} % %\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} % %\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