答案1
为了进行比较,这里有一个TikZ
使用 的纯解决方案double
。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[very thick]
\draw[double distance=3pt, looseness=3](-.5,.5)--(-1,1)to[out=135,in=45](1,1)--(-1,-1)to[out=225,in=-45](1,-1)--(.5,-.5)
(-.75,-.75){[looseness=1]to[out=135,in=225](-.75,.75)};
\draw[double distance=3pt] (-.5,.5)--(.5,-.5); % overcross
\end{tikzpicture}
\end{document}
答案2
我知道这已经过时了,但这里有一个简单的方法元帖子以防万一对任何人有用。制作具有随机宽度的线条有点困难,但只需通过过度绘制路径交叉的部分即可轻松进行交叉。
这里我稍微作弊了,因为我知道路径必须在原点处相交。对于更通用的方法,您可以使用循环的intersectiontimes
和subpath
部分来计算交点。
使用以下命令进行编译lualatex
:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
path foo, bar, baz;
foo = (origin .. up {right} .. tension 3/2 .. down {right} .. cycle) xscaled 42 yscaled 18;
bar = point 1/4 of foo {direction 1/4 of foo rotated 90} .. point 13/8 of foo;
baz = bar & subpath (13/8, 37/8) of foo;
draw baz withpen pencircle scaled 3;
undraw baz withpen pencircle scaled 2;
interim linecap := butt;
draw subpath (-1/8, 1/8) of foo withpen pencircle scaled 3;
interim linecap := rounded;
undraw subpath (-1/8, 1/8) of foo withpen pencircle scaled 2;
endfig;
\end{mplibcode}
\end{document}