diff options
author | Karl Berry <karl@freefriends.org> | 2011-10-23 22:25:16 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-10-23 22:25:16 +0000 |
commit | 39b466e01679b57bc7fe0fc2dcb0f8bc16249eff (patch) | |
tree | 34a5e6bd8f7529536926c23c76353d6d56953ccd /Master/texmf-dist/tex/latex/tikz-cd | |
parent | fb89be74d746b6e35b71f8b952d60171a94703d9 (diff) |
tikz-cd (23oct11)
git-svn-id: svn://tug.org/texlive/trunk@24370 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tikz-cd')
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty | 490 |
1 files changed, 349 insertions, 141 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty index e0d8d1546de..336eaa246a0 100644 --- a/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty +++ b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty @@ -5,159 +5,323 @@ % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. % -\ProvidesPackage{tikz-cd}[2011/09/12 v0.1 Macros for creation of commutative diagrams with tikz.] +\ProvidesPackage{tikz-cd}[2011/10/21 v0.2 Commutative diagrams with tikz.] \RequirePackage{tikz} -\usepgfmodule{parser} \usetikzlibrary{matrix} \usepgflibrary{arrows} +\usetikzlibrary{decorations.pathmorphing} -\pgfkeys{% - /commutative diagrams/picture style/.style={ - baseline=(current bounding box.base)}, - /commutative diagrams/matrix style/.style={ - matrix of math nodes, - row sep=6ex, - column sep=6ex, - text height=1.5ex, - text depth=0.25ex}, - /commutative diagrams/path style/.style={ - font=\scriptsize, - auto, - description/.style={ - anchor=center,fill=\tikzcd@bgcolor,inner sep=2pt}}, - /commutative diagrams/current arrows/.style={ - rightarrow/.style={cm cap-cm to}, - leftarrow/.style={cm to-cm cap}, - mapsto/.style={cm |-cm to}, - hookrightarrow/.style={cm right hook-cm to}, - hookleftarrow/.style={cm to-cm left hook}, - rightharpoonup/.style={cm cap-cm left to}, - rightharpoondown/.style={cm cap-cm right to}, - leftharpoonup/.style={cm right to-cm cap}, - leftharpoondown/.style={cm left to-cm cap}, - line width=0.09285ex, - rightarrow}} - -\def\tikzcd@bgcolor{white} - -\makeatletter +\newtoks\tikzcd@temptoksa +\newtoks\tikzcd@temptoksb +\newtoks\tikzcd@temptoksc + +\newif\iftikzcd@mathmode \newcount\tikzcd@currcol \newcount\tikzcd@currrow -\newcount\tikzcd@destrow -\newcount\tikzcd@destcol +\newcount\tikzcd@targetrow +\newcount\tikzcd@targetcol + +\pgfqkeys{/tikz/commutative diagrams}{ + /tikz/commutative diagrams/.search also={/tikz}, + arrows/.style={ + /tikz/commutative diagrams/every arrow/.append style={#1}}, + labels/.style={ + /tikz/commutative diagrams/every label/.append style={#1}}, + diagrams/.style={ + /tikz/commutative diagrams/every diagram/.append style={#1}}, + description/.style={ + /tikz/anchor=center, + text height=, + text depth=, + /tikz/fill=\pgfkeysvalueof{/tikz/commutative diagrams/background color}, + /tikz/inner sep=\pgfkeysvalueof{/tikz/commutative diagrams/description clearance}}, + crossing over/.style={ + /tikz/preaction={ + /tikz/draw=\pgfkeysvalueof{/tikz/commutative diagrams/background color}, + /tikz/arrows=-, + /tikz/line width=\pgfkeysvalueof{/tikz/commutative diagrams/crossing over clearance}}}, + row sep/.code={\tikzcd@sep{row}{#1}}, + column sep/.code={\tikzcd@sep{column}{#1}}, + math mode/.is if=tikzcd@mathmode, + matrix of math nodes maybe/.style={% + /tikz/matrix of nodes, + /tikz/nodes={ + execute at begin node=\iftikzcd@mathmode$\fi, %$ + execute at end node=\iftikzcd@mathmode$\fi}}, %$ + path operation/.store in=\tikzcd@pathoperator, + start anchor/.code={% + \ifx#1\pgfkeysnovalue\let\tikzcd@sourceanchor\empty% + \else\def\tikzcd@sourceanchor{.#1}\fi}, + end anchor/.code={% + \ifx#1\pgfkeysnovalue\let\tikzcd@targetanchor\empty% + \else\def\tikzcd@targetanchor{.#1}\fi}, + arrow style/.is choice} + +% The Computer Modern arrow style +\pgfkeys{/tikz/commutative diagrams/arrow style/computer modern/.style={ + /tikz/commutative diagrams/.cd, + default arrow/.style={ + /tikz/line join=round, + /tikz/arrows=cm cap-cm to, + /tikz/line width=0.0929ex}, + rightarrow/.style={/tikz/arrows=cm cap-cm to}, + Rightarrow/.style={ + /tikz/arrows=cm implies cap-cm implies, + /tikz/commutative diagrams/double line}, + leftarrow/.style={/tikz/arrows=cm to-cm cap}, + Leftarrow/.style={ + /tikz/arrows=cm implies-cm implies cap, + /tikz/commutative diagrams/double line}, + leftrightarrow/.style={/tikz/arrows=cm to-cm to}, + Leftrightarrow/.style={ + /tikz/arrows=cm implies-cm implies, + /tikz/commutative diagrams/double line}, + mapsto/.style={/tikz/arrows=cm |-cm to}, + hookrightarrow/.style={/tikz/arrows=cm right hook-cm to}, + hookleftarrow/.style={/tikz/arrows=cm to-cm left hook}, + rightharpoonup/.style={/tikz/arrows=cm cap-cm left to}, + rightharpoondown/.style={/tikz/arrows=cm cap-cm right to}, + leftharpoonup/.style={/tikz/arrows=cm right to-cm cap}, + leftharpoondown/.style={/tikz/arrows=cm left to-cm cap}, + dashrightarrow/.style={/tikz/commutative diagrams/.cd,rightarrow,dashed}, + dashleftarrow/.style={/tikz/commutative diagrams/.cd,leftarrow,dashed}, + rightarrowtail/.style={/tikz/arrows=cm to reversed-cm to}, + leftarrowtail/.style={/tikz/arrows=cm to-cm to reversed}, + twoheadrightarrow/.style={/tikz/arrows=cm cap-cm double to}, + twoheadleftarrow/.style={/tikz/arrows=cm double to-cm cap}, + rightsquigarrow/.style={/tikz/commutative diagrams/.cd,rightarrow,squiggly}, + leftsquigarrow/.style={/tikz/commutative diagrams/.cd,leftarrow,squiggly}, + leftrightsquigarrow/.style={ + /tikz/commutative diagrams/.cd,leftrightarrow,squiggly}, + equals/.style={ + /tikz/arrows=cm implies cap-cm implies cap, + /tikz/commutative diagrams/double line}, + maps to/.code={\pgfsetarrowsstart{cm |}}, + hook/.code={\pgfsetarrowsstart{cm right hook}}, + two heads/.code={\pgfsetarrowsend{cm double to}}, + tail/.code={\pgfsetarrowsstart{cm to reversed}}, + squiggly/.style={ + %http://tex.stackexchange.com/questions/12678/ + decorate, + decoration={ + zigzag, + segment length=4, + amplitude=.9, + post=lineto, post length=2pt, + pre=lineto, pre length=2pt}}, + double line/.style={ + /tikz/double=\pgfkeysvalueof{/tikz/commutative diagrams/background color}, + /tikz/double distance=3.643\pgflinewidth}, + dashed/.style={/tikz/densely dashed}}} + +% The tikz arrow style +\pgfkeys{/tikz/commutative diagrams/arrow style/tikz/.style={ + /tikz/commutative diagrams/.cd, + default arrow/.style={/tikz/arrows=->}, + rightarrow/.style={/tikz/arrows=->}, + Rightarrow/.style={ + /tikz/arrows=-implies, + /tikz/commutative diagrams/double line}, + leftarrow/.style={/tikz/arrows=<-}, + Leftarrow/.style={ + /tikz/arrows=implies-, + /tikz/commutative diagrams/double line}, + leftrightarrow/.style={/tikz/arrows=<->}, + Leftrightarrow/.style={ + /tikz/arrows=implies-implies, + /tikz/commutative diagrams/double line}, + mapsto/.style={/tikz/arrows=|->}, + hookrightarrow/.style={/tikz/arrows=right hook->}, + hookleftarrow/.style={/tikz/arrows=<-left hook}, + rightharpoonup/.style={/tikz/arrows=-left to}, + rightharpoondown/.style={/tikz/arrows=-right to}, + leftharpoonup/.style={/tikz/arrows=right to-}, + leftharpoondown/.style={/tikz/arrows=left to-}, + dashrightarrow/.style={/tikz/commutative diagrams/.cd,rightarrow,dashed}, + dashleftarrow/.style={/tikz/commutative diagrams/.cd,leftarrow,dashed}, + rightarrowtail/.style={/tikz/arrows=>->}, + leftarrowtail/.style={/tikz/arrows=<-<}, + twoheadrightarrow/.style={/tikz/arrows=->>}, + twoheadleftarrow/.style={/tikz/arrows=<<-}, + rightsquigarrow/.style={ + /tikz/commutative diagrams/.cd, + rightarrow, + squiggly}, + leftsquigarrow/.style={ + /tikz/commutative diagrams/.cd, + leftarrow, + squiggly}, + leftrightsquigarrow/.style={ + /tikz/commutative diagrams/.cd, + leftrightarrow, + squiggly}, + equals/.style={ + /tikz/arrows=-, + /tikz/commutative diagrams/double line}, + maps to/.code={\pgfsetarrowsstart{|}}, + hook/.code={\pgfsetarrowsstart{right hook}}, + two heads/.code={ + \pgfsetarrowsend{\csname tikz@special@arrow@end>>\endcsname}}, + tail/.code={ + \pgfsetarrowsstart{\csname tikz@special@arrow@start>\endcsname}}, + squiggly/.style={ + %http://tex.stackexchange.com/questions/12678/ + decorate, + decoration={ + zigzag, + segment length=4, + amplitude=.9, + post=lineto, post length=2pt, + pre=lineto, pre length=2pt}}, + double line/.style={ + /tikz/double=\pgfkeysvalueof{/tikz/commutative diagrams/background color}}}} + +% Default settings +\pgfqkeys{/tikz/commutative diagrams}{ + every arrow/.style={ + /tikz/commutative diagrams/.cd, + /tikz/draw, + /tikz/commutative diagrams/default arrow}, + every label/.style={ + /tikz/commutative diagrams/.cd, + /tikz/auto, + /tikz/font=\scriptsize, + /tikz/inner sep=0.5ex, + /tikz/text height=, + /tikz/text depth=}, + every diagram/.style={ + /tikz/commutative diagrams/.cd, + row sep=normal, + column sep=normal, + /tikz/text height=1.5ex, + /tikz/text depth=0.25ex, + /tikz/baseline=0pt}, + math mode=true, + row sep/huge/.initial=10ex, + row sep/large/.initial=7.5ex, + row sep/normal/.initial=5ex, + row sep/scriptsize/.initial=3.75ex, + row sep/small/.initial=2.5ex, + row sep/tiny/.initial=1.25ex, + column sep/huge/.initial=12ex, + column sep/large/.initial=9ex, + column sep/normal/.initial=6ex, + column sep/scriptsize/.initial=4.5ex, + column sep/small/.initial=3ex, + column sep/tiny/.initial=1.5ex, + arrow style=computer modern, + path operation=to, + start anchor, + end anchor, + description clearance/.initial=1.5pt, + crossing over clearance/.initial=6pt, + background color/.initial=white} -%The arrow commands and its parser +% Branch depending on whether the next character is [, { or none of those. +\def\tikzcd@threefold#1#2#3{% + \def\tikzcd@tempa{#1}% + \def\tikzcd@tempb{#2}% + \def\tikzcd@tempc{#3}% + \futurelet\next\tikzcd@@threefold} +\def\tikzcd@@threefold{% + \ifx[\next\let\tikzcd@tempd\tikzcd@tempa% + \else\ifx\bgroup\next\let\tikzcd@tempd\tikzcd@tempb% + \else\let\tikzcd@tempd\tikzcd@tempc\fi\fi% + \tikzcd@tempd} + +%The arrow commands \def\tikzcd@arrow{% - \let\tikzcd@ar@edgeopt\empty% - \let\tikzcd@ar@node\empty% - \let\tikzcd@ar@nodeopt\empty% - \tikzcd@destcol\tikzcd@currcol% - \tikzcd@destrow\tikzcd@currrow% - \global\edef\tikzcd@patharg{\tikzcd@patharg % - (m-\the\tikzcd@currrow-\the\tikzcd@currcol) }% - \futurelet\next\tikzcd@arrowb} -\def\tikzcd@arrowb{% - \ifx[\next\expandafter\tikzcd@arrowi\else% - \expandafter\tikzcd@arrowii\fi} -\def\tikzcd@arrowi[#1]{% - \def\tikzcd@ar@edgeopt{[#1]}% - \tikzcd@arrowii} -\def\tikzcd@arrowii#1{% - \pgfparserparse{tikzmd@parser}#1*% - \futurelet\next\tikzcd@arrowiii} -\def\tikzcd@arrowiii{% - \ifx[\next\expandafter\tikzcd@arrowiv% - \else\expandafter\tikzcd@arrowv\fi} -\def\tikzcd@arrowiv[#1]{% - \def\tikzcd@ar@nodeopt{[#1]}% - \futurelet\next\tikzcd@arrowv} -\def\tikzcd@arrowv{% - \ifx\next\bgroup\expandafter\tikzcd@arrowvi% - \else\tikzcd@arrowvii\fi} -\def\tikzcd@arrowvi#1{% - \def\tikzcd@ar@node{ node\tikzcd@ar@nodeopt{$#1$}}% - \tikzcd@arrowvii} -\def\tikzcd@arrowvii{ - \global\edef\tikzcd@patharg{\tikzcd@patharg % - edge\tikzcd@ar@edgeopt \tikzcd@ar@node % - (m-\the\tikzcd@destrow-\the\tikzcd@destcol)}% -} + \tikzcd@targetrow\tikzcd@currrow% + \tikzcd@targetcol\tikzcd@currcol% + \tikzcd@threefold{\tikzcd@ar@getdir}{\tikzcd@ar@getdir[]}{}} -\def\tikzcd@lar{% - \tikzcd@destcol\tikzcd@currcol% - \tikzcd@destrow\tikzcd@currrow% - \advance\tikzcd@destcol by1\relax% - \futurelet\next\tikzcd@xar} -\def\tikzcd@rar{% - \tikzcd@destcol\tikzcd@currcol% - \tikzcd@destrow\tikzcd@currrow% - \advance\tikzcd@destcol by-1\relax% - \futurelet\next\tikzcd@xar} -\def\tikzcd@dar{% - \tikzcd@destcol\tikzcd@currcol% - \tikzcd@destrow\tikzcd@currrow% - \advance\tikzcd@destrow by1\relax% - \futurelet\next\tikzcd@xar} -\def\tikzcd@uar{% - \tikzcd@destcol\tikzcd@currcol% - \tikzcd@destrow\tikzcd@currrow% - \advance\tikzcd@destrow by-1\relax% - \futurelet\next\tikzcd@xar} -\def\tikzcd@xar{% - \let\tikzcd@ar@edgeopt\empty% - \let\tikzcd@ar@node\empty% - \let\tikzcd@ar@nodeopt\empty% - \global\edef\tikzcd@patharg{\tikzcd@patharg % - (m-\the\tikzcd@currrow-\the\tikzcd@currcol) }% - \ifx[\next\expandafter\tikzcd@xari% - \else\expandafter\tikzcd@xarii\fi} -\def\tikzcd@xari[#1]{% - \def\tikzcd@ar@edgeopt{[#1]}% - \futurelet\next\tikzcd@xarii} -\def\tikzcd@xarii{% - \ifx\next\bgroup\expandafter\tikzcd@arrowvi% - \else\expandafter\tikzcd@xariii\fi} -\def\tikzcd@xariii{% - \ifx[\next\expandafter\tikzcd@arrowiv% - \else\tikzcd@arrowvii\fi} - -\pgfparserdef{tikzmd@parser}{initial}{the letter l} -{\advance\tikzcd@destcol by1\relax} -\pgfparserdef{tikzmd@parser}{initial}{the letter r} -{\advance\tikzcd@destcol by-1\relax} -\pgfparserdef{tikzmd@parser}{initial}{the letter d} -{\advance\tikzcd@destrow by1\relax} -\pgfparserdef{tikzmd@parser}{initial}{the letter u} -{\advance\tikzcd@destrow by-1\relax} -\pgfparserdef{tikzmd@parser}{initial}{the character *} -{\pgfparserswitch{final}} - -%Diagram environment -\def\tikzcd{% - \tikzpicture[/commutative diagrams/picture style]% - \let\tikzcd@patharg\empty% - \let\arrow\tikzcd@arrow% - \let\ar\tikzcd@arrow% - \let\lar\tikzcd@lar% - \let\rar\tikzcd@rar% - \let\dar\tikzcd@dar% - \let\uar\tikzcd@uar% - \matrix (m) [/commutative diagrams/matrix style,% - execute at begin cell=% - \tikzcd@currcol\pgfmatrixcurrentcolumn% - \tikzcd@currrow\pgfmatrixcurrentrow]\bgroup% -} +\def\tikzcd@ar@getdir[#1]#2{% + \tikzcd@temptoksa{\path[/tikz/commutative diagrams/every arrow,#1]}% + \tikzcd@parse#2\relax% + \tikzcd@temptoksb{}% this will store the labels + \tikzcd@threefold{\tikzcd@ar@getlabel}{\tikzcd@ar@getlabel[]}{\tikzcd@ar@final}} + +\def\tikzcd@ar@getlabel[#1]#2{% + \tikzcd@temptoksb\expandafter{\the\tikzcd@temptoksb % + node[/tikz/commutative diagrams/every label,#1]{\tikzcd@mathmaybe{#2}}}% + \tikzcd@threefold{\tikzcd@ar@getlabel}{\tikzcd@ar@getlabel[]}{\tikzcd@ar@final}} + +\def\tikzcd@ar@final{% + \tikzcd@temptoksc\expandafter{\tikzcd@savedpaths}% + \global\edef\tikzcd@savedpaths{% + \the\tikzcd@temptoksc% the previously saved stuff + \the\tikzcd@temptoksa% the current arrow + (\tikzmatrixname-\the\tikzcd@currrow-\the\tikzcd@currcol% + \noexpand\tikzcd@sourceanchor)% + \noexpand\tikzcd@pathoperator% + \the\tikzcd@temptoksb% the current labels + (\tikzmatrixname-\the\tikzcd@targetrow-\the\tikzcd@targetcol% + \noexpand\tikzcd@targetanchor);}} + +\def\tikzcd@xar#1#2{% + \tikzcd@targetrow\tikzcd@currrow% + \advance\tikzcd@targetrow by#1% + \tikzcd@targetcol\tikzcd@currcol% + \advance\tikzcd@targetcol by#2% + \tikzcd@threefold{\tikzcd@@xar}{\tikzcd@@xar[]}{\tikzcd@@xar[]}} + +\def\tikzcd@@xar[#1]{% + \tikzcd@temptoksa{\path[/tikz/commutative diagrams/every arrow,#1]}% + \tikzcd@temptoksb{}% this will store the labels + \tikzcd@threefold{\tikzcd@ar@getlabel}{\tikzcd@ar@getlabel[]}{\tikzcd@ar@final}} + +% Parser for arrow direction argument +\def\tikzcd@parse#1{% + \def\tikzcd@tempa{\tikzcd@parse}% + \ifx#1r\advance\tikzcd@targetcol by1\else% + \ifx#1d\advance\tikzcd@targetrow by1\else% + \ifx#1l\advance\tikzcd@targetcol by-1\else% + \ifx#1u\advance\tikzcd@targetrow by-1\else% + \ifx#1\relax\let\tikzcd@tempa\empty% + \else\errmessage{Arrow direction argument must contain % + only the characters l, r, u or d}\fi\fi\fi\fi\fi% + \tikzcd@tempa} + +%The tikzcd environment +\def\tikzcd{\tikzcd@threefold{\tikzcd@}{\tikzcd@[]}{\tikzcd@[]}} + +\def\tikzcd@[#1]{% + \tikzpicture[/tikz/commutative diagrams/every diagram,#1]% + \tikzcd@initialize% + \matrix[/tikz/commutative diagrams/matrix of math nodes maybe,% + /tikz/execute at begin cell=% + \tikzcd@currcol\pgfmatrixcurrentcolumn% + \tikzcd@currrow\pgfmatrixcurrentrow]% + \bgroup} \def\endtikzcd{% - \\\egroup;% - \path[/commutative diagrams/path style,% - /commutative diagrams/current arrows]% - \tikzcd@patharg ;% - %\typeout{\tikzcd@patharg} - \endtikzpicture% -} + \pgfmatrixendrow\egroup;% + \tikzcd@finalize% + \endtikzpicture} + +\def\tikzcd@initialize{% + \def\arrow{\tikzcd@arrow}% + \def\ar{\tikzcd@arrow}% + \def\rar{\tikzcd@xar{0}{1}}% + \def\lar{\tikzcd@xar{0}{-1}}% + \def\dar{\tikzcd@xar{1}{0}}% + \def\uar{\tikzcd@xar{-1}{0}}% + \def\urar{\tikzcd@xar{-1}{1}}% + \def\ular{\tikzcd@xar{-1}{-1}}% + \def\drar{\tikzcd@xar{1}{1}}% + \def\dlar{\tikzcd@xar{1}{-1}}% + \global\let\tikzcd@savedpaths\empty} + +\def\tikzcd@finalize{\tikzcd@savedpaths} + +\def\tikzcd@mathmaybe#1{\iftikzcd@mathmode$#1$\else#1\fi} + +\def\tikzcd@sep#1#2{ + \pgfkeysifdefined{/tikz/commutative diagrams/#1 sep/#2}% + {\tikzset{#1 sep=\pgfkeysvalueof{/tikz/commutative diagrams/#1 sep/#2}}}% + {\tikzset{#1 sep=#2}}} %Computer modern arrow tips \pgfarrowsdeclare{cm to}{cm to} @@ -182,6 +346,32 @@ \pgfusepathqstroke } +\pgfarrowsdeclare{cm implies}{cm implies} +{ + \pgfmathsetlength{\pgfutil@tempdima}{-0.729\pgflinewidth+.25*\pgfinnerlinewidth} + \pgfarrowsleftextend{\pgfutil@tempdima} + \pgfmathsetlength{\pgfutil@tempdima}{1.094\pgflinewidth-.25*\pgfinnerlinewidth} + \pgfarrowsrightextend{\pgfutil@tempdima} +} +{ + \pgfmathsetlength{\pgfutil@tempdimb}{.5\pgflinewidth-.5*\pgfinnerlinewidth} + \pgfutil@tempdima\pgflinewidth + \pgfsetlinewidth{\pgfutil@tempdimb} + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfpathmoveto{\pgfqpoint{-0.542\pgfutil@tempdima}{1.142\pgfutil@tempdima}} + \pgfpathcurveto + {\pgfqpoint{-0.247\pgfutil@tempdima}{0.476\pgfutil@tempdima}} + {\pgfqpoint{0.29\pgfutil@tempdima}{0.114\pgfutil@tempdima}} + {\pgfqpoint{0.844\pgfutil@tempdima}{0pt}} + \pgfpathcurveto + {\pgfqpoint{0.29\pgfutil@tempdima}{-0.114\pgfutil@tempdima}} + {\pgfqpoint{-0.247\pgfutil@tempdima}{-0.476\pgfutil@tempdima}} + {\pgfqpoint{-0.542\pgfutil@tempdima}{-1.142\pgfutil@tempdima}} + \pgfusepathqstroke +} + \pgfarrowsdeclare{cm bold to}{cm bold to} { \pgfarrowsleftextend{-4.055\pgflinewidth} @@ -318,6 +508,25 @@ \pgfusepathqstroke } +\pgfarrowsdeclare{cm implies cap}{cm implies cap} +{ + \pgfmathsetlength{\pgfutil@tempdima}{.5\pgflinewidth-.5*\pgfinnerlinewidth} + \pgfarrowsleftextend{+0pt} + \pgfarrowsrightextend{+\pgfutil@tempdima} +} +{ + \pgfmathsetlength{\pgfutil@tempdima}{.5\pgflinewidth-.5*\pgfinnerlinewidth} + \pgfmathsetlength{\pgfutil@tempdimb}{.5\pgflinewidth-.5*\pgfutil@tempdima} + \pgfsetlinewidth{\pgfutil@tempdima} + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfpathmoveto{\pgfqpoint{0pt}{+1\pgfutil@tempdimb}} + \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{+1\pgfutil@tempdimb}} + \pgfpathmoveto{\pgfqpoint{0pt}{-1\pgfutil@tempdimb}} + \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{-1\pgfutil@tempdimb}} + \pgfusepathqstroke +} + \pgfarrowsdeclarereversed{cm to reversed}{cm to reversed}{cm to}{cm to} \pgfarrowsdeclarereversed{cm left to reversed}{cm left to reversed}{cm left to}{cm left to} \pgfarrowsdeclarereversed{cm right to reversed}{cm right to reversed}{cm right to}{cm right to} @@ -325,5 +534,4 @@ \pgfarrowsdeclaredouble{cm double to}{cm double to}{cm to}{cm to} \pgfarrowsdeclaredouble{cm double to reversed}{cm double to reversed}{cm to reversed}{cm to reversed} -\makeatother \endinput
\ No newline at end of file |