Skip to content

Drawing commutative diagrams with TikZ #214

@platipo

Description

@platipo

The images are quite nice but sometimes they feel kinda cheap. It would be nice if they could be redrawn with TikZ.
This would give a touch of class to a book that is already beautiful.

Example:
scanned diagram

Simple solution:
TikZ-diagram-simple

\begin{tikzcd}[commutative diagrams/every, column sep=small, cells={nodes={inner color=blue!20!white,outer color=white}}]
    & & Arr\otimes Arr \arrow[dr] \arrow[dl] \arrow[d, phantom, "\vee", very near start,font=\Large] & & \\
    & Arr \arrow[dl, swap, "dom"] \arrow[dr, swap, "cod"] & & Arr \arrow[dl, swap, "dom"] \arrow[dr, swap, "cod"] & \\
    Ob & & Ob & & Ob \\
\end{tikzcd}

And a more complex one:
TikZ-diagram-complex

\begin{tikzpicture}[commutative diagrams/every, column sep=small, cells={nodes={inner color=blue!20!white,outer color=white}}]
    \def\colspace{1.2}
    \def\rowspace{1.5}
    \node[inner color=purple!50!blue!20!white,outer color=white] (P0) at (2*\rowspace, 2*\colspace) {$Arr\otimes Arr$};
    \node[inner color=purple!50!blue!20!white,outer color=white] (P1) at (1*\rowspace, 1*\colspace) {$Arr$};
    \node[inner color=purple!50!blue!20!white,outer color=white] (P2) at (3*\rowspace, 1*\colspace) {$Arr$};
    \node[inner color=blue!30!white,outer color=white] (P3) at (0*\rowspace, 0*\colspace) {$Ob$};
    \node[inner color=blue!30!white,outer color=white] (P4) at (2*\rowspace, 0*\colspace) {$Ob$};
    \node[inner color=blue!30!white,outer color=white] (P5) at (4*\rowspace, 0*\colspace) {$Ob$};
    \node (P0b) at (2*\rowspace, 1.7*\colspace) {\rotatebox[origin=c]{180}{ $\mathbf{\widehat{}}$}};

    \path[commutative diagrams/.cd,every arrow, every label]
        (P0) edge node {} (P1)
        (P0) edge node {} (P2)
        (P1) edge node[swap] {$dom$} (P3)
        (P1) edge node[swap] {$cod$} (P4)
        (P2) edge node[swap] {$dom$} (P4)
        (P2) edge node[swap] {$cod$} (P5)
\end{tikzpicture}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions