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>すぐに間隔を調整できることに注意してください。ここでは、高さを少し増やすためにさらに 1 つの調整のみが必要でした。残りは、ラベルの位置を微調整するだけです (例: または )。belowまた、そのオプションを必要とする 2 にはaboveを使用しますsloped

\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

可換図を書いているので、powerfultのような専用パッケージを使うことをお勧めします。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}

結果:

ここに画像の説明を入力してください

関連情報