新手想要使用 TikZ 创建交换图时,会面临多种(非统一)的方法。我发现了创建交换图的简单方法:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
$$\begin{tikzpicture}[node distance=2cm, auto]
\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}
我希望将其改编为我自己的交换图。代码如下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
$$\begin{tikzpicture}[node distance=2cm, auto]
\node (V) {$V$};
\node (FAI) [right of= V] {$FAI(V)$};
\node (CL) [below of= FAI] {$CL(V,q)$};
\draw[->] (V) to node (FAI);
\draw[->, dashed] (FAI) to node (CL);
\draw[->] (V) to node (CL);
\end{tikzpicture}$$
\end{document}
但是,我的图表产生了编译错误:“包 tikz 错误:(预期为、+、坐标、pic 或节点。”
在阅读 TeX 时,我注意到用户推荐使用其他方法来绘制交换图。
- 当前的最佳实践是什么(最佳使用的软件包等)
- 我如何使用这些最佳实践方法来完成我的(简单)交换图?
答案1
这是我的版本tikz-cd
. 创建简单和复杂的交换图非常容易。
建议:不要担心背景,因为它不会出现。您的初始代码是这样的关联。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
V \arrow[r] \arrow[rdd] & FAI(V) \arrow[dd, dotted] \\
& \\
& CL(V,q)
\end{tikzcd}
\end{document}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
C \arrow[d, "\langle f_i \rangle_{i \in I}"', dotted] \arrow[rd, "f_i"] & \\
\prod_{i \in I} A_i \arrow[r, "\pi_i"'] & A_i
\end{tikzcd}
\end{document}
答案2
您的代码几乎是正确的,您只是忘记了节点的文本标签。
你的是这样的:
\draw[->] (V) to node (FAI);
但必须是这样的:
\draw[->] (V) to node {} (FAI);
或者像这样:(感谢@PaulGaborit)
\draw[->] (V) to (FAI);
我做了三处更正。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
$$\begin{tikzpicture}[node distance=2cm, auto]
\node (V) {$V$};
\node (FAI) [right of= V] {$FAI(V)$};
\node (CL) [below of= FAI] {$CL(V,q)$};
\draw[->] (V) to (FAI);% corrected here
\draw[->, dashed] (FAI) to (CL);% here
\draw[->] (V) to (CL);% and here
\end{tikzpicture}$$
\end{document}