From 4b008e6f0003c1cdf8e326fbb3fbeeab257eb321 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 6 Sep 2013 23:12:20 +0000 Subject: sseq (6sep13) git-svn-id: svn://tug.org/texlive/trunk@31585 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/sseq/sseq.dtx | 68 +++++++++++++++++++--------- 1 file changed, 47 insertions(+), 21 deletions(-) (limited to 'Master/texmf-dist/source/latex/sseq/sseq.dtx') diff --git a/Master/texmf-dist/source/latex/sseq/sseq.dtx b/Master/texmf-dist/source/latex/sseq/sseq.dtx index 64914ae4f5b..eae419f24e0 100644 --- a/Master/texmf-dist/source/latex/sseq/sseq.dtx +++ b/Master/texmf-dist/source/latex/sseq/sseq.dtx @@ -28,6 +28,7 @@ % \changes{v1.06}{August 1, 2005}{sseqxstep=0 will now suppress printing of horizontal label; similarly sseqystep=0 and vertical labels} % \changes{v2.0a}{July 16, 2007}{Completely recoded the graphics for using pgf instead of xyPic. Many new features. Consult the manual.} % \changes{v2.0}{April 9, 2009}{bug fix with arrows leaving the chart} +% \changes{v2.01}{September 6, 2013}{bug fix with bent arrows displaying hooks. Now requires at least tikz/pgf version 2.0} % \ifthenelse{0=1}{ %<*package> \NeedsTeXFormat{LaTeX2e} @@ -35,9 +36,9 @@ \ProvidesPackage{sseq}[2009/04/09 ver 2.0] \RequirePackage{ifthen,calc,pifont} -\RequirePackage{pgf}[2006/01/01] +\RequirePackage{pgf}[2008/02/20] \RequirePackage{xkeyval} -\usepgflibrary{snakes} +\usepgflibrary{decorations.pathmorphing} %^^A \newboolean{usesps} %^^A \setboolean{usesps}{true} % Deprecated for pgf version of sseq @@ -601,6 +602,9 @@ \def\sseq@setcircumference{ \expandafter\ss@size\expandafter=\expandafter\csname\sseq@currentname size\endcsname \advance\ss@size by 1pt + \ifKV@sseqdrop@boxed + \advance\ss@size by 2pt + \fi \ss@setshapesep{\the\ss@size} } @@ -908,7 +912,17 @@ % This command has no arguments and is rather specialized. It refers to a previously dropped object (see |\ssname|), draws a circle around it, and considers that circle a new object. Thus it produces a new circle object that is attached to the original object, and not subject to the algorithm that tries to make objects non-overlapping. % % \ifthenelse{0=1}{ -\def\ssdropextension{ +\define@key{sseqdropext}{circled}[true]{\newif\ifKV@sseqdrop@circled\csname KV@sseqdrop@circled#1\endcsname} +\define@key{sseqdropext}{boxed}[true]{\newif\ifKV@sseqdrop@boxed\csname KV@sseqdrop@boxed#1\endcsname} +\define@key{sseqdropext}{color}{\def\ssplacecolor{#1}} +\define@key{sseqdropext}{name}{\def\sseq@name{#1}} +% +\def\ssdropextension{\@ifnextchar[\sseq@dropextension{\sseq@dropextension[]}} +\def\sseq@dropextension[#1]{ + \edef\sseq@savecolor{\ssplacecolor} + \def\sseq@name{\relax} + \presetkeys{sseqdropext}{circled=false,boxed=false}{} + \setkeys{sseqdrop}{#1} \ssassertsource \expandafter\def\expandafter\tmpname\expandafter{\csname sseqdrop\the\sseqposx,\the\sseqposy\endcsname} \edef\setcnt{\noexpand\count0=\tmpname} @@ -923,7 +937,11 @@ \else \sseqwritecolor{\ssplacecolor} \sseq@setcircumference - \putxyq{\pgfnode{circle}{center}{}} + \ifKV@sseqdrop@boxed + \putxyq{\pgfnode{rectangle}{center}{}} + \else + \putxyq{\pgfnode{circle}{center}{}} + \fi \putxy{{ss(\the\sseqposx,\the\sseqposy)\tmpname}} \putxyq{{\pgfusepath{stroke}}} \fi @@ -935,6 +953,12 @@ \expandafter\edef\csname \sseq@currentname size\endcsname{\number\ss@size sp} % \ifthenelse{\boolean{sseqhasopenconn}}{\sseqconcludeconnection}{} +% + \edef\ssplacecolor{\sseq@savecolor} + \def\temp{\relax} + \ifx\sseq@name\temp \else + \@eval\ssname{{\sseq@name}} + \fi } % \def\ssprepareline#1#2{ @@ -1001,21 +1025,22 @@ }{ \putxyq{\pgfpathmoveto} \putxy{{\noexpand\pgfpointshapeborder{\sseq@previousname}{\noexpand \pgfpointanchor{\sseq@currentname}{center}}}} - } + } + \putxyq{\pgfpathlineto} + \ifthenelse{\boolean{#3}}{ + \putxy{{\noexpand\pgfpoint{\the\sseqx}{\the\sseqy}}} + }{ + \putxy{{\noexpand\pgfpointshapeborder{\sseq@currentname}{\noexpand \pgfpointanchor{\sseq@previousname}{center}}}} + } \def\sseq@temp{#2} \ifx\sseq@temp\empty - \putxyq{\pgfpathlineto} \else - \putxyq{\pgfsnakesegmentamplitude=#2pc} - \putxyq{\multiply\pgfsnakesegmentamplitude by 3 } - \putxyq{\pgfsnakesegmentaspect=.3} - \putxyq{\pgfpathsnaketo{bent}} + \putxyq{\pgfdecorationsegmentamplitude=#2pc} + \putxyq{\multiply\pgfdecorationsegmentamplitude by 3 } + \putxyq{\pgfdecorationsegmentaspect=.3} + \putxyq{\pgfdecoratecurrentpath{bent}} \fi - \ifthenelse{\boolean{#3}}{ - \putxy{{\noexpand\pgfpoint{\the\sseqx}{\the\sseqy}}} - }{ - \putxy{{\noexpand\pgfpointshapeborder{\sseq@currentname}{\noexpand \pgfpointanchor{\sseq@previousname}{center}}}} - } \edef\sseq@connbuffer{\noexpand\sseqwritecolor{\ssconncolor}\noexpand\putxyq{\noexpand\pgfusepath{stroke}\noexpand\pgftransformreset}} + \edef\sseq@connbuffer{\noexpand\sseqwritecolor{\ssconncolor}\noexpand\putxyq{\noexpand\pgfusepath{stroke}\noexpand\pgftransformreset}} \fi \fi } @@ -1210,20 +1235,21 @@ \putxyq{\pgfpathmoveto} \putxy{{\noexpand\pgfpointshapeborder{#1}% {\noexpand\pgfpoint{\noexpand\sseqx}{\noexpand\sseqy}}}} + \putxyq{\pgfpathlineto} + \putxyq{{\pgfpoint{\sseqx}{\sseqy}}} \def\temp{#7} \ifx\temp\empty - \putxyq{\pgfpathlineto} \else \dimen0=#7pc \ifsseq@connreverse \multiply\dimen0 by -1 \fi - \putxy{\noexpand\pgfsnakesegmentamplitude=\number\dimen0 sp} - \putxyq{\advance\pgfsnakesegmentamplitude by \pgfsnakesegmentamplitude} - \putxyq{\pgfsnakesegmentaspect=.3} - \putxyq{\pgfpathsnaketo{bent}} + \putxy{\noexpand\pgfdecorationsegmentamplitude=\number\dimen0 sp} + \putxyq{\advance\pgfdecorationsegmentamplitude by \pgfdecorationsegmentamplitude} + \putxyq{\pgfdecorationsegmentaspect=.3} + \putxyq{\pgfdecoratecurrentpath{bent}} \fi - \putxyq{{\pgfpoint{\sseqx}{\sseqy}}} + \edef\sseq@connbuffer{\noexpand\sseqwritecolor{\ssconncolor}% \noexpand\putxyq{\noexpand\pgfusepath{stroke}\noexpand\end{pgfscope}}} } -- cgit v1.2.3