You could use the diagrams library for writing. For the latex notation, you could use matplotlib.
If you need something more abstract or generic, networkx might be what you need. A simpler approach might be to use the graphviz python library
This looks like an ideal task for Inscape.
It is free, GPL 2.
It runs on Linux.
It's considerably small, 107 MB download size. That's less than half of Affinity Deisgner, a comparable commercial product. So it should fit on older PCs with little disk space available.
The startup time is certainly not very fast, but once started it's ok. It's a program for ...
You are looking for a Geographic information system.
The Java editor of OpenStreetMap JOSM enables you to edit not only the map of OpenStreetMap, but also your personal (copied or invented) local map. You can invent your imaginary city in an empty map.
You can render your personal map in the OSM format offline.
Examples for fictional maps with OSM technology ...
I found Graphviz to be a wonderful solution, especially since you don't have to worry about where things are (though you can), you just worry about the information that it conveys.
The only catch is it's not very easy to install on windows (and to be honest GVEdit isn't that great). The best workaround is to use a different tool compatible with the "dot&...