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 | |
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')
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.pdf | bin | 339276 -> 350206 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.tex | 125 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-cd/tikz-cd.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/tex/generic/tikz-cd/tikzlibrarycd.code.tex (renamed from Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex) | 273 |
4 files changed, 116 insertions, 286 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.pdf b/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.pdf Binary files differindex be878f26e8f..56fd4656dcd 100644 --- a/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.pdf +++ b/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.pdf diff --git a/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.tex b/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.tex index 2d0e1b53c2c..0e8e93f2921 100644 --- a/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.tex +++ b/Master/texmf-dist/doc/latex/tikz-cd/tikz-cd-doc.tex @@ -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 @@ -126,12 +126,8 @@ inner ysep=0.5cm} } -\usepackage{iftex,tikz-cd,xr} -\ifLuaTeX - \usepackage{fontspec} -\else - \usepackage[utf8]{inputenc} -\fi +\usepackage{tikz-cd,xr,multicol,microtype} +\usepackage[utf8]{inputenc} \hypersetup{unicode, pdftitle={The tikz-cd package}, @@ -153,25 +149,11 @@ \title{The \texttt{tikz-cd} package} \author{Florêncio Neves} -\date{Version 0.9, of February 28, 2014} +\date{Version 0.9b, of March 8, 2014} \tikzset{/codeexample/every codeexample/.append style={/tikz/commutative diagrams/background color=graphicbackground}} -\pgfarrowsdeclare{gray x}{gray x} -{ - \pgfarrowsrightextend{4\pgflinewidth} -} -{ - \pgfsetdash{}{0pt} - \pgfsetlinewidth{0.8\pgflinewidth} - \pgfsetstrokecolor{gray} - \pgfpathmoveto{\pgfpoint{5\pgflinewidth}{5\pgflinewidth}} - \pgfpathlineto{\pgfpoint{-5\pgflinewidth}{-5\pgflinewidth}} - \pgfusepathqstroke - \pgfpathmoveto{\pgfpoint{-5\pgflinewidth}{5\pgflinewidth}} - \pgfpathlineto{\pgfpoint{5\pgflinewidth}{-5\pgflinewidth}} - \pgfusepathqstroke -} +\tikzset{gray x/.tip={Rays[color=gray]}} \newcommand{\displayarrow}[2][]{% \index{#2@\protect\texttt{#2} arrow tip}% @@ -189,8 +171,6 @@ \tikz[baseline=-axis_height, line width=rule_thickness] \draw[arrows=gray x-gray x,commutative diagrams/.cd, #1] (0,0) -- (0.6,0);} -\usepackage{multicol,microtype,ellipsis} - \begin{document} \maketitle @@ -202,8 +182,8 @@ reasonable default settings. Familiarity with Ti\emph{k}Z is helpful but not necessary, since the examples contained here cover the most common situations. -This software is distributed under the GNU General Public License, -version 3 or later. +This software is distributed under the terms of the GNU General Public +License, version 3 or later. \tableofcontents @@ -254,7 +234,7 @@ between matrix entries can be created with the |\arrow| command described below. Everything inside |{tikzcd}| is typeset in math mode, but you will -probably want use it inside an |{equation}| environment or |\[| \dots\ +probably want use it inside an |{equation}| environment or |\[| \dots |\]|, so that the diagram is placed on a new line and centered. It is important to note that \textsc{dvi} viewers will not display @@ -322,8 +302,7 @@ of the arrow. \end{tikzcd} \end{codeexample} -We provide one more example, reproduced from the -X\raisebox{-0.3ex}{Y}-pic user's guide. +We provide two real-life examples. \begin{codeexample}[] \begin{tikzcd} @@ -338,6 +317,21 @@ X\raisebox{-0.3ex}{Y}-pic user's guide. \end{tikzcd} \end{codeexample} +\begin{codeexample}[] +\begin{tikzcd}[column sep=tiny] + & \pi_1(U_1) \ar[dr] \ar[drr, "j_1", bend left=20] + & + &[1.5em] \\ + \pi_1(U_1\cap U_2) \ar[ur, "i_1"] \ar[dr, "i_2"'] + & + & \pi_1(U_1) \ast_{ \pi_1(U_1\cap U_2)} \pi_1(U_2) \ar[r, dashed, "\simeq"] + & \pi_1(X) \\ + & \pi_1(U_2) \ar[ur]\ar[urr, "j_2"', bend right=20] + & + & +\end{tikzcd} +\end{codeexample} + \subsection{Changing arrow tips} \label{sec:changing-arrow-tips} @@ -374,6 +368,8 @@ style key located in |/tikz/commutative diagrams|). \displayarrowstyle{maps to}\\ \displayarrowstyle{mapsto}\\ \displayarrowstyle{mapsfrom}\\ + \displayarrowstyle{Mapsto}\\ + \displayarrowstyle{Mapsfrom}\\ \end{tabular} \subsubsection*{Arrows with hook} @@ -432,18 +428,9 @@ style key located in |/tikz/commutative diagrams|). \end{tabular} \end{multicols} -A gray cross -(\begin{tikzpicture}[baseline=0pt, yshift=axis_height] - \pgfsetdash{}{0pt} \pgfsetlinewidth{0.8\pgflinewidth} - \pgfsetstrokecolor{gray} - \pgfpathmoveto{\pgfpoint{5\pgflinewidth}{5\pgflinewidth}} - \pgfpathlineto{\pgfpoint{-5\pgflinewidth}{-5\pgflinewidth}} - \pgfusepathqstroke - \pgfpathmoveto{\pgfpoint{-5\pgflinewidth}{5\pgflinewidth}} - \pgfpathlineto{\pgfpoint{5\pgflinewidth}{-5\pgflinewidth}} - \pgfusepathqstroke -\end{tikzpicture}) in the samples above indicates that the corresponding tip -is kept unchanged. This allows several arrow styles to be superimposed. +A gray cross (\tikz \path[/pgf/tips=true,gray x-] (0,0) -- (1mm,0);) +in the samples above indicates that the corresponding tip is kept +unchanged. This allows several arrow styles to be superimposed. \begin{codeexample}[] \begin{tikzcd} @@ -726,28 +713,21 @@ Section \ref*{pgfman-section-matrices}.3.2 of the \pgfname{} manual This key appends \meta{options} to the style |every arrow|. \end{key} -\begin{key}{/tikz/commutative diagrams/arrow style=\meta{style} (initially Computer Modern)} +\begin{key}{/tikz/commutative diagrams/arrow style=\meta{style}} This key determines which collection of arrow tips is used by the arrow tip selection styles listed in - \S\ref{sec:changing-arrow-tips}. Currently, \meta{style} can be one - of the following: + \S\ref{sec:changing-arrow-tips}. The initial setting is suitable + for documents using the Computer Modern font at any size. The + available choices for \meta{style} are: \begin{description} - \item[\texttt{Computer Modern}] This is the initial setting and is suitable - for documents using the Computer Modern font. - \item[\texttt{Latin Modern}] A small variant of the above, intended - for documents using the Latin Modern font. + \item[\texttt{Latin Modern}] A small variant of the initial + settings, intended for documents using the Latin Modern font at + any size. \item[\texttt{math font}] This setting uses the |Glyph| meta arrow tip described in \S\ref{sec:font-arrow-tips}. - \item[\texttt{arrows.meta}] This setting uses the arrow tips defined - in \tikzname's |arrows.meta| library (which has to be loaded - manually before setting this option). It honors the option - |/tikz/>|. \item[\texttt{tikz}] This setting uses the arrow tips defined in - \tikzname's older \texttt{arrows} library (which has to be loaded - manually before setting this option). It honors the option - |/tikz/>|. Unless you have backwards compatibility requirements, - you should use the \texttt{arrows.meta} option and library - instead. + \tikzname's |arrows.meta| library. It honors the option + |/tikz/>|. \end{description} \end{key} @@ -756,15 +736,13 @@ Modern, you may find the best results by selecting the |math font| style. As detailed in \S\ref{sec:font-arrow-tips}, this is not guaranteed to work perfectly with all fonts, but gives good results in many cases. If the \texttt{math font} style gives unsatisfactory -results, you can try selecting the \texttt{arrows.meta} style, and -setting |/tikz/>| to the value that best matches your font (among -those shown in \cite[\S\ref*{pgfman-section-arrows-meta}]{pgfman}). +results, you can try selecting the \texttt{tikz} style, and setting +|/tikz/>| to the value that best matches your font (among those shown +in \cite[\S\ref*{pgfman-section-arrows-meta}]{pgfman}). \begin{codeexample}[] -\usetikzlibrary{arrows.meta} - \tikzcdset{ - arrow style=arrows.meta, + arrow style=tikz, diagrams={>={Straight Barb[scale=0.8]}} } @@ -1173,7 +1151,7 @@ line to your document after all packages have been loaded: |\def\temp{&} \catcode`&=\active \let&=\temp| \end{quote} However, this may interfere in unexpected ways with other -packages. Use it at your own risk. +packages. Use this trick at your own risk. \section{Additional goodies} \label{sec:general-infra} @@ -1185,7 +1163,8 @@ its goals. These additional goodies are documented in this section. \label{sec:asymm-rect-shape} The following shape is used inside |{tikzcd}| to ensure that arrows -between nodes in the same row are horizontal. +between nodes in the same row are perfectly horizontal, even if the +nodes contain text with different heights and depths. \begin{shape}{asymmetrical rectangle} This shape is similar to the |rectangle| shape, but its |center| is @@ -1254,8 +1233,6 @@ The following arrow tips mimic the Computer Modern designs. It is useful to know that at size 10\,pt, the Computer Modern arrow stems are 0.4\,pt thick; for larger font sizes, this parameter should be scaled accordingly, or replaced by the equivalent figure 0.0928\,ex. -Two tips that look significantly different in the Latin Modern font -are also supplied. Notice that by using the mechanism explained in \S\ref{sec:changing-arrow-tips}, it is not necessary, and in fact not @@ -1268,19 +1245,15 @@ inside a |{tikzcd}|. \displayarrow[/tikz/commutative diagrams/double line]{cm implies}\\ \displayarrow[line width=1.5*rule_thickness]{cm bold to}\\ \displayarrow{cm double to}\\ - \displayarrow{cm left hook}\\ - \displayarrow{cm right hook}\\ + \displayarrow{cm to reversed}\\ \end{tabular} \begin{tabular}{ll} \displayarrow{cm bar}\\ -% \displayarrow{cm o}\\ -% \displayarrow{cm *}\\ \displayarrow{cm left to}\\ \displayarrow{cm right to}\\ - \displayarrow{cm to reversed}\\ - \displayarrow{lm left hook}\\ - \displayarrow{lm bar}\\ + \displayarrow{cm left hook}\\ + \displayarrow{cm right hook}\\ \end{tabular} \end{multicols} @@ -1380,7 +1353,7 @@ cases where unusual design choices are made. \bibitem{pgfman} Till Tantau, \emph{The \tikzname{} and \pgfname{} packages: Manual for version 3.0.0}. - Available at \url{http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf}. + Available at \url{http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf}. \end{thebibliography} \printindex 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/tex/generic/tikz-cd/tikzlibrarycd.code.tex index f14c162c5a9..43b204c29e2 100644 --- a/Master/texmf-dist/tex/latex/tikz-cd/tikzlibrarycd.code.tex +++ b/Master/texmf-dist/tex/tex/generic/tikz-cd/tikzlibrarycd.code.tex @@ -1,21 +1,21 @@ -% Copyright 2011, 2012, 2014 by Florêncio Neves +% tikzlibrarycd.code.tex [2014/03/08 v0.9b Commutative diagrams with tikz] +% +% 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 % 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} +\usetikzlibrary{matrix,quotes,arrows.meta} \newif\iftikzcd@mathmode @@ -92,7 +92,8 @@ % The `tikzcd' environment \def\tikzcd{% - \pgfutil@ifnextchar&% + \iffalse{\fi\ifnum0=`}\fi% standard trick to allow nesting of tabular-like environments (cf. the tabularx manual) + \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@@}} @@ -100,8 +101,11 @@ \def\tikzcd@[#1]{% \tikzpicture[/tikz/commutative diagrams/.cd,every diagram,#1]% - \def\arrow{\tikzcd@arrow}% - \def\ar{\tikzcd@arrow}% + \ifx\arrow\tikzcd@arrow% + \pgfutil@packageerror{tikz-cd}{Diagrams cannot be nested}{} + \fi% + \let\arrow\tikzcd@arrow% + \let\ar\tikzcd@arrow% \def\rar{\tikzcd@xar{r}}% \def\lar{\tikzcd@xar{l}}% \def\dar{\tikzcd@xar{d}}% @@ -125,7 +129,8 @@ \tikzcd@patcherrmsg% \tikzcd@savedpaths% \endgroup% - \endtikzpicture} + \endtikzpicture% + \ifnum0=`{}\fi} % The arrow commands \def\tikzcd@arrow{% @@ -331,149 +336,31 @@ }% }% -% 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}} +% ConTeXt-specific stuff +\pgfutil@IfUndefined{starttikzpicture}{}{% + \def\starttikzcd{\tikzcd}% + \def\stoptikzcd{\endtikzcd}} +% Computer modern arrow tips \pgfkeys{ + cm to/.tip={Computer Modern Rightarrow[length=+0pt 6.2]}, + cm bold to/.tip={cm to[scale=0.667]}, + cm double to/.tip={cm to[sep=+0pt -2.6]cm to}, + cm bar/.tip={Bar[width=+0pt 8.2 0.89,line cap=round]}, + cm left hook/.tip={Hooks[width=+0pt 10.8,length=+0pt 3.6,harpoon,line cap=round]}, + cm implies/.tip={Implies}, 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 */.tip={Circle[length=+0pt 7.6]}, 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 math command/.code={% if csname #1 is undefined, we want it to remain so + \pgfarrowsaddtooptions{\def\tikzcd@glyph{$\begingroup\expandafter\endgroup\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}}}} @@ -496,27 +383,24 @@ \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 +% 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}}, + double line/.code={\tikzset{% + double equal sign distance, + double=\pgfkeysvalueof{/tikz/commutative diagrams/background color}}}, + dashed/.style={/tikz/dash pattern={on 7\pgflinewidth off 4\pgflinewidth}}, + tikzcd to/.tip={cm to}, + tikzcd bar/.tip={cm bar}, + tikzcd left hook/.tip={cm left hook}, + tikzcd double to/.tip={cm double to}, + tikzcd implies/.tip={Implies}, + tikzcd right hook/.tip={tikzcd left hook[swap]}, + tikzcd left to/.tip={tikzcd to[harpoon]}, + tikzcd right to/.tip={tikzcd left to[swap]}, + tikzcd to reversed/.tip={tikzcd to[reversed]}, + tikzcd cap/.tip={}, + tikzcd implies cap/.tip={}, + tikzcd implies bar/.tip={tikzcd bar}, no tail/.code={\pgfsetarrowsstart{tikzcd cap}}, to head/.code={\pgfsetarrowsend{tikzcd to}}, maps to/.code={\pgfsetarrowsstart{tikzcd bar}}, @@ -534,6 +418,8 @@ Leftrightarrow/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies-tikzcd implies}}, mapsto/.code={\pgfsetarrows{tikzcd bar-tikzcd to}}, mapsfrom/.code={\pgfsetarrows{tikzcd to-tikzcd bar}}, + Mapsto/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies bar-tikzcd implies}}, + Mapsfrom/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies-tikzcd implies 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}}, @@ -567,24 +453,25 @@ 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}}} + tikzcd bar/.tip={Bar[width=+0pt 12 .992,line cap=round]}, + tikzcd left hook/.tip={Hooks[width=+0pt 15,length=+0pt 4.2,arc=190,harpoon,line cap=round]}}} + +% The `tikz' arrow style +\pgfkeysdef{/tikz/commutative diagrams/arrow style/tikz}{% + \tikzcdset{ + tikzcd to/.tip={>}, + tikzcd bar/.tip={Bar[width=+3pt 4 0.9]}, + tikzcd left hook/.tip={Hooks[harpoon]}, + tikzcd double to/.tip={tikzcd to[]tikzcd to}}} % The `math font' arrow style % +% If your font does not define the command \mapsfrom, do so by saying +% \def\mapsfrom{\pgfpicture\pgfsetbaseline{+0pt}\pgftransformxscale{-1}\pgftext[base]{$\mapsto$}\endpgfpicture} +% % 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 @@ -592,20 +479,18 @@ % 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 bar/.tip={Glyph[glyph math command=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 implies bar/.tip={Glyph[glyph math command=Mapsfrom]}, 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]}, @@ -613,33 +498,6 @@ 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={ @@ -659,8 +517,7 @@ /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)}, + 1-row diagram/.style={/tikz/baseline/.expanded=(\tikzcdmatrixname.base)}, math mode=true, center yshift/.initial=axis_height, row sep/huge/.initial=+3.6em, |