summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tikz-cd
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-09-13 22:55:30 +0000
committerKarl Berry <karl@freefriends.org>2011-09-13 22:55:30 +0000
commit1993bf742a4a04e823f0bbe5d8b90a6d103709f2 (patch)
tree8031a6fcbae38b06cb5624e1a3103b55386fbe76 /Master/texmf-dist/tex/latex/tikz-cd
parent737df2d11a464a5d565da5ac24076a08944d4221 (diff)
new tikz package tikz-cd (13sep11)
git-svn-id: svn://tug.org/texlive/trunk@23938 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.sty329
1 files changed, 329 insertions, 0 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
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