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>可以立即帮助解决间距问题。这里实际上只需要进一步调整一下高度即可。剩下的只是调整标签的位置,例如belowabove并使用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

由于您正在做交换图,我建议您使用专用包,例如功能强大的tikz-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}

结果:

在此处输入图片描述

相关内容