Категориальный продукт в tikz?

Категориальный продукт в tikz?

В tikz есть много примеров копродукта с прямыми краями, однако я не могу найти ни одного (который работает) или без специального пакета (кроме tikz) для продукта. Я бы просто хотел иметь возможность воспроизвести эту картинкупродуктв tikz или, возможно, другим методом, который легко понять, чтобы обновлять и добавлять стрелки при необходимости.

Я попытался превратить следующее в диаграмму, которую я хотел бы, однако все стрелки и все остальное сталкивались вместе (стрелки были очень маленькими). ​​Моя мысль была расширить $\prod_{i \in I} A_i$ влево, а затем, конечно, изменить символы. Обратите внимание, что я получил следующее изздесь:

\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}

решение1

Что-то вроде этого?

Обратите внимание, что использование библиотеки positioningи обновленного синтаксиса <direction>=of <place>немедленно помогает с интервалами. Только одна дополнительная корректировка действительно потребовалась здесь, чтобы немного увеличить высоту. Остальное — это просто вопрос настройки положения меток, например, belowили aboveи использования slopedдля 2, требующих эту опцию.

\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}

продукт

решение2

Поскольку вы создаете коммутативные диаграммы, я бы посоветовал вам использовать специальный пакет, такой как PowerTtikz-cd(построенный на основе TikZ), который предлагает вам более удобный, чистый и короткий синтаксис, а также готовые к использованию функции для ваших диаграмм. Небольшой пример с вашим продуктом:

\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}

Результат:

введите описание изображения здесь

Связанный контент