我有两个矩形节点,想在它们之间放置一条边。我希望边的箭头位于下节点的顶部中心和左上角之间。我尝试通过指定入角和出角来实现这一点,但是,这会使线弯曲并使箭头看起来非常难看:
代码:
\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
使用in
,out
将产生一条弯曲的路径;要获得符合要求规格的直线,您有几种可能性:
使用
<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}
使用(可能的转变)和锚点:
\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}
使用该
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}
\\
请注意,您不能在 内使用$...$
。如果需要中断,则需要退出数学模式,中断行并重新进入数学模式。