作为参考,我正在尝试重新创建 1931 年论文中的这张图表。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows,arrows.meta}
\begin{document}
\tikzstyle{circlelined} = [circle, minimum width=6em, text centered, draw=black, ultra thick]
\tikzstyle{circledashed} = [dashedlong, circle, minimum width = 6em, text centered, draw=black, thick]
\tikzstyle{circleblank} = [circle, minimum width=6em]
\tikzstyle{dashedlong}= [dash pattern=on 22pt off 4pt]
\tikzstyle{dashedlong2}= [dash pattern=on 18pt off 4pt]
% \tikzstyle{box4} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black,fill=orange!50]
% \tikzstyle{boxA} = [rectangle, minimum width=3cm, minimum height=1.3cm, text centered, draw=black,fill=pink!80]
\tikzstyle{arrow} = [ultra thick,->,>={Latex[scale=1]},line width=2.5pt]
\tikzstyle{arrowdashed} = [thick, dashedlong2 ,->,>={Latex[scale=2]},line width=1pt]
\begin{tikzpicture}[node distance=12em,thick]
%------------------------------------------------------------
% NODE SETUP
%------------------------------------------------------------
\node (CBL) [circleblank] {};
\node (C1) [circlelined, right of = CBL] {};
\node (C2) [circlelined, right of = C1] {};
\node (C3) [circlelined, right of = C2] {};
\node (C4) [circlelined, right of = C3] {};
\node (CBR) [circleblank, right of = C4] {};
\node (CB1) [circledashed, below of = C1] {};
\node (CB3) [circledashed, below of = C3] {};
\node (CA2) [circledashed, above of = C2] {};
\node (CA4) [circledashed, above of = C4] {};
\node[circleblank] (l2) at (30em,-8em) {\fontsize{20}{22.4}\selectfont$\ell_{\scriptscriptstyle 2}$};
\node[circleblank] (l1) at (54em,6em) {\fontsize{20}{22.4}\selectfont$\ell_{\scriptscriptstyle 1}$};
%------------------------------------------------------------
%------------------------------------------------------------
% LINES
%------------------------------------------------------------
\draw[draw=black, thick] ([xshift=-24em]C1.center) -- (CBR.east);
\draw[draw=black, ultra thick] ([xshift=-24em, yshift=18em]C1.center) -- ([xshift=-24em, yshift=-18em]C1.center);
\draw[draw=black, dashedlong2, thick] (C2.center) -- ([xshift=12em, yshift=4em]CB1.center);
\draw[draw=black, dashedlong2, thick] (CA4.center) -- ([yshift=6em]l1.center);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FROM CIRCLES
%------------------------------------------------------------
\draw[arrow] (C1.center) -- node[anchor=north, xshift=-1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=3em]CBL.east);
\draw[arrow] (C2.center) -- node[anchor=north, xshift=1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=-3em]C3.west);
\draw[arrow] (C3.center) -- node[anchor=north, xshift=-1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=3em]C2.east);
\draw[arrow] (C4.center) -- node[anchor=north, xshift=1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=-3em]CBR.west);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FROM DASHED CIRCLES
%------------------------------------------------------------
\draw[arrowdashed] (CB1.center) -- (C1.center);
\draw[arrowdashed] (CB3.center) -- (C3.center);
\draw[arrowdashed] (CA2.center) -- (C2.center);
\draw[arrowdashed] (CA4.center) -- (C4.center);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FOR u,v,l
%------------------------------------------------------------
% First 'v' arrow
\draw[arrow] ([xshift=6em]C1.center) -- node[anchor=north, yshift=-3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = 6em]CB1.center);
% Second 'v' arrow
\draw[arrow] ([xshift=6em]C2.center) -- node[anchor=south, yshift=3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = -6em]CA2.center);
% Third 'v' arrow
\draw[arrow] ([xshift=6em]C1.center) -- node[anchor=north, yshift=-3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = 6em]CB1.center);
% 'l_2' arrows
\draw[arrow] ([xshift=-2em]l2.center) --([xshift=12em, yshift=4em]CB1.center);
\draw[arrow] ([xshift=2em]l2.center) --([yshift=4em]CB3.center);
% 'l_1' arrows
\draw[arrow] ([yshift=2em]l1.center) --([yshift=6em]l1.center);
\draw[arrow] ([yshift=-2em]l1.center) --([yshift=-6em]l1.center);
%------------------------------------------------------------
%------------------------------------------------------------
% Curved Arrows
%------------------------------------------------------------
\draw[arrow]
(C1) ++(-0.75,0.25) arc (135:65:1 and 2) -- ++(-45:13pt);
\draw[arrow]
(C3) ++(-0.75,0.25) arc (135:65:1 and 2) -- ++(-45:13pt);
\draw[arrow]
(C2) ++(0.75,0.25) arc (45:115:1 and 2) -- ++(-135:13pt);
%------------------------------------------------------------
\end{tikzpicture}
\end{document}
但结果并没有那么糟糕,弧线上的箭头坐好很乏味,但可能有一个更简单、看起来也更好的方法。
有没有替代弧? 这些替代方案与节点兼容吗?任何可以绘制曲线的东西都很好,因为我目前还不知道如何开始绘制半抛物线曲线(而且这可能非常容易做到)。
非常感谢肯
答案1
我在这里重点介绍弧线(而不是字体大小等)。首先,您可能想要弯曲箭头。这需要库bending
并添加bend
到箭头中,例如
\tikzset{arrow/.style={ultra thick,->,>={Latex[scale=1,bend]},line width=2.5pt}}
(我切换到的\tikzset
as\tikzstyle
已被弃用)。然后你的箭头可以循环绘制,只需说
\foreach \X in {1,2,3} {\draw[arrow] (C\X) ++(170:0.75) arc (170:10:0.75);}
170
这里我用的是极坐标。如果你想让这些箭头更长或更短,可以调整极坐标角和的范围10
。
这是 MWE(您可以通过使用更多\foreach
循环来避免一些重复)。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows.meta,bending}
\begin{document}
\tikzset{circlelined/.style={circle, minimum width=6em, text centered, draw=black, ultra thick},
circledashed/.style={dashedlong, circle, minimum width = 6em, text centered, draw=black, thick},
circleblank/.style={circle, minimum width=6em},
dashedlong/.style={dash pattern=on 22pt off 4pt},
dashedlong2/.style={dash pattern=on 18pt off 4pt},
arrow/.style={ultra thick,->,>={Latex[scale=1,bend]},line width=2.5pt},
arrowdashed/.style={thick, dashedlong2 ,->,>={Latex[scale=2,bend]},line width=1pt}}
\begin{tikzpicture}[node distance=12em,thick]
%------------------------------------------------------------
% NODE SETUP
%------------------------------------------------------------
\node (CBL) [circleblank] {};
\node (C1) [circlelined, right of = CBL] {};
\node (C2) [circlelined, right of = C1] {};
\node (C3) [circlelined, right of = C2] {};
\node (C4) [circlelined, right of = C3] {};
\node (CBR) [circleblank, right of = C4] {};
\node (CB1) [circledashed, below of = C1] {};
\node (CB3) [circledashed, below of = C3] {};
\node (CA2) [circledashed, above of = C2] {};
\node (CA4) [circledashed, above of = C4] {};
\node[circleblank] (l2) at (30em,-8em) {\fontsize{20}{22.4}\selectfont$\ell_{\scriptscriptstyle 2}$};
\node[circleblank] (l1) at (54em,6em) {\fontsize{20}{22.4}\selectfont$\ell_{\scriptscriptstyle 1}$};
%------------------------------------------------------------
%------------------------------------------------------------
% LINES
%------------------------------------------------------------
\draw[draw=black, thick] ([xshift=-24em]C1.center) -- (CBR.east);
\draw[draw=black, ultra thick] ([xshift=-24em, yshift=18em]C1.center) -- ([xshift=-24em, yshift=-18em]C1.center);
\draw[draw=black, dashedlong2, thick] (C2.center) -- ([xshift=12em, yshift=4em]CB1.center);
\draw[draw=black, dashedlong2, thick] (CA4.center) -- ([yshift=6em]l1.center);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FROM CIRCLES
%------------------------------------------------------------
\draw[arrow] (C1.center) -- node[anchor=north, xshift=-1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=3em]CBL.east);
\draw[arrow] (C2.center) -- node[anchor=north, xshift=1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=-3em]C3.west);
\draw[arrow] (C3.center) -- node[anchor=north, xshift=-1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=3em]C2.east);
\draw[arrow] (C4.center) -- node[anchor=north, xshift=1em,yshift = -1em]{\fontsize{20}{22.4}\selectfont$u$}([xshift=-3em]CBR.west);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FROM DASHED CIRCLES
%------------------------------------------------------------
\draw[arrowdashed] (CB1.center) -- (C1.center);
\draw[arrowdashed] (CB3.center) -- (C3.center);
\draw[arrowdashed] (CA2.center) -- (C2.center);
\draw[arrowdashed] (CA4.center) -- (C4.center);
%------------------------------------------------------------
%------------------------------------------------------------
% ARROWS FOR u,v,l
%------------------------------------------------------------
% First 'v' arrow
\draw[arrow] ([xshift=6em]C1.center) -- node[anchor=north, yshift=-3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = 6em]CB1.center);
% Second 'v' arrow
\draw[arrow] ([xshift=6em]C2.center) -- node[anchor=south, yshift=3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = -6em]CA2.center);
% Third 'v' arrow
\draw[arrow] ([xshift=6em]C1.center) -- node[anchor=north, yshift=-3em]{\fontsize{20}{22.4}\selectfont$v$}([xshift=6em, yshift = 6em]CB1.center);
% 'l_2' arrows
\draw[arrow] ([xshift=-2em]l2.center) --([xshift=12em, yshift=4em]CB1.center);
\draw[arrow] ([xshift=2em]l2.center) --([yshift=4em]CB3.center);
% 'l_1' arrows
\draw[arrow] ([yshift=2em]l1.center) --([yshift=6em]l1.center);
\draw[arrow] ([yshift=-2em]l1.center) --([yshift=-6em]l1.center);
%------------------------------------------------------------
%------------------------------------------------------------
% Curved Arrows
%------------------------------------------------------------
\foreach \X in {1,2,3}
{\draw[arrow]
(C\X) ++(170:0.75) arc (170:10:0.75);}
%------------------------------------------------------------
\end{tikzpicture}
\end{document}