tikz中大节点之间的直边

tikz中大节点之间的直边

我有两个矩形节点,想在它们之间放置一条边。我希望边的箭头位于下节点的顶部中心和左上角之间。我尝试通过指定入角和出角来实现这一点,但是,这会使线弯曲并使箭头看起来非常难看:

在此处输入图片描述

代码:

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \node[draw,rectangle] (u1) at (3,8) {run $A$};
    \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)\\in V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
    \draw (u1) edge[->,>=latex,out=225,in=150] (nextYES);
  \end{tikzpicture}
\end{frame}
\end{document}

有没有办法让边缘变直,并将边缘固定在当前点(或附近的某个地方)并且根本不转动箭头?

答案1

使用inout将产生一条弯曲的路径;要获得符合要求规格的直线,您有几种可能性:

  1. 使用<point>.<angle>锚点:

    \documentclass{beamer}
    \usepackage{tikz}
    \begin{document}
    \begin{frame}
      *\begin{tikzpicture}
        \node[draw,rectangle] (u1) at (3,8) {run $A$};
        \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)$\\in $V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
        \draw (u1.230) edge[->,>=latex] (nextYES.140);
      \end{tikzpicture}
    \end{frame}
    \end{document}
    

    在此处输入图片描述

  2. 使用(可能的转变)和锚点:

    \documentclass{beamer}
    \usepackage{tikz}
    \begin{document}
    \begin{frame}
      \begin{tikzpicture}
        \node[draw,rectangle] (u1) at (3,8) {run $A$};
        \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)$\\in $V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
        \draw (u1.south) edge[->,>=latex] (nextYES.north west);
      \end{tikzpicture}
    \end{frame}
    \end{document}
    

    在此处输入图片描述

    \documentclass{beamer}
    \usepackage{tikz}
    \begin{document}
    \begin{frame}
      \begin{tikzpicture}
        \node[draw,rectangle] (u1) at (3,8) {run $A$};
        \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)$\\in $V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
        \draw ([xshift=15pt]u1.south west) edge[->,>=latex] ([xshift=15pt]nextYES.north west);
      \end{tikzpicture}
    \end{frame}
    \end{document}
    

    在此处输入图片描述

  3. 使用该calc库来获取一些中间点(这里可能有点过度):

    \documentclass{beamer}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \begin{document}
    \begin{frame}
      \begin{tikzpicture}
        \node[draw,rectangle] (u1) at (3,8) {run $A$};
        \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)$\\in $V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
        \draw 
        ( $ (u1.south west)!0.25!(u1.south east) $ ) edge[->,>=latex] 
        ( $ (nextYES.north west)!0.15!(nextYES.north east) $ );
      \end{tikzpicture}
    \end{frame}
    \end{document}
    

    在此处输入图片描述

答案2

也许你想要直线,而不是两点之间的一条线?例如:

直行转弯

我之所以建议这样做,是因为我可以看到在这种情况下尝试in-角度的逻辑。out

如果是这样,您可以使用如下方法:

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \node[draw,rectangle] (u1) at (3,8) {run $A$};
    \node[draw,rectangle,align=left] (nextYES) at (3,6.5) {choose $(x,y,z)$\\$in V_{\mathbb{H}^3{'}}$\\ with $|L(x,y,z)| > 1$};
    \draw [->,>=latex] (u1.south) -- +(0,-5pt) -| ([xshift=5pt]nextYES.north west);
  \end{tikzpicture}
\end{frame}
\end{document}

\\请注意,您不能在 内使用$...$。如果需要中断,则需要退出数学模式,中断行并重新进入数学模式。

相关内容