Produto categórico em tikz?

Produto categórico em tikz?

Existem muitos exemplos do coproduto no tikz com bordas retas, porém não consigo encontrar nenhum (que funcione) ou sem embalagem especial (além do tikz) para o produto. Gostaria apenas de poder reproduzir esta imagem de umprodutosno tikz, ou possivelmente outro método que seja fácil de entender para atualizar e adicionar setas, se necessário.

Tentei transformar o seguinte no diagrama que gostaria, porém todas as setas e tudo mais ficam juntas (as setas são extremamente pequenas). Meu pensamento era estender $\prod_{i \in I} A_i$ para a esquerda e, é claro, alterar os símbolos. Observe que recebi o seguinte deaqui:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \node (C) {$C$};
  \node (P) [below of=C] {$\prod_{i \in I} A_i$};
  \node (Ai) [right of=P] {$A_i$};
  \draw[->] (C) to node {$f_i$} (Ai);
  \draw[->, dashed] (C) to node [swap] {$\langle f_i \rangle_{i \in I}$} (P);
  \draw[->] (P) to node [swap] {$\pi_i$} (Ai);
\end{tikzpicture}
\end{document}

Responder1

Algo assim?

Observe que o uso da positioningbiblioteca e da sintaxe atualizada <direction>=of <place>ajuda imediatamente no espaçamento. Apenas mais um ajuste foi realmente necessário aqui para aumentar um pouco a altura. O resto é apenas uma questão de ajustar a posição dos rótulos, por exemplo, belowou abovee usar slopedpara os 2 que exigem essa opção.

\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
  \node (s) {$S$};
  \node (xy) [below=2 of s] {$X \times Y$};
  \node (x) [left=of xy] {$X$};
  \node (y) [right=of xy] {$Y$};
  \draw[->] (s) to node [sloped, above] {$f_y$} (y);
  \draw[<-] (x) to node [sloped, above] {$f_x$} (s);
  \draw[->, dashed] (s) to node {$(f_x,f_y)$} (xy);
  \draw[->] (xy) to node [below] {$\pi_X$} (x);
  \draw[->] (xy) to node [below] {$\pi_Y$} (y);
\end{tikzpicture}
\end{document}

produtos

Responder2

Como você está fazendo diagramas comutativos, sugiro que você use um pacote dedicado, como o poderosotikz-cd(construído em TikZ) que oferece uma sintaxe mais conveniente, mais limpa e mais curta, bem como recursos prontos para usar para seus diagramas. Um pequeno exemplo com seu produto:

\documentclass[border=5pt]{standalone}
\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}[row sep=huge]
  & S\ar[dl,"f_{x}",swap,sloped] \ar[dr,"f_{y}",sloped] \ar[d,dashed,"{(f_{x},f_{y})}" description] & \\
X & X\times Y\ar[l,"\pi_{X}"] \ar[r,"\pi_{Y}",swap] & Y
\end{tikzcd}
\end{document}

O resultado:

insira a descrição da imagem aqui

informação relacionada