如何在 TikZ 中创建粘贴图表?

如何在 TikZ 中创建粘贴图表?

我一直在考虑从 切换到Xy-picTikZ满足我所有的图表绘制需求,但对我来说非常重要的一个功能是能够创建 2 分类粘贴图表(就像 Wikipedia 上关于2-类别),就像我可以使用 的Xy-pic“twocell”命令一样(顺便说一句,我发现处理起来非常麻烦)。我如何在 中执行这些操作TikZ?只要有相关命令的参考或arXiv有很好示例的论文,我就很高兴了。

答案1

正如之前所说,在 TikZ 中制作粘贴图表非常简单;我认为对于复杂的图表来说,这比在 xypic 中更容易,因为可以轻松地将 2 单元格箭头准确地放置在您想要的位置和正确的方向上。放置它们的一个有用技巧是重心坐标;然后,一旦您在 2 单元格箭头的中心获得了一个节点/坐标,您就可以使用调整来+(0,0.2)到达起点和终点。

然而,一个重大问题是,据我所知,在当前 CVS 版本之前的 TikZ 版本中,没有很好的方法来绘制双轴箭头,就像粘贴图表中用于 2 单元格的箭头一样。在 CVS 版本的 TikZ 中,您可以说\draw[double,-implies],但这不会为拥有较旧的“已发布”版本的 TikZ 的任何人(例如 arXiv 或期刊编辑)编译。出于这个原因,我个人不会从 xypic 切换到 TikZ 来粘贴图表,直到下一个版本的 TikZ 发布并且至少变得更加广泛可用。

答案2

对于这样的粘贴图2-类别,您可以使用弯曲箭头和中间坐标进行定位。我建议

  • 为尽可能多的元素定义样式,以便于使用
  • 为重复使用的操作定义宏

下面是我这样做的一个例子。在这里,它最终变得非常简单\connect{node1}{node2}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}

\newcommand{\connect}[2]{%
  \draw[-angle 60] (#1) to [above] coordinate[midway] (#1#2+) (#2) ;
  \draw[-angle 60] (#1) to [below] coordinate[midway] (#1#2-) (#2);
  \draw (#1) to coordinate[midway] (#1#2=) (#2);
  \draw[double shafted] (#1#2+) -- (#1#2=);
  \draw[double shafted] (#1#2-) -- (#1#2=);
}

\begin{document}
\begin{tikzpicture}[%
  every node/.style={circle,inner sep=2pt,fill},
  node distance=5em,
  above/.style={bend left=70,looseness=2},
  below/.style={bend right=70,looseness=2},
  double shafted/.style={-implies,double,double equal sign distance,
    shorten >=2pt, shorten <=3pt}]
  \node (a) {};
  \node[right of =  a] (b) {};
  \node[right of =  b] (c) {};
  \connect{a}{b}
  \connect{b}{c}
\end{tikzpicture}
\end{document}

粘贴图

答案3

交换图能同样好用吗?如果能,请参阅。TikZ matrix“环境”也是一个值得观察的好地方。

相关内容