My own tool adopts a mixed approach to the layout problem : diagram-as-text, but the line breaks and the order of the boxes (entities and relations) are used as position hints. The resulting layout is constrained to an invisible grid corresponding to a left-to-right and top-to-down reading of the source.<p>Moreover, since there are relatively few possible grid positions, automatically rearranging the layout becomes an assignment problem, which can be solved by a simple b&b algorithm.<p>Obviously, this wouldn't scale, but this is just a teaching tool that I use to present small ERDs to my students.<p>You may test it at <a href="https://mocodo.net" rel="nofollow">https://mocodo.net</a>. Click the turning arrows symbol to draw the diagram and the shuffle symbol to rearrange it randomly.<p>Warning: French-flavored ERD, aka Merise MCD.