diff options
author | Karl Berry <karl@freefriends.org> | 2014-03-09 00:12:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-03-09 00:12:30 +0000 |
commit | 43a57ed22fe612f300d51efd5fed0ff2d8a7df48 (patch) | |
tree | 8a5c1e5e9896f9fd7a1186ea84957480cfdf74a6 /Master/texmf-dist/tex/latex/tikz-cd | |
parent | c3d483970e1b19c27183b44654a77ef45f9a1dc6 (diff) |
tikz-cd (8mar14)
git-svn-id: svn://tug.org/texlive/trunk@33126 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 | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex | 683 |
2 files changed, 2 insertions, 685 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 cabf3aab1e4..191924cbf19 100644 --- a/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty +++ b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty @@ -1,4 +1,4 @@ -% Copyright 2011, 2012, 2014 by FlorĂȘncio Neves +% Copyright 2011, 2012, 2014 by FlorĂȘncio Neves <florencioneves@gmail.com> % % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ % You should have received a copy of the GNU General Public License % along with this program. If not, see <http://www.gnu.org/licenses/>. -\ProvidesPackage{tikz-cd}[2014/02/28 v0.9 Commutative diagrams with tikz] +\ProvidesPackage{tikz-cd}[2014/03/08 v0.9b Commutative diagrams with tikz] \RequirePackage{tikz}[2013/12/13] % pgf version 3.0.0 required \usetikzlibrary{cd} diff --git a/Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex b/Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex deleted file mode 100644 index f14c162c5a9..00000000000 --- a/Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex +++ /dev/null @@ -1,683 +0,0 @@ -% Copyright 2011, 2012, 2014 by FlorĂȘncio Neves -% -% This program is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. - -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. - -% You should have received a copy of the GNU General Public License -% along with this program. If not, see <http://www.gnu.org/licenses/>. - -\ProvidesFile{tikzlibrarycd.code.tex}[2014/02/28 v0.9 Commutative diagrams with tikz] - -\usetikzlibrary{matrix,quotes} - -\newif\iftikzcd@mathmode - -\def\tikzcdset{\pgfqkeys{/tikz/commutative diagrams}} - -\def\tikzcd@x@addto@macro#1#2{% - \pgfutil@toks@\expandafter{#1}% - \xdef#1{\the\pgfutil@toks@#2}} - -\tikzcdset{ - arrows/.code={\tikzcdset{every arrow/.append style={#1}}}, - labels/.code={\tikzcdset{every label/.append style={#1}}}, - cells/.code={\tikzcdset{every cell/.append style={#1}}}, - diagrams/.code={\tikzcdset{every diagram/.append style={#1}}}, - to/.code={% - \pgfutil@ifundefined{pgf@sh@ns@\tikzcdmatrixname-#1} - {\def\tikzcd@ar@target{#1}} - {\def\tikzcd@ar@target{\tikzcdmatrixname-#1}}}, - from/.code={% - \pgfutil@ifundefined{pgf@sh@ns@\tikzcdmatrixname-#1} - {\def\tikzcd@ar@start{#1}} - {\def\tikzcd@ar@start{\tikzcdmatrixname-#1}}}, - description/.style={ - /tikz/anchor=center, - /tikz/fill=\pgfkeysvalueof{/tikz/commutative diagrams/background color}}, - phantom/.style={ - /tikz/draw=none, - /tikz/commutative diagrams/labels={ - /tikz/font=, - /tikz/anchor=center}}, - 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, - arrow style/.is choice} - -\def\tikzcd@sep#1#2{ - \pgfkeysifdefined{/tikz/commutative diagrams/#1 sep/#2}% - {\pgfkeysgetvalue{/tikz/commutative diagrams/#1 sep/#2}\tikzcd@temp% - \pgfkeysalso{/tikz/#1 sep/.expand once=\tikzcd@temp}}% - {\pgfkeysalso{/tikz/#1 sep={#2}}}} - -% The unknown key handler and direction argument parser -\tikzcdset{ - .unknown/.code={% - \ifpgfkeysaddeddefaultpath% - \c@pgf@counta=0% - \c@pgf@countb=0% - \let\tikzcd@temp=\tikzcd@parse% - \expandafter\tikzcd@temp\pgfkeyscurrentname\relax% - \ifx\tikzcd@temp\pgfutil@empty% true if it was a direction parameter - \advance\c@pgf@counta by\tikzcd@currentrow% - \advance\c@pgf@countb by\tikzcd@currentcolumn% - \edef\tikzcd@ar@target{\tikzcdmatrixname-\the\c@pgf@counta-\the\c@pgf@countb}% - \else% - \pgfqkeys{/tikz}{\pgfkeyscurrentname={#1}}% - \fi% - \else% - \def\pgfutilnext{\pgfkeysvalueof{/handlers/.unknown/.@cmd}#1\pgfeov}\pgfutilnext% - \fi}} - -\def\tikzcd@parse#1{% parser for arrow direction argument - \ifx#1r\advance\c@pgf@countb by1\else% - \ifx#1d\advance\c@pgf@counta by1\else% - \ifx#1l\advance\c@pgf@countb by-1\else% - \ifx#1u\advance\c@pgf@counta by-1\else% - \ifx#1\relax\let\tikzcd@temp\pgfutil@empty% - \else\let\tikzcd@temp\pgfutil@gobble@until@relax\fi\fi\fi\fi\fi% - \tikzcd@temp} - -% The `tikzcd' environment -\def\tikzcd{% - \pgfutil@ifnextchar&% - {\expandafter\tikzcd@@\expandafter\pgfmatrixnextcell\pgfutil@gobble}% - {\tikzcd@@}} - -\def\tikzcd@@{\pgfutil@ifnextchar[{\tikzcd@}{\tikzcd@[]}} - -\def\tikzcd@[#1]{% - \tikzpicture[/tikz/commutative diagrams/.cd,every diagram,#1]% - \def\arrow{\tikzcd@arrow}% - \def\ar{\tikzcd@arrow}% - \def\rar{\tikzcd@xar{r}}% - \def\lar{\tikzcd@xar{l}}% - \def\dar{\tikzcd@xar{d}}% - \def\uar{\tikzcd@xar{u}}% - \def\urar{\tikzcd@xar{ur}}% - \def\ular{\tikzcd@xar{ul}}% - \def\drar{\tikzcd@xar{dr}}% - \def\dlar{\tikzcd@xar{dl}}% - \global\let\tikzcd@savedpaths\pgfutil@empty% - \matrix[/tikz/matrix of \iftikzcd@mathmode math \fi nodes, - /tikz/every cell/.append code={\tikzcdset{every cell}}, - /tikz/commutative diagrams/.cd,every matrix]% - \bgroup} - -\def\endtikzcd{% - \pgfmatrixendrow\egroup% - \pgfextra{\global\let\tikzcdmatrixname\tikzlastnode};% - \tikzcdset{\the\pgfmatrixcurrentrow-row diagram/.try}% - \begingroup% - \tikzcd@enablequotes% - \tikzcd@patcherrmsg% - \tikzcd@savedpaths% - \endgroup% - \endtikzpicture} - -% The arrow commands -\def\tikzcd@arrow{% - \relax% - \tikzcd@x@addto@macro\tikzcd@savedpaths{% - \noexpand\def\noexpand\tikzcd@currentcolumn{\the\pgfmatrixcurrentcolumn}% - \noexpand\def\noexpand\tikzcd@currentrow{\the\pgfmatrixcurrentrow}% - \noexpand\def\noexpand\tikzcd@lineno{\the\inputlineno}}% - \pgfutil@ifnextchar[{\tikzcd@@arrow}{\tikzcd@ar@old[]}} - -\def\tikzcd@@arrow[#1]{\pgfutil@ifnextchar\bgroup{\tikzcd@ar@old[#1]}{\tikzcd@ar@new[#1]}} - -\def\tikzcd@ar@new[#1]{% new syntax - \pgfutil@g@addto@macro\tikzcd@savedpaths{% - \path[/tikz/commutative diagrams/.cd,every arrow,#1]% - (\tikzcd@ar@start\tikzcd@startanchor) to (\tikzcd@ar@target\tikzcd@endanchor); }} - -\def\tikzcd@ar@old[#1]#2{% old syntax - \pgfutil@g@addto@macro\tikzcd@savedpaths{% - \path[/tikz/commutative diagrams/.cd,every arrow,{#2},#1] (\tikzcd@ar@start\tikzcd@startanchor) to }% - \pgfutil@ifnextchar[{\tikzcd@ar@getlabel}{\pgfutil@ifnextchar\bgroup{\tikzcd@ar@getlabel[]}{\tikzcd@ar@final}}} - -\def\tikzcd@ar@getlabel[#1]#2{% - \pgfutil@g@addto@macro\tikzcd@savedpaths{% - node[/tikz/commutative diagrams/.cd,every label,#1]{\tikzcd@mathmaybe{#2}}}% - \pgfutil@ifnextchar[{\tikzcd@ar@getlabel}{\pgfutil@ifnextchar\bgroup{\tikzcd@ar@getlabel[]}{\tikzcd@ar@final}}} - -\def\tikzcd@ar@final{% - \pgfutil@g@addto@macro\tikzcd@savedpaths{(\tikzcd@ar@target\tikzcd@endanchor); }} - -\def\tikzcd@xar#1{\relax\pgfutil@ifnextchar[{\tikzcd@@xar{#1}}{\tikzcd@arrow[]{#1}}} - -\def\tikzcd@@xar#1[#2]{\tikzcd@arrow[#2]{#1}} - -\def\tikzcd@mathmaybe#1{\iftikzcd@mathmode$\relax #1$\else#1\fi} - -\def\tikzcd@ar@target{\tikzcdmatrixname-\tikzcd@currentrow-\tikzcd@currentcolumn} -\def\tikzcd@ar@start{\tikzcdmatrixname-\tikzcd@currentrow-\tikzcd@currentcolumn} - -% `quotes' library support -\def\tikzcd@passquotes#1{\tikzset{every to/.append style={#1}}} - -\def\tikzcd@enablequotes{% - \pgfkeys{ - /handlers/first char syntax/the character "/.initial=\tikzcd@passquotes, - /tikz/edge quotes mean={% - edge node={node [/tikz/commutative diagrams/.cd,every label,##2]{\tikzcd@mathmaybe{##1}}}}}} - -% Improve error messages -\def\tikzcd@patcherrmsg{% - \let\tikzcd@errmessage\errmessage% - \def\errmessage##1{\tikzcd@errmessage{##1^^J...^^Jl.\tikzcd@lineno\space% - I think the culprit is a tikzcd arrow in cell \tikzcd@currentrow-\tikzcd@currentcolumn}}} - -% `start anchor', `end anchor', and `shift' keys -\def\tikzcd@setanchor#1[#2]#3\relax{% - \ifx\relax#2\relax\else% - \tikzcdset{@#1transform/.append style={#2},@shiftabletopath}% - \fi% - \ifx\relax#3\relax% - \pgfutil@namelet{tikzcd@#1anchor}{pgfutil@empty}% - \else% - \pgfutil@namedef{tikzcd@#1anchor}{.#3}% - \fi} - -\tikzcdset{ - @shiftabletopath/.style={ - /tikz/execute at begin to={% - \begingroup% - \def\tikz@tonodes{coordinate[pos=0,commutative diagrams/@starttransform/.try](tikzcd@nodea) % - coordinate[pos=1,commutative diagrams/@endtransform/.try](tikzcd@nodeb)}% - \path (\tikztostart) \tikz@to@path;% - \endgroup% - \def\tikztostart{tikzcd@nodea}% - \def\tikztotarget{tikzcd@nodeb}% - \tikzset{insert path={(tikzcd@nodea)}}}, - /tikz/commutative diagrams/@shiftabletopath/.code={}}, - start anchor/.code={% - \pgfutil@ifnextchar[{\tikzcd@setanchor{start}}{\tikzcd@setanchor{start}[]}#1\relax},%] - end anchor/.code={% - \pgfutil@ifnextchar[{\tikzcd@setanchor{end}}{\tikzcd@setanchor{end}[]}#1\relax},%] - start anchor=, - end anchor=, - shift left/.style={ - /tikz/commutative diagrams/@shiftabletopath, - /tikz/execute at begin to={% - \pgfpointnormalised{% - \pgfpointdiff{\pgfpointanchor{tikzcd@nodeb}{center}}{\pgfpointanchor{tikzcd@nodea}{center}}}% - \pgfgetlastxy{\tikzcd@x}{\tikzcd@y}% - \pgfmathparse{#1}% - \ifpgfmathunitsdeclared\else - \pgfmathparse{\pgfmathresult*\pgfkeysvalueof{/tikz/commutative diagrams/shift left/.@def}} - \fi - \coordinate (tikzcd@nodea) at ([shift={(\pgfmathresult*\tikzcd@y,-\pgfmathresult*\tikzcd@x)}]tikzcd@nodea);% - \coordinate (tikzcd@nodeb) at ([shift={(\pgfmathresult*\tikzcd@y,-\pgfmathresult*\tikzcd@x)}]tikzcd@nodeb);% - \tikzset{insert path={(tikzcd@nodea)}}}}, - shift right/.style={ - /tikz/commutative diagrams/shift left={-(#1)}}, - transform nodes/.style={ - /tikz/commutative diagrams/@shiftabletopath, - /tikz/commutative diagrams/@starttransform/.append style={#1}, - /tikz/commutative diagrams/@endtransform/.append style={#1}}, - shift/.style={ - /tikz/shift={#1},% we need this for labels to receive a shift - /tikz/commutative diagrams/transform nodes={/tikz/shift={#1}}}, - xshift/.style={ - /tikz/xshift={#1}, - /tikz/commutative diagrams/transform nodes={/tikz/xshift={#1}}}, - yshift/.style={ - /tikz/yshift={#1}, - /tikz/commutative diagrams/transform nodes={/tikz/yshift={#1}}}} - -% pgfmath functions to obtain math fontdimens -\pgfutil@ifluatex - - \directlua{tex.enableprimitives('tikzcd@', {'Umathaxis', 'Umathfractionrule'})} - - \pgfmathdeclarefunction{axis_height}{0}{% - \begingroup% - $\relax$% update fontdimens - \pgfmathreturn\the\tikzcd@Umathaxis\textstyle% - \endgroup} - - \pgfmathdeclarefunction{rule_thickness}{0}{% - \begingroup% - $\relax$% - \pgfmathreturn\the\tikzcd@Umathfractionrule\textstyle% - \endgroup} - -\else% if using (pdf)tex - - \pgfmathdeclarefunction{axis_height}{0}{% - \begingroup% - $\relax$% update fontdimens - \pgfmathreturn\the\fontdimen22\textfont2% - \endgroup} - - \pgfmathdeclarefunction{rule_thickness}{0}{% - \begingroup% - $\relax$% - \pgfmathreturn\the\fontdimen8\textfont3% - \endgroup} - -\fi - -% The shape used inside matrices -\pgfdeclareshape{asymmetrical rectangle} { - \inheritsavedanchors[from={rectangle}] - \inheritanchor[from={rectangle}]{base} - \inheritanchor[from={rectangle}]{north} - \inheritanchor[from={rectangle}]{south} - \inheritanchor[from={rectangle}]{base west} - \inheritanchor[from={rectangle}]{north west} - \inheritanchor[from={rectangle}]{south west} - \inheritanchor[from={rectangle}]{base east} - \inheritanchor[from={rectangle}]{north east} - \inheritanchor[from={rectangle}]{south east} - \inheritanchor[from={rectangle}]{mid} - \inheritanchor[from={rectangle}]{mid west} - \inheritanchor[from={rectangle}]{mid east} - \inheritbackgroundpath[from={rectangle}] - \anchor{center}{\pgf@anchor@rectangle@center\pgfmathsetlength\pgf@y% - {\pgfkeysvalueof{/tikz/commutative diagrams/center yshift}}} - \anchor{west}{\pgf@anchor@rectangle@west\pgfmathsetlength\pgf@y% - {\pgfkeysvalueof{/tikz/commutative diagrams/center yshift}}} - \anchor{east}{\pgf@anchor@rectangle@east\pgfmathsetlength\pgf@y% - {\pgfkeysvalueof{/tikz/commutative diagrams/center yshift}}} - \anchor{real center}{\pgf@anchor@rectangle@center} - \anchor{real west}{\pgf@anchor@rectangle@west} - \anchor{real east}{\pgf@anchor@rectangle@east} - \anchorborder{% - \pgfmathsetlength\pgfutil@tempdima% - {\pgfkeysvalueof{/tikz/commutative diagrams/center yshift}}% - \pgf@xb=\pgf@x% xb/yb is target - \pgf@yb=\pgf@y% - \southwest% - \pgf@xa=\pgf@x% xa/ya is se - \pgf@ya=\pgf@y% - \northeast% - \advance\pgf@x by-\pgf@xa% - \advance\pgf@y by-\pgf@ya% - \pgf@xc=.5\pgf@x% x/y is half width/height - \pgf@yc=.5\pgf@y% - \advance\pgf@xa by\pgf@xc% xa/ya becomes center - \advance\pgf@ya by\pgf@yc% - \ifdim\pgf@yb>0pt% - \northeast% - \pgf@yc=\pgf@y% - \advance\pgf@yc by-\pgfutil@tempdima% - \else% - \southwest% - \pgf@yc=-\pgf@y% - \advance\pgf@yc by\pgfutil@tempdima% - \fi - \edef\pgf@marshal{% - \noexpand\pgfpointborderrectangle - {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}} - {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}% - }% - \pgf@process{\pgf@marshal}% - \advance\pgf@x by\pgf@xa% - \advance\pgf@y by\pgfutil@tempdima% - }% -}% - -% Computer modern arrow tips -\pgfdeclarearrow{ - name=cm to, - parameters={\ifpgfarrowharpoon h\fi}, - setup code={% - \pgfarrowssetbackend{-5.8\pgflinewidth}% - \pgfarrowssettipend{0.5\pgflinewidth}}, - drawing code={ - \pgfsetdash{}{+0pt}% - \pgfsetroundcap% - \pgfsetroundjoin% - \pgfpathmoveto{\pgfqpoint{-5.3\pgflinewidth}{6\pgflinewidth}}% - \pgfpathcurveto% - {\pgfqpoint{\ifpgfarrowharpoon-4\else-4.5\fi\pgflinewidth}{\ifpgfarrowharpoon3\else2.5\fi\pgflinewidth}}% - {\pgfqpoint{\ifpgfarrowharpoon-2\else-2.133\fi\pgflinewidth}{\ifpgfarrowharpoon1\else0.6\fi\pgflinewidth}}% - {\pgfpointorigin}% - \ifpgfarrowharpoon\else% - \pgfpathcurveto% - {\pgfqpoint{-2.133\pgflinewidth}{-0.6\pgflinewidth}}% - {\pgfqpoint{-4.5\pgflinewidth}{-2.5\pgflinewidth}}% - {\pgfqpoint{-5.3\pgflinewidth}{-6\pgflinewidth}}% - \fi% - \pgfusepathqstroke}} - -\pgfdeclarearrow{ - name=cm implies, - setup code={% - \pgfarrowssetbackend{\pgfinnerlinewidth\pgf@x=0.25\pgf@x\advance\pgf@x by-0.792\pgflinewidth}% - \pgfarrowssettipend{\pgfinnerlinewidth\pgf@x=-0.25\pgf@x\advance\pgf@x by1.094\pgflinewidth}}, - drawing code={% - \pgfutil@tempdima\pgflinewidth% - \pgfsetlinewidth{.5\pgflinewidth-.5*\pgfinnerlinewidth}% - \pgfsetdash{}{+0pt}% - \pgfsetroundcap% - \pgfsetroundjoin% - \pgfpathmoveto{\pgfqpoint{-0.542\pgfutil@tempdima}{1.1\pgfutil@tempdima}}% - \pgfpathcurveto% - {\pgfqpoint{-0.2\pgfutil@tempdima}{0.5\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.2\pgfutil@tempdima}{-0.5\pgfutil@tempdima}}% - {\pgfqpoint{-0.542\pgfutil@tempdima}{-1.1\pgfutil@tempdima}}% - \pgfusepathqstroke}} - -\pgfdeclarearrow{ - name=cm bold to, - setup code={ - \pgfarrowssetbackend{-4.035\pgflinewidth} - \pgfarrowssettipend{0.5\pgflinewidth}}, - drawing code={% - \pgfutil@tempdima=0.667\pgflinewidth% - \pgfsetdash{}{+0pt} - \pgfsetroundcap - \pgfsetroundjoin - \pgfpathmoveto{\pgfqpoint{-5.3\pgfutil@tempdima}{6\pgfutil@tempdima}} - \pgfpathcurveto - {\pgfqpoint{-4.5\pgfutil@tempdima}{2.5\pgfutil@tempdima}} - {\pgfqpoint{-2.133\pgfutil@tempdima}{0.6\pgfutil@tempdima}} - {\pgfpointorigin} - \pgfpathcurveto - {\pgfqpoint{-2.133\pgfutil@tempdima}{-0.6\pgfutil@tempdima}} - {\pgfqpoint{-4.5\pgfutil@tempdima}{-2.5\pgfutil@tempdima}} - {\pgfqpoint{-5.3\pgfutil@tempdima}{-6\pgfutil@tempdima}} - \pgfusepathqstroke}} - -\pgfdeclarearrow{, - name=cm bar, - setup code={% - \pgfarrowssetbackend{-0.5\pgflinewidth}% - \pgfarrowssettipend{0.5\pgflinewidth}}, - drawing code={% - \pgfsetdash{}{+0pt}% - \pgfsetroundcap% - \pgfpathmoveto{\pgfqpoint{0pt}{-4.1\pgflinewidth}}% - \pgfpathlineto{\pgfqpoint{0pt}{4.1\pgflinewidth}}% - \pgfusepathqstroke}} - -\pgfdeclarearrow{ - name=cm left hook, - setup code={% - \pgfarrowssetbackend{-0.5\pgflinewidth}% - \pgfarrowssettipend{3.5\pgflinewidth}}, - drawing code={% - \pgfsetdash{}{+0pt}% - \pgfsetroundcap% - \pgfpathmoveto{\pgfqpoint{0pt}{4.8\pgflinewidth}}% - \pgfpathcurveto% - {\pgfqpoint{4\pgflinewidth}{4.8\pgflinewidth}}% - {\pgfqpoint{4\pgflinewidth}{0pt}}% - {\pgfpointorigin}% - \pgfusepathqstroke}} - -\pgfdeclarearrow{ - name=cm *, - parameters={\ifpgfarrowopen o\fi}, - setup code={ - \pgfarrowssetbackend{-.5\pgflinewidth} - \pgfarrowssettipend{7.167\pgflinewidth}}, - drawing code={ - \pgfpathcircle{\pgfqpoint{3.333\pgflinewidth}{0pt}}{3.333\pgflinewidth} - \ifpgfarrowopen\pgfusepathqstroke\else\pgfusepathqfillstroke\fi}} - -\pgfdeclarearrow{ - name=lm left hook, - setup code={ - \pgfarrowssetbackend{+-2\pgflinewidth}% - \pgfarrowssettipend{+3.5\pgflinewidth}}, - drawing code={ - \pgfsetdash{}{+0pt} - \pgfsetroundcap - \pgfpathmoveto{\pgfqpoint{+-1.5\pgflinewidth}{+7\pgflinewidth}} - \pgfpathcurveto - {\pgfqpoint{+4.3\pgflinewidth}{+7\pgflinewidth}} - {\pgfqpoint{+4.3\pgflinewidth}{+\pgflinewidth}} - {\pgfpointorigin} - \pgfusepathqstroke}} - -\pgfdeclarearrow{ - name=lm bar, - setup code={% - \pgfarrowssetbackend{+-0.5\pgflinewidth}% - \pgfarrowssettipend{+0.5\pgflinewidth}}, - drawing code={% - \pgfsetdash{}{+0pt}% - \pgfsetroundcap% - \pgfpathmoveto{\pgfqpoint{0pt}{-6\pgflinewidth}}% - \pgfpathlineto{\pgfqpoint{0pt}{6\pgflinewidth}}% - \pgfusepathqstroke}} - -\pgfkeys{ - cm left to/.tip={cm to[left]}, - cm right to/.tip={cm to[right]}, - cm right hook/.tip={cm left hook[swap]}, - cm double to/.tip={cm to[sep=0pt -2.8]cm to}, - cm to reversed/.tip={cm to[reversed]}, - cm o/.tip={cm *[open]}, - cm |/.tip={cm bar}}%| - -% The `Glyph' meta arrow tip -\pgfqkeys{/pgf/arrow keys}{ - glyph math command/.code={\pgfarrowsaddtooptions{\def\tikzcd@glyph{$\csname #1\endcsname$}}}, - glyph axis/.code={\pgfarrowsaddtooptions{\pgfmathsetlengthmacro\tikzcd@glyph@axis{#1}}}, - glyph length/.code={\pgfarrowsaddtooptions{\pgfmathsetlengthmacro\tikzcd@glyph@len{#1}}}, - glyph shorten/.code={\pgfarrowsaddtooptions{\pgfmathsetlengthmacro\tikzcd@glyph@shorten{#1}}}} - -\pgfdeclarearrow{ - name=Glyph, - cache=false, - bending mode=none, - parameters={\tikzcd@glyph@len,\tikzcd@glyph@shorten}, - setup code={ - \pgfarrowssettipend{\tikzcd@glyph@len\advance\pgf@x by\tikzcd@glyph@shorten}}, - defaults={ - glyph axis=axis_height, - glyph length=+0.9ex, - glyph shorten=+-0.1ex}, - drawing code={ - \pgfpathrectangle{\pgfpoint{+0pt}{+-1ex}}{\pgfpoint{+\tikzcd@glyph@len}{+2ex}}% - \pgfusepathqclip% - \pgftransformxshift{+\tikzcd@glyph@len}% - \pgftransformyshift{+-\tikzcd@glyph@axis}% - \pgftext[right,base]{\tikzcd@glyph}}} - -% ConTeXt-specific stuff -\pgfutil@IfUndefined{starttikzpicture}{}{% - \def\starttikzcd{\tikzcd}% - \def\stoptikzcd{\endtikzcd}} - -% Generic arrow tip selection styles -\tikzcdset{ - arrow style/.initialize/.style={ - double line/.code={\tikzset{double=\pgfkeysvalueof{/tikz/commutative diagrams/background color}}}, - squiggly/.default={}, - tikzcd to/.tip={>}, - tikzcd bar/.tip={cm bar}, - tikzcd left hook/.tip={cm left hook}, - tikzcd right hook/.tip={tikzcd left hook[swap]}, - tikzcd left to/.tip={tikzcd to[harpoon]}, - tikzcd right to/.tip={tikzcd left to[swap]}, - tikzcd double to/.tip={tikzcd to[]tikzcd to}, - tikzcd to reversed/.tip={tikzcd to[reversed]}, - tikzcd cap/.tip={}, - tikzcd implies cap/.tip={}, - tikzcd implies/.tip={cm implies}}, - no tail/.code={\pgfsetarrowsstart{tikzcd cap}}, - to head/.code={\pgfsetarrowsend{tikzcd to}}, - maps to/.code={\pgfsetarrowsstart{tikzcd bar}}, - hook/.code={\pgfsetarrowsstart{tikzcd right hook}}, - hook'/.code={\pgfsetarrowsstart{tikzcd left hook}}, - harpoon/.code={\pgfsetarrowsend{tikzcd left to}}, - harpoon'/.code={\pgfsetarrowsend{tikzcd right to}}, - two heads/.code={\pgfsetarrowsend{tikzcd double to}}, - tail/.code={\pgfsetarrowsstart{tikzcd to reversed}}, - rightarrow/.code={\pgfsetarrows{tikzcd cap-tikzcd to}}, - Rightarrow/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies cap-tikzcd implies}}, - leftarrow/.code={\pgfsetarrows{tikzcd to-tikzcd cap}}, - Leftarrow/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies-tikzcd implies cap}}, - leftrightarrow/.code={\pgfsetarrows{tikzcd to-tikzcd to}}, - Leftrightarrow/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies-tikzcd implies}}, - mapsto/.code={\pgfsetarrows{tikzcd bar-tikzcd to}}, - mapsfrom/.code={\pgfsetarrows{tikzcd to-tikzcd bar}}, - hookrightarrow/.code={\pgfsetarrows{tikzcd right hook-tikzcd to}}, - hookleftarrow/.code={\pgfsetarrows{tikzcd to-tikzcd left hook}}, - rightharpoonup/.code={\pgfsetarrows{tikzcd cap-tikzcd left to}}, - rightharpoondown/.code={\pgfsetarrows{tikzcd cap-tikzcd right to}}, - leftharpoonup/.code={\pgfsetarrows{tikzcd right to-tikzcd cap}}, - leftharpoondown/.code={\pgfsetarrows{tikzcd left to-tikzcd cap}}, - rightarrowtail/.code={\pgfsetarrows{tikzcd to reversed-tikzcd to}}, - leftarrowtail/.code={\pgfsetarrows{tikzcd to-tikzcd to reversed}}, - twoheadrightarrow/.code={\pgfsetarrows{tikzcd cap-tikzcd double to}}, - twoheadleftarrow/.code={\pgfsetarrows{tikzcd double to-tikzcd cap}}, - no head/.code={\pgfsetarrowsend{tikzcd cap}}, - dash/.code={\pgfsetarrows{tikzcd cap-tikzcd cap}}, - dashrightarrow/.code={\tikzcdset{rightarrow,dashed}}, - dashleftarrow/.code={\tikzcdset{leftarrow,dashed}}, - equal/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies cap-tikzcd implies cap}}, - equals/.code={\tikzcdset{equal}}, - rightsquigarrow/.code={\tikzcdset{rightarrow,squiggly}}, - leftsquigarrow/.code={\tikzcdset{leftarrow,squiggly}}, - leftrightsquigarrow/.code={\tikzcdset{leftrightarrow,squiggly}}, - squiggly/.code={% - \pgfutil@ifundefined{tikz@library@decorations.pathmorphing@loaded}% - {\pgfutil@packageerror{tikz-cd}{You need to say % - \string\usetikzlibrary{decorations.pathmorphing} to use squiggly arrows}{}}{}% - \pgfkeysalso{ - /tikz/decorate, - /tikz/decoration={ - zigzag, - segment length=9.25\pgflinewidth, - amplitude=1.9\pgflinewidth, - post=lineto, post length=6\pgflinewidth, - pre=lineto, pre length=6\pgflinewidth, - #1}}}} - -% The `Computer Modern' arrow style -\pgfkeysdef{/tikz/commutative diagrams/arrow style/Computer Modern}{% - \tikzcdset{ - arrow style/.initialize, - double line/.append code={\tikzset{double distance=3.85\pgflinewidth}}, - tikzcd to/.tip={cm to}, - tikzcd double to/.tip={cm double to}, - dashed/.style={/tikz/dash pattern={on 7\pgflinewidth off 4\pgflinewidth}}}} - -% The `Latin Modern' arrow style -\pgfkeysdef{/tikz/commutative diagrams/arrow style/Latin Modern}{% - \tikzcdset{ - arrow style=Computer Modern, - tikzcd left hook/.tip={lm left hook}, - tikzcd bar/.tip={lm bar}}} - -% The `math font' arrow style -% -% The method used to guess the correct value of `double distance' -% inside the `double line' style is not robust at all. If it fails, -% set -% \tikzcdset{double line/.append style={double distance=2*rule_thickness}} -% and find the correct value for `double distance' by trial and error -% (or measure the distance between the \Rightarrow stems in a font -% editor). -\pgfkeysdef{/tikz/commutative diagrams/arrow style/math font}{% - \pgfutil@IfUndefined{mapsfrom} - {\def\tikzcd@mapsfrom{\pgfpicture\pgfsetbaseline{+0pt}\pgftransformxscale{-1}\pgftext[base]{$\mapsto$}\endpgfpicture}} - {\def\tikzcd@mapsfrom{\mapsfrom}} - \tikzcdset{ - arrow style/.initialize, - tikzcd to/.tip={Glyph[glyph math command=rightarrow]}, - tikzcd cap/.tip={Glyph[glyph math command=leftarrow]}, - tikzcd to reversed/.tip={Glyph[glyph math command=leftarrowtail]}, - tikzcd bar/.tip={Glyph[glyph math command=tikzcd@mapsfrom]}, - tikzcd left hook/.tip={Glyph[glyph math command=hookleftarrow]}, - tikzcd right hook/.tip={Glyph[glyph math command=hookleftarrow, swap]}, - tikzcd implies/.tip={Glyph[glyph math command=Rightarrow, glyph length=1.2ex]}, - tikzcd implies cap/.tip={Glyph[glyph math command=Leftarrow]}, - tikzcd double to/.tip={Glyph[glyph math command=twoheadrightarrow, glyph length=1.4ex]}, - tikzcd left to/.tip={Glyph[glyph math command=rightharpoonup]}, - tikzcd right to/.tip={Glyph[glyph math command=rightharpoonup,swap]}, - double line/.append code={\tikzset{double distance={2*(height("$=$")-axis_height-rule_thickness)}}}, - dashed/.code={\tikzset{dash pattern=on 0.8ex off 0.4ex, dash phase=0.8ex}}, - squiggly/.default={pre length=1ex, post length=1ex}}} - -% The `arrows.meta' arrow style -\pgfkeysdef{/tikz/commutative diagrams/arrow style/arrows.meta}{% - \pgfutil@ifundefined{tikz@library@arrows.meta@loaded}% - {\pgfutil@packageerror{tikz-cd}{You need to say % - \string\usetikzlibrary{arrows.meta} to use the `arrows.meta' arrow style}{}}{}% - \tikzcdset{ - arrow style/.initialize, - double line/.append style={/tikz/double equal sign distance}, - tikzcd bar/.tip={Bar}, - tikzcd left hook/.tip={Hooks[harpoon]}, - tikzcd implies/.tip={Implies}, - dashed/.style={/tikz/dashed}}} - -% The `tikz' arrow style -\pgfkeysdef{/tikz/commutative diagrams/arrow style/tikz}{% - \pgfutil@ifundefined{tikz@library@arrows@loaded}% - {\pgfutil@packageerror{tikz-cd}{You need to say % - \string\usetikzlibrary{arrows} to use the `tikz' arrow style}{}}{}% - \tikzcdset{ - arrow style/.initialize, - double line/.append style={/tikz/double equal sign distance}, - tikzcd bar/.tip={|},%| - tikzcd left hook/.tip={left hook}, - tikzcd left to/.tip={left to}, - tikzcd implies/.tip={implies}, - dashed/.style={/tikz/dashed}}} - -% Default settings -\tikzcdset{ - every arrow/.style={ - /tikz/draw, - /tikz/line width=rule_thickness, - /tikz/commutative diagrams/rightarrow}, - every label/.style={ - /tikz/auto, - /tikz/font=\everymath\expandafter{\the\everymath\scriptstyle}, - /tikz/inner sep=+0.5ex}, - every cell/.style={ - /tikz/shape={asymmetrical rectangle}, - /tikz/inner xsep=+1ex, - /tikz/inner ysep=+0.85ex}, - every matrix/.style={/tikz/inner sep=+0pt}, - every diagram/.style={ - /tikz/commutative diagrams/row sep=normal, - /tikz/commutative diagrams/column sep=normal, - /tikz/baseline=+0pt}, - arrow style=Computer Modern, - 1-row diagram/.style={/tikz/baseline=(\tikzcdmatrixname.base)}, - math mode=true, - center yshift/.initial=axis_height, - row sep/huge/.initial=+3.6em, - row sep/large/.initial=+2.7em, - row sep/normal/.initial=+1.8em, - row sep/scriptsize/.initial=+1.35em, - row sep/small/.initial=+0.9em, - row sep/tiny/.initial=+0.45em, - column sep/huge/.initial=+4.8em, - column sep/large/.initial=+3.6em, - column sep/normal/.initial=+2.4em, - column sep/scriptsize/.initial=+1.8em, - column sep/small/.initial=+1.2em, - column sep/tiny/.initial=+0.6em, - crossing over clearance/.initial=+1.5ex, - shift left/.default=+0.56ex, - shift right/.default=1, - background color/.initial=white} - -\endinput |