我还没有找到适合我的情况的答案。我需要用弯曲的箭头连接两个矩形,穿过第三个矩形的右下角,避开文本。
我正在使用特定于大学的文档类型,因此希望下面的 MWE 可以使用普通文档样式。
\documentclass[a4paper,10pt]{article}
\usepackage[english]{babel}
\usepackage{amsmath,amsthm}
\usepackage{amsfonts}
\usepackage[a4paper,layout=a4paper,
bindingoffset=4cm,left=0cm,right=2cm,
head=2.5cm, bmargin=2cm]{geometry}
\usepackage{microtype}
\usepackage{verbatim}
\usepackage{graphicx}
\usepackage{url}
\usepackage[round]{natbib}
\usepackage{listings}
\usepackage{booktabs}
\usepackage{multirow}
\RequirePackage[l2tabu, orthodox]{nag}
\usepackage{tikz}
\usetikzlibrary{arrows, shapes, chains, fit, backgrounds, calc, decorations.pathreplacing, matrix}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage[flushleft]{threeparttable}
\usepackage[inline, shortlabels]{enumitem}
\usepackage{tikzlings}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{tikzpicture}[every node/.style=draw, align=center, arrow/.style={thick, -stealth}]
\node[rectangle, fill=white] (PSRW) {One \\ two three \\ four five \\ six};
\node [right, single arrow, inner sep = 10pt, minimum height=1cm, rotate=-45, above left = of PSRW, xshift=1cm, yshift=-.3cm] (NW) {};
\cat[scale=0.6, above right = of PSRW, xshift=10cm, yshift=0cm] (ACat) {};
\mouse[scale=0.5, above right = of PSRW, xshift=13.5cm, yshift=0cm] (AMouse) {};
\node[draw=none, text width=2cm, above right = of PSRW, xshift = 6cm, yshift=-2.5cm] (Imp) {Seven \\ Eight \\ Nine \\ Ten \\ Eleven};
\node[draw=none, text width=2.5cm, below = 3cm of PSRW] (SC) {Twelve \\ Thirteen};
% lines here omitted for brevity
\node[draw=none, text width=1cm, above right = of SC, xshift=1cm, yshift=-.8cm] (TI) {Twelve, \\ thirteen};
\end{tikzpicture}
\caption{Horrible part diagram of hand drawn one}
\label{fig:ThisDiagramIsDrivingMeToDrink}
\end{figure}
\end{document}
问题是我需要画一个箭从鼠标的左侧开始,穿过 PSRW 矩形的右下角,并连接到 TI 框的西北。我想使用相对于 PRSW 框内部右下角的坐标系。我想我的主管可能不喜欢我的小图像,所以那里的细节可能会发生变化,我不想重写一堆坐标来处理任何变化。
我试过:
\draw[arrow] ([xshift=-3cm]Imp.west) to [bend right, looseness=2] (TI.west);
我已经看到过基于相对于底层几何的相对坐标的答案,但没有看到过基于相对于可能改变位置的多边形的相对坐标的答案。
也许我见过的最接近的答案是针对相反的问题这样曲线就位于多边形之外。其他答案往往像这样,用曲线直接连接两点。
由于学术付费墙,我无法展示我试图复制的实际(手写)图表。但如果你们中有谁可以访问 Peter Checkland 关于软系统方法论的著作,我会尝试使用 Tikz 复制他的双流图。
由于图表的复杂性,以及我不断需要调整其各个部分以适合页面,所以我必须先放置多边形,然后再放置箭头。
答案1
喵呜,你可以通过这些坐标绘制出平滑的图。
\draw[thick,-stealth] plot[smooth] coordinates
{([yshift=3mm,xshift=-1mm]tikzlings.south west) ([xshift=-1mm,yshift=1mm]PSRW.south east) (TI.north west)};
完整代码:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{shapes.arrows,positioning}
\usepackage{tikzlings}
\begin{document}
\begin{tikzpicture}[every node/.style=draw, align=center, arrow/.style={thick, -stealth}]
\node[rectangle, fill=white] (PSRW) {One \\ two three \\ four five \\ six};
\node[single arrow, inner sep = 10pt, minimum height=1cm, rotate=-45, above
left =9mm and 4mm of PSRW.north west,anchor=north] (NW) {};
\begin{scope}[local bounding box=tikzlings]
\cat[scale=0.6, above right = of PSRW, xshift=10cm, yshift=0cm] (ACat) {};
\mouse[scale=0.5, above right = of PSRW, xshift=13.5cm, yshift=0cm] (AMouse) {};
\end{scope}
\node[draw=none, text width=2cm, above right = of PSRW, xshift = 6cm, yshift=-2.5cm] (Imp) {Seven \\ Eight \\ Nine \\ Ten \\ Eleven};
\node[draw=none, text width=2.5cm, below = 3cm of PSRW] (SC) {Twelve \\ Thirteen};
\node[draw=none, text width=1cm, above right = of SC, xshift=1cm, yshift=-.8cm] (TI) {Twelve, \\ thirteen};
\draw[thick,-stealth] plot[smooth] coordinates
{([yshift=3mm,xshift=-1mm]tikzlings.south west) ([xshift=-1mm,yshift=1mm]PSRW.south east) (TI.north west)};
\end{tikzpicture}
\end{document}