tikz 交换图 - 编译和最佳实践

tikz 交换图 - 编译和最佳实践

新手想要使用 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. 当前的最佳实践是什么(最佳使用的软件包等)
  2. 我如何使用这些最佳实践方法来完成我的(简单)交换图?

答案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}

相关内容