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 positioning
biblioteca 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, below
ou above
e usar sloped
para 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}
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: