对齐三角形和矩形的底边

对齐三角形和矩形的底边

我正在使用 TikZ 绘制流程图。我的代码如下:

\documentclass{minimal}

\usepackage[a4paper, landscape]{geometry}
\usepackage{tikz}

\usetikzlibrary{shapes.geometric}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
  [queue/.style={isosceles triangle,isosceles triangle apex angle=60,
     anchor=north,shape border rotate=90,draw,minimum width=15mm},
   activity/.style={rectangle,draw,
     anchor=north,minimum width=25mm,minimum height=15mm,
     text width=20mm,align=center}]
  \node[queue]    (tortilla queue) at (0,0) [label=below:queue 1]
      {wait};
  \node[activity] (tortilla station) [right=of tortilla queue]
      {tortilla\\station};

  \draw [->] (tortilla queue.east) -- (tortilla station.west);
\end{tikzpicture}
\end{document}

这是输出

在此处输入图片描述

输出的问题是我希望三角形的底边与矩形的底边对齐。我该怎么做?

我尝试过改变anchor或 使用 ,yshift但不起作用。当然我可以手动放置节点,但这会弄乱箭头的位置。

答案1

位置

您可以将矩形放置在三角形的右下角,并指定south west为矩形的锚点,即

right=of tortilla queue.right corner,anchor=south west

请注意,必须指定锚点 定位,就像right=of...自动设置锚点一样。

还要注意,为了使箭头水平,我使用了 -|,即

\draw [->] (tortilla queue.east) -- (tortilla queue.east -| tortilla station.west);

从 画一条线到 从画出的一条水平线与从 画出的一条垂直线tortilla queue.east的交点。tortilla queue.easttortilla station.west

如果您愿意,您可以使用该intersections库找到水平线tortilla station.west与三角形最近边的交点,从而从矩形的垂直中心获得一个水平箭头。

另类queue风格

为了使文本在三角形中更居中,您可以使用形状regular polygon,而不是isosceles triangle。这将为角点提供不同的名称,右下角为corner 3。因此,例如

queue/.style={regular polygon,regular polygon sides=3,draw,minimum width=15mm,inner sep=1pt}

完整代码

有三种不同的选项。截图如下。

\documentclass[border=2mm]{standalone}

\usepackage{tikz}

\usetikzlibrary{shapes.geometric}
\usetikzlibrary{positioning,intersections}

\begin{document}
\begin{tikzpicture}
  [queue/.style={regular polygon,regular polygon sides=3,draw,minimum width=15mm,inner sep=1pt},
  old queue/.style={isosceles triangle,isosceles triangle apex angle=60,
         anchor=north,shape border rotate=90,draw,minimum width=15mm},
   activity/.style={rectangle,draw,
     anchor=north,minimum width=25mm,minimum height=15mm,
     text width=20mm,align=center}]

  % original queue style  
  \node[old queue]    (tortilla queue) at (0,0) [label=below:queue 1]
        {wait};
  \node[activity] (tortilla station) [right=of tortilla queue.right corner,anchor=south west]
        {tortilla\\station};

    \draw [->] (tortilla queue.east) -- (tortilla queue.east -| tortilla station.west);     


  % new queue style     
  \node[queue]    (tortilla queue) at (0,-3) [label=below:queue 1]
      {wait};
  \node[activity] (tortilla station) [right=of tortilla queue.corner 3,anchor=south west]
      {tortilla\\station};

  \draw [->] (tortilla queue.east) -- (tortilla queue.east -| tortilla station.west);


  % new queue style, and arrow to center of rectangle
  \node[queue]    (tortilla queue) at (0,-5.4) [label=below:queue 1]
      {wait};
  \node[activity] (tortilla station) [right=of tortilla queue.corner 3,anchor=south west]
      {tortilla\\station};

  \path [name path=from rect] (tortilla station.west) -| (tortilla queue.corner 1);
  \path [name path=triangle side] (tortilla queue.corner 1) -- (tortilla queue.corner 3);

  \draw [->,name intersections={of=from rect and triangle side}] (intersection-1) -- (tortilla station.west);

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容