From 639ea304450fded74d7d5483729877cebd382a38 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 28 Jan 2013 22:55:48 +0000 Subject: makeshape 2.1 (25jan13) git-svn-id: svn://tug.org/texlive/trunk@28973 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/makeshape/README | 64 ++ .../texmf-dist/doc/latex/makeshape/makeshape.pdf | Bin 0 -> 404031 bytes .../texmf-dist/doc/latex/makeshape/ontesting.pdf | Bin 0 -> 355325 bytes .../texmf-dist/doc/latex/makeshape/sampleshape.tex | 131 ++++ .../texmf-dist/doc/latex/makeshape/testsample.pdf | Bin 0 -> 108691 bytes .../texmf-dist/doc/latex/makeshape/testsample.tex | 685 +++++++++++++++++++++ 6 files changed, 880 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/makeshape/README create mode 100644 Master/texmf-dist/doc/latex/makeshape/makeshape.pdf create mode 100644 Master/texmf-dist/doc/latex/makeshape/ontesting.pdf create mode 100644 Master/texmf-dist/doc/latex/makeshape/sampleshape.tex create mode 100644 Master/texmf-dist/doc/latex/makeshape/testsample.pdf create mode 100644 Master/texmf-dist/doc/latex/makeshape/testsample.tex (limited to 'Master/texmf-dist/doc/latex/makeshape') diff --git a/Master/texmf-dist/doc/latex/makeshape/README b/Master/texmf-dist/doc/latex/makeshape/README new file mode 100644 index 00000000000..1b02f737716 --- /dev/null +++ b/Master/texmf-dist/doc/latex/makeshape/README @@ -0,0 +1,64 @@ + +makeshape 2.1 (25 January 2013) + +The makeshape package simplifies writing PGF shapes. + +Declaring custom shapes with correct anchor borders can be difficult. +Complex shapes often need complicated calculations to find the touching +point of a connecting line. This package only requires that a developer +write a PGF path describing the anchor border. It also provides macros +that help with the management of shape parameters, and the definition +of anchor points. + +------------------------------------------------------------------------- +The package's documentation files are + +makeshape.pdf - The package's user guide +sampleshape.tex - A sample shape. +testsample.tex - Source for a document that tests the sample shape. +testsample.pdf - The outcome of the tests. +ontesting.pdf - A report on the various tests used in testsample.tex + +The package's installation files are + +makeshape.sty - The package's style file + +makeshape.ins - The package's installation file. +makeshape.dtx - Source for the package's user documentation and code. +ontesting.dtx - Source for a report on testing and code for the test + document. + +These files can be generated with the following commands + +pdflatex makeshape.ins +pdflatex makeshape.dtx +pdflatex ontesting.dtx +pdflatex testsample.tex + +Comment out the 'OnlyDescription' line in makeshape.dtx to include the +package's implementation documentation. + +------------------------------------------------------------------------- +Copyright (C) 2013 by Adrian P Robson + adrian.robson@nepsweb.co.uk + +This work may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in + http://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. The Current +Maintainer of this work is Adrian P Robson. + +This work consists of the files makeshape.ins + makeshape.dtx and + ontesting.dtx +and the derived files makeshape.sty + makeshape.pdf + sampleshape.tex + ontesting.pdf + testsample.tex and + testsample.pdf + +------------------------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/makeshape/makeshape.pdf b/Master/texmf-dist/doc/latex/makeshape/makeshape.pdf new file mode 100644 index 00000000000..fa61daa503c Binary files /dev/null and b/Master/texmf-dist/doc/latex/makeshape/makeshape.pdf differ diff --git a/Master/texmf-dist/doc/latex/makeshape/ontesting.pdf b/Master/texmf-dist/doc/latex/makeshape/ontesting.pdf new file mode 100644 index 00000000000..c007b430aa8 Binary files /dev/null and b/Master/texmf-dist/doc/latex/makeshape/ontesting.pdf differ diff --git a/Master/texmf-dist/doc/latex/makeshape/sampleshape.tex b/Master/texmf-dist/doc/latex/makeshape/sampleshape.tex new file mode 100644 index 00000000000..01454695efa --- /dev/null +++ b/Master/texmf-dist/doc/latex/makeshape/sampleshape.tex @@ -0,0 +1,131 @@ +%% +%% This is file `sampleshape.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% makeshape.dtx (with options: `sample') +%% +%% Copyright (C) 2013 by Adrian P Robson +%% adrian.robson@nepsweb.co.uk +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Adrian Robson. +%% +%% This work consists of the files makeshape.ins +%% makeshape.dtx and +%% ontesting.dtx +%% and the derived files makeshape.sty +%% makeshape.pdf +%% sampleshape.tex +%% ontesting.pdf +%% testsample.tex and +%% testsample.pdf +%% +%%-------------------------------------------------- +%% +%% This is a sample shape for the makeshape package +%% +%% It can be adapted for other shapes. See +%% makeshape.pdf for instructions. +%% +%% 25 January 2013 + +\usepackage{makeshape} +\makeatletter + +%% Constant for sample shape +\def\gap{4pt} + +%% Anchor path <- change and rename as required +\def\sampleanchor{ + % get corrected text box + \pgf@xa=\ctbnex + \pgf@ya=\ctbney + % make room for shape + \advance\pgf@xa by \gap + \advance\pgf@ya by \gap + % correct for minheight and minwidth and + % for outerxsep or outerysep + \mincorrect{\pgf@xa}{\pgfshapeminwidth} + \advance\pgf@xa\pgfshapeouterxsep + \mincorrect{\pgf@ya}{\pgfshapeminheight} + \advance\pgf@ya\pgfshapeouterysep + % draw the path + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}} + \pgfpathclose +} + +%% Background path <- change and rename as required +\def\sampleborder{ + % get corrected text box + \pgf@xa=\ctbnex + \pgf@ya=\ctbney + % make room for shape + \advance\pgf@xa by \gap + \advance\pgf@ya by \gap + % correct for minheight and minwidth but + % not for outerxsep or outerysep + \mincorrect{\pgf@xa}{\pgfshapeminwidth} + \mincorrect{\pgf@ya}{\pgfshapeminheight} + % draw outer shape + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}} + \pgfpathclose + % draw inner shape + \advance\pgf@xa by -\gap + \advance\pgf@ya by -\gap + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}} + \pgfpathclose +} + +%%------------------------------------------------ +%% Shape declaration <- Change name as required +\pgfdeclareshape{sample}{ + + % Set paths <- change path macros as required + \setpaths{\sampleanchor}{\sampleborder} + + % Saved anchors <- change as required + \savedanchor{\northeast}{ + \pgf@x = \ctbnex + \pgf@y = \ctbney + \advance\pgf@x by \gap + \advance\pgf@y by \gap + \mincorrect{\pgf@x}{\pgfshapeminwidth} + \mincorrect{\pgf@y}{\pgfshapeminheight} + \advance\pgf@x\pgfshapeouterxsep + \advance\pgf@y\pgfshapeouterysep + } + + % Anchors <- change as required + \anchor{north}{\northeast \pgf@x=0pt} + \anchor{north east}{\northeast} + \anchor{east}{\northeast \pgf@y=0pt} + \anchor{south east}{\northeast \pgf@y=-\pgf@y} + \anchor{south}{\northeast \pgf@x=0pt \pgf@y=-\pgf@y} + \anchor{south west}{\northeast \pgf@x=-\pgf@x \pgf@y=-\pgf@y} + \anchor{west}{\northeast \pgf@x=-\pgf@x \pgf@y=0pt} + \anchor{north west}{\northeast \pgf@x=-\pgf@x} + +} + +\makeatother + +\endinput +%% +%% End of file `sampleshape.tex'. diff --git a/Master/texmf-dist/doc/latex/makeshape/testsample.pdf b/Master/texmf-dist/doc/latex/makeshape/testsample.pdf new file mode 100644 index 00000000000..fe589db561e Binary files /dev/null and b/Master/texmf-dist/doc/latex/makeshape/testsample.pdf differ diff --git a/Master/texmf-dist/doc/latex/makeshape/testsample.tex b/Master/texmf-dist/doc/latex/makeshape/testsample.tex new file mode 100644 index 00000000000..da2161c708a --- /dev/null +++ b/Master/texmf-dist/doc/latex/makeshape/testsample.tex @@ -0,0 +1,685 @@ +%% +%% This is file `testsample.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ontesting.dtx (with options: `testbed') +%% +%% Copyright (C) 2013 by Adrian P Robson +%% adrian.robson@nepsweb.co.uk +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Adrian Robson. +%% +%% This work consists of the files makeshape.ins +%% makeshape.dtx and +%% ontesting.dtx +%% and the derived files makeshape.sty +%% makeshape.pdf +%% sampleshape.tex +%% ontesting.pdf +%% testsample.tex and +%% testsample.pdf +%% +%%-------------------------------------------------------- +%% +%% 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 + +%%-------------------------------------------------------- +\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} + +\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 + +\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} + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\section*{Anchorborder } + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\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} + + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\section*{Package Tests} + +%%-------------------------------------------------------- +\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} + +%%-------------------------------------------------------- +\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} + +\end{document} +\endinput +%% +%% End of file `testsample.tex'. -- cgit v1.2.3