The kind of algorithm I use doesn't explicitly enforce a graph without crossings, but the way it works will cause it to often untangle loops and usually manages to do it after you do sufficient steps, but I play real stars and so I sadly am very, very unlikely to actually get loops. I would love to have some, but the chance of any one jump point being a loop is like 1 in 10000 or something, so even with over 100 jump points explored I still haven't gotten any.
It works by simulating repelling forces on all points to all points that they are not connected to, and "spring" forces on points that they are connected to: repelling when they are very close, but attracting when they are far away. The springs for jump gates are tighter, leading to a tight line of jump gated systems. Then you do small steps of moving things based on the forces, then recalculating the forces, until you are happy with the result. I let this run 50000 steps over dinner but after like 5000 steps it was already okay.
If there is a loop and it is shaped like a figure 8, it's likely the repelling forces will cause it to either stabilize with 2 even sized areas, or squeeze out one of the sides. If it stabilizes, manual editing is required (for example I could change the coordinates of a couple of nodes so they are on the other side of the 8, which would destabilize it and then with another 100 steps or so check if that fixed it)