summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/tikz-cd
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-10-27 22:14:29 +0000
committerKarl Berry <karl@freefriends.org>2014-10-27 22:14:29 +0000
commit3db680aa56c30ff89687d0536b35052c4d54d309 (patch)
tree0b82ef5a676021a21d7fd8ff5e88c735bca696fd /Master/texmf-dist/tex/generic/tikz-cd
parent657ef09b48e97fe2e24a3990ba7611df99b7a72c (diff)
tikz-cd (27oct14)
git-svn-id: svn://tug.org/texlive/trunk@35450 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/tikz-cd')
-rw-r--r--Master/texmf-dist/tex/generic/tikz-cd/tikzlibrarycd.code.tex95
1 files changed, 47 insertions, 48 deletions
diff --git a/Master/texmf-dist/tex/generic/tikz-cd/tikzlibrarycd.code.tex b/Master/texmf-dist/tex/generic/tikz-cd/tikzlibrarycd.code.tex
index 7f4d44896bd..ddd2312b89e 100644
--- a/Master/texmf-dist/tex/generic/tikz-cd/tikzlibrarycd.code.tex
+++ b/Master/texmf-dist/tex/generic/tikz-cd/tikzlibrarycd.code.tex
@@ -1,4 +1,4 @@
-% tikzlibrarycd.code.tex [2014/10/20 v0.9c Commutative diagrams with tikz]
+% tikzlibrarycd.code.tex [2014/10/26 v0.9d Commutative diagrams with tikz]
%
% Copyright 2011, 2012, 2014 by FlorĂȘncio Neves <florencioneves@gmail.com>
%
@@ -21,15 +21,12 @@
\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}}},
+ execute before arrows/.code={\expandafter\def\expandafter\tikzcd@before@paths@hook\expandafter{\tikzcd@before@paths@hook#1}},
to/.code={\tikzcd@setarrowend\tikzcd@ar@target{#1}},
from/.code={\tikzcd@setarrowend\tikzcd@ar@start{#1}},
description/.style={
@@ -105,6 +102,10 @@
% The `tikzcd' environment
\def\tikzcd{%
\iffalse{\fi\ifnum0=`}\fi% standard trick to allow nesting of tabular-like environments (cf. the tabularx manual)
+ \ifx\arrow\tikzcd@arrow%
+ \pgfutil@packageerror{tikz-cd}{Diagrams cannot be nested}{}
+ \fi%
+ \tikzpicture%
\pgfutil@ifnextchar&% if we get an & here, it will be returned with the wrong catcode to the input stream
{\expandafter\tikzcd@@\expandafter\pgfmatrixnextcell\pgfutil@gobble}%
{\tikzcd@@}}
@@ -112,10 +113,7 @@
\def\tikzcd@@{\pgfutil@ifnextchar[{\tikzcd@}{\tikzcd@[]}}
\def\tikzcd@[#1]{%
- \tikzpicture[/tikz/commutative diagrams/.cd,every diagram,#1]%
- \ifx\arrow\tikzcd@arrow%
- \pgfutil@packageerror{tikz-cd}{Diagrams cannot be nested}{}
- \fi%
+ \tikzcdset{every diagram,#1}%
\let\arrow\tikzcd@arrow%
\let\ar\tikzcd@arrow%
\def\rar{\tikzcd@xar{r}}%
@@ -127,10 +125,9 @@
\def\drar{\tikzcd@xar{dr}}%
\def\dlar{\tikzcd@xar{dl}}%
\global\let\tikzcd@savedpaths\pgfutil@empty%
- \matrix[
- /tikz/handle active characters in code=false,
- /tikz/matrix of \iftikzcd@mathmode math \fi nodes,
- /tikz/every cell/.append code={\tikzcdset{every cell}},
+ \matrix[%
+ /tikz/matrix of \iftikzcd@mathmode math \fi nodes,%
+ /tikz/every cell/.append code={\tikzcdset{every cell}},%
/tikz/commutative diagrams/.cd,every matrix]%
\bgroup}
@@ -139,8 +136,16 @@
\pgfextra{\global\let\tikzcdmatrixname\tikzlastnode};%
\tikzcdset{\the\pgfmatrixcurrentrow-row diagram/.try}%
\begingroup%
- \tikzcd@enablequotes%
- \tikzcd@patcherrmsg%
+ \pgfkeys{% `quotes' library support
+ /handlers/first char syntax/the character "/.initial=\tikzcd@forward@quotes,%
+ /tikz/edge quotes mean={%
+ edge node={node [execute at begin node=\iftikzcd@mathmode$\fi,%$
+ execute at end node=\iftikzcd@mathmode$\fi,%$
+ /tikz/commutative diagrams/.cd,every label,##2]{##1}}}}%
+ \let\tikzcd@errmessage\errmessage% improve error messages
+ \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}}%
+ \tikzcd@before@paths@hook%
\tikzcd@savedpaths%
\endgroup%
\endtikzpicture%
@@ -149,11 +154,12 @@
% The arrow commands
\def\tikzcd@arrow{%
\relax% this was added to avoid errors when a cell starts with \arrow, but it seems unnecessary now
- \tikzcd@x@addto@macro\tikzcd@savedpaths{%
+ \edef\tikzcd@temp{%
\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[]}}
+ \expandafter\pgfutil@g@addto@macro\expandafter\tikzcd@savedpaths\expandafter{\tikzcd@temp}%
+ \pgfutil@ifnextchar[{\tikzcd@handle@shortcuts@next\tikzcd@@arrow}{\tikzcd@ar@old[]}}
\def\tikzcd@@arrow[#1]{\pgfutil@ifnextchar\bgroup{\tikzcd@ar@old[#1]}{\tikzcd@ar@new[#1]}}
@@ -163,43 +169,36 @@
(\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,to={#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]{\tikzcdmathmaybe{#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}}}
-
+ \pgfutil@ifnextchar[%
+ {\tikzcd@handle@shortcuts@next\tikzcd@ar@getlabel{to={#2},#1}}%
+ {\pgfutil@ifnextchar\bgroup%
+ {\tikzcd@ar@getlabel{to={#2},#1}[]}%
+ {\tikzcd@ar@new[to={#2},#1]}}}
+
+\def\tikzcd@ar@getlabel#1[#2]#3{%
+ \pgfutil@ifnextchar[%
+ {\tikzcd@handle@shortcuts@next\tikzcd@ar@getlabel{#1,"{#3}"{#2}}}%
+ {\pgfutil@ifnextchar\bgroup%
+ {\tikzcd@ar@getlabel{#1,"{#3}"{#2}}[]}%
+ {\tikzcd@ar@new[#1,"{#3}"{#2}]}}}
+
+\def\tikzcd@xar#1{\relax\pgfutil@ifnextchar[{\tikzcd@handle@shortcuts@next\tikzcd@@xar{#1}}{\tikzcd@arrow[]{#1}}}
\def\tikzcd@@xar#1[#2]{\tikzcd@arrow[#2]{#1}}
-\def\tikzcdmathmaybe#1{% this must be a user-accessible command to avoid clash with babel library
- \iftikzcd@mathmode$\relax #1$\else#1\fi}
+\def\tikzcd@handle@shortcuts@next{% expand next macro using standard catcodes
+ \iftikz@handle@active@code%
+ \begingroup%
+ \tikz@switchoff@shorthands\expandafter%
+ \endgroup\expandafter%
+ \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]{\tikzcdmathmaybe{##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}}}
-
+\def\tikzcd@forward@quotes#1{\tikzset{every to/.append style={#1}}}
+
+\let\tikzcd@before@paths@hook\pgfutil@empty
+
% `start anchor', `end anchor', and `shift' keys
\def\tikzcd@setanchor#1[#2]#3\relax{%
\ifx\relax#2\relax\else%