以图画为对象的交换图

以图画为对象的交换图

我需要绘制一个以图形为对象的交换图,就像链接也显示在下面。

在此处输入图片描述

我有一些问题:

  1. xy-pic“倾斜”物体;
  2. TiKZ 中的“矩阵”库不愿意在我想要绘制的矩阵中包含其他 TiKZ 命令。

我该怎么办?这是对我的问题的初步回答:

\[
\xymatrix@C=2cm@M=3mm{
\begin{tikzpicture}
\filldraw[lightgray] (0,0) -- (2,0) -- (2,1) -- (0,1) -- cycle;
\draw (0,0) -- (2,0);
\draw (0,1) -- (2,1);
\end{tikzpicture} \ar@{->>}[r]
&
\begin{tikzpicture}
\draw[fill=lightgray] (0,0) ellipse (.5cm and .25cm);
\filldraw[lightgray] (-.5,0) -- (.5,0) -- (.5, .6) -- (-.5, .6) -- cycle;
\draw (-.5,0) -- (-.5, .6);
\draw (.5,0) -- (.5, .6);
\draw[fill=lightgray,yshift=.6cm] (0,0) ellipse (.5cm and .25cm);
\end{tikzpicture}
}\]

正如您所见,箭头“太低”。

答案1

您可以使用tikz-cd。它类似于tikzxy-matrix易于使用,并且相当灵活。以下是一个例子:

\documentclass{article}

\usepackage{tikz-cd}

\begin{document}

\pgfdeclareimage[interpolate=true]{image-name}{circle}

$$
\begin{tikzcd}
    \pgfuseimage{image-name} \rar[start anchor=real east] & \node[draw,circle]{A};
\end{tikzcd}
$$

\end{document}

请注意,您需要修改箭头的锚点(箭头的开始和结束位置),因为 中的节点的锚点tikz-cd由于技术原因发生了移动(参见包手册中的第 3.3 节)。左侧的圆圈是 定义的节点tikz-cd,因此需要进行调整。另一个是普通节点,因此无需进行调整。

另外,请注意,您可以使用pgf从单独的文件包含您的绘图(因为您似乎使用了多个文件)。这样做的好处是每个图像只包含在 PDF 文件中一次,并且可以多次使用而不会大大增加文件的大小。

编辑:示例

例子

用更精美的图形替换多边形,您可以用非常简单的代码获得非常漂亮的图表:

\documentclass{article}

\usepackage{tikz-cd}
\usetikzlibrary{shapes} % to draw polygons

\begin{document}

\[
\begin{tikzcd}
  \node[draw,regular polygon, regular polygon sides=5]{}; \rar{\varphi}
  \drar \arrow[bend right=50]{d} &
  \node[draw,circle]{}; \dlar[crossing over] \\
  \node[draw,regular polygon, regular polygon sides=6]{}; \arrow{r}[description]{\psi} &
  \node[draw,circle]{};
\end{tikzcd}
\]

\end{document}

另外,我想强调一下我在一条评论中写的内容,tikz-cd改变箭头参数(当然只在图表中),使箭头看起来确切地就像包装上的箭头一样amsmath。非常重要...

相关内容