TEX is a very mature typesetting system, although the user interface is a bit archaic. Through the use of various style files, many things not implemented initially can be archieved, e.g. including hypertext-links in the resulting DVI-file.
About the only annoying problem for which there's no known solution is that TEX only produces one big output file. If one wants to segment a big documents into small files, this has to be done by hand, probably breaking things like links within the file.