Xfig
mcj.sourceforge.net
mcj.sourceforge.net
Yes, and using transfig it can be transformed into whatever format you need. So, for instance, you can have a complete LaTeX document with .fig figures (and a Makefile to "compile" everything) in a repository.
By the way, like Ipe mentioned in another comment, it is possible to use TeX formatting in xfig and the .fig format (using the "special" attribute) to produce some especially nice figures for scientific documents.
TIL: tgif files are Prolog
These days my go to tool for technical diagrams is draw.io (aka diagrams.net). I tend to use the standalone version but appreciate that it’s available online with low friction and as a confluence plugin. Perhaps my favorite part is that you can create png files that are viewable anywhere but are also editable due to the source file being embedded in the png.
It always looked like running on open/blackbox with no further dependencies installed.
I still occasionally used Xfig, over the years, when I needed to draw a diagram, and the other options readily available on whatever Unix/Linux box were garbage. Xfig somehow kept working.
Things aren’t any harder now than they were when X11 was first unbundled and became XQuartz.
Also, I wrote a small library that lets me programmatically generate SVGs with Python. This lets me create very precise vector images. This fills some of the same needs.
* tangent/normal to a curve: there is an experimental Live Path Effect for tangent (You can get the normal by just rotating the tangent 90 degrees)
* Measure length: Many ways to get that: e.g. the measure tool. or you can use the Measure segments Live Path Effect.
* Measuring the area: There is an extension: Extensions > Visualize Path > Measure Path.
* Measuring angles: again, you can use the measure tool.
* Library of elements: Inkscape has symbols Objects > Symbols. You can also add you own symbols. See also https://github.com/PanderMusubi/inkscape-open-symbols
* Inkscape snapping is way better (See the new smart alignement snapping in version 1.2).
* Inkscape also prints instructions on how to use tools on the status bar
Another thing I miss in inkscape (in case you know): I sometimes did some very interesting interactive live geometric demonstrations with Kig. Had inkscape had the same features, I'd use it.
Anyway. You may find this post interesting: https://castel.dev/post/lecture-notes-2/
I appreciate the exhausting amount of work that goes into something like Inkscape, but holy crap. Segfaulting on me. Or leaving a foregrounded window open with no content in it that I can't close and that blocks the rest of the program until I kill -9 it. Very frustrating when I was trying to get real work done.
The 1.2 release is expected in a few days (and it has many features with a ton of bug fixes).
Recently I used it to lay out a cut path for a sheet of material that goes under the keyboard of a vintage computer.
It was just the right amount of quick vs capable for a job like that. The drawing is 90% repetitions of a few objects (like one key shape), and regular alignment of multiple copies of those objects (keys in a row) in array groups (the F keys, the #,Q,A,Z rows, the arrow keys, etc), and regular alignment of groups with other groups (vertical spacing of the rows), with a little bit of arbitrary positioning (horizontal offset of the A row from the Q row, etc).
I don't remember what difficulty I exactly ran into, but I tried inkscape and qcad and somehow neither made it obvious how to attain the result I wanted, but I popped it right out in xfig with only a little fumbling around.
And now that definition is an accessible document. xfig is a small program and of course free & open source, so it's likely always going to be available, but the file is also usable directly if needed, even if it's so far in the future that xfig would require a lot of work to set up some vm just to run it. That must be why I didn't use a 2d sketch in freecad.