From 1993bf742a4a04e823f0bbe5d8b90a6d103709f2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 13 Sep 2011 22:55:30 +0000 Subject: new tikz package tikz-cd (13sep11) git-svn-id: svn://tug.org/texlive/trunk@23938 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty | 329 ++++++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty new file mode 100644 index 00000000000..e0d8d1546de --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty @@ -0,0 +1,329 @@ +% Copyright 2011 by FlorĂȘncio Neves +% +% This file may be distributed and/or modified +% +% 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.] +\RequirePackage{tikz} + +\usepgfmodule{parser} +\usetikzlibrary{matrix} +\usepgflibrary{arrows} + +\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 + +\newcount\tikzcd@currcol +\newcount\tikzcd@currrow +\newcount\tikzcd@destrow +\newcount\tikzcd@destcol + +%The arrow commands and its parser +\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)}% +} + +\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\endtikzcd{% + \\\egroup;% + \path[/commutative diagrams/path style,% + /commutative diagrams/current arrows]% + \tikzcd@patharg ;% + %\typeout{\tikzcd@patharg} + \endtikzpicture% +} + +%Computer modern arrow tips +\pgfarrowsdeclare{cm to}{cm to} +{ + \pgfarrowsleftextend{-5.833\pgflinewidth} + \pgfarrowsrightextend{0.5\pgflinewidth} +} +{ + \pgfutil@tempdima=\pgflinewidth + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfpathmoveto{\pgfqpoint{-5.333\pgfutil@tempdima}{6\pgfutil@tempdima}} + \pgfpathcurveto + {\pgfqpoint{-4.2\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.2\pgfutil@tempdima}{-2.5\pgfutil@tempdima}} + {\pgfqpoint{-5.333\pgfutil@tempdima}{-6\pgfutil@tempdima}} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm bold to}{cm bold to} +{ + \pgfarrowsleftextend{-4.055\pgflinewidth} + \pgfarrowsrightextend{0.5\pgflinewidth} +} +{ + \pgfutil@tempdima=0.667\pgflinewidth + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfpathmoveto{\pgfqpoint{-5.333\pgfutil@tempdima}{6\pgfutil@tempdima}} + \pgfpathcurveto + {\pgfqpoint{-4.2\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.2\pgfutil@tempdima}{-2.5\pgfutil@tempdima}} + {\pgfqpoint{-5.333\pgfutil@tempdima}{-6\pgfutil@tempdima}} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm left to}{cm left to} +{ + \pgfarrowsleftextend{-5.833\pgflinewidth} + \pgfarrowsrightextend{0.5\pgflinewidth} +} +{ + \pgfutil@tempdima=\pgflinewidth + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfpathmoveto{\pgfqpoint{-5.333\pgfutil@tempdima}{6\pgfutil@tempdima}} + \pgfpathcurveto + {\pgfqpoint{-4.2\pgfutil@tempdima}{2.5\pgfutil@tempdima}} + {\pgfqpoint{-2.133\pgfutil@tempdima}{0.6\pgfutil@tempdima}} + {\pgfpointorigin} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm right to}{cm right to} +{ + \pgfarrowsleftextend{-5.833\pgflinewidth} + \pgfarrowsrightextend{0.5\pgflinewidth} +} +{ + \pgfutil@tempdima=\pgflinewidth + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfpathmoveto{\pgfpointorigin} + \pgfpathcurveto + {\pgfqpoint{-2.133\pgfutil@tempdima}{-0.6\pgfutil@tempdima}} + {\pgfqpoint{-4.2\pgfutil@tempdima}{-2.5\pgfutil@tempdima}} + {\pgfqpoint{-5.333\pgfutil@tempdima}{-6\pgfutil@tempdima}} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm |}{cm |} +{ + \pgfarrowsleftextend{-0.5\pgflinewidth} + \pgfarrowsrightextend{0.5\pgflinewidth} +} +{ + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfpathmoveto{\pgfqpoint{0pt}{-4\pgflinewidth}} + \pgfpathlineto{\pgfqpoint{0pt}{4\pgflinewidth}} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm left hook}{cm left hook} +{ + \pgfarrowsleftextend{-0.5\pgflinewidth} + \pgfarrowsrightextend{3.5\pgflinewidth} +} +{ + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfpathmoveto{\pgfqpoint{0pt}{4.667\pgflinewidth}} + \pgfpathcurveto + {\pgfqpoint{4\pgflinewidth}{4.667\pgflinewidth}} + {\pgfqpoint{4\pgflinewidth}{0pt}} + {\pgfpointorigin} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm right hook}{cm right hook} +{ + \pgfarrowsleftextend{-0.5\pgflinewidth} + \pgfarrowsrightextend{3.5\pgflinewidth} +} +{ + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfpathmoveto{\pgfqpoint{0pt}{-4.667\pgflinewidth}} + \pgfpathcurveto + {\pgfqpoint{4\pgflinewidth}{-4.667\pgflinewidth}} + {\pgfqpoint{4\pgflinewidth}{0pt}} + {\pgfpointorigin} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm o}{cm o} +{ + \pgfarrowsleftextend{+-.5\pgflinewidth} + \pgfarrowsrightextend{7.167\pgflinewidth} +} +{ + \pgfpathcircle{\pgfqpoint{3.333\pgflinewidth}{0pt}}{3.333\pgflinewidth} + \pgfusepathqstroke +} + +\pgfarrowsdeclare{cm *}{cm *} +{ + \pgfarrowsleftextend{+-.5\pgflinewidth} + \pgfarrowsrightextend{7.167\pgflinewidth} +} +{ + \pgfpathcircle{\pgfqpoint{3.333\pgflinewidth}{0pt}}{3.333\pgflinewidth} + \pgfusepathqfillstroke +} + +\pgfarrowsdeclare{cm cap}{cm cap} +{ + \pgfarrowsleftextend{+0pt} + \pgfarrowsrightextend{+\pgflinewidth} +} +{ + \pgfsetdash{}{+0pt} + \pgfsetroundcap + \pgfpathmoveto{\pgfpointorigin} + \pgfpathlineto{\pgfqpoint{0.5\pgflinewidth}{0pt}} + \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} + +\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 -- cgit v1.2.3