From 3db680aa56c30ff89687d0536b35052c4d54d309 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 27 Oct 2014 22:14:29 +0000 Subject: tikz-cd (27oct14) git-svn-id: svn://tug.org/texlive/trunk@35450 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/generic/tikz-cd/tikzlibrarycd.code.tex | 95 +++++++++++----------- Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty | 2 +- 2 files changed, 48 insertions(+), 49 deletions(-) (limited to 'Master/texmf-dist/tex') 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 % @@ -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% 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 9354939cb10..6a49ae1db70 100644 --- a/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty +++ b/Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty @@ -13,7 +13,7 @@ % You should have received a copy of the GNU General Public License % along with this program. If not, see . -\ProvidesPackage{tikz-cd}[2014/10/20 v0.9c Commutative diagrams with tikz] +\ProvidesPackage{tikz-cd}[2014/10/26 v0.9d Commutative diagrams with tikz] \RequirePackage{tikz}[2013/12/13] % pgf version 3.0.0 required \usetikzlibrary{cd} -- cgit v1.2.3