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
orabove
並用於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}
結果: