Dnia Tue, Nov 25, 2008 at 10:30:51PM -0600, Lars Huttar napisał(a):
It makes sense for "italicness" and "serifity" to be independently changeable. What's discouraging to me as a entrant to the whole TeX world (but an experienced programmer) is the (apparently undocumented) redefinition of a well-established control sequence that used to mean "non-italic" to mean something different (maybe "serif" -- I still don't know for sure).
Hi, and welcome to the TeX world;). Me not being an experienced programmer, but (some kind) of more or less experienced TeX user, I'd add the following. In general, there are three 'mainstream' TeX macropackages: plain TeX (say, plus AMSTeX), LaTeX and ConTeXt. It seems that the majority of the TeX world uses LaTeX; most people, when they say "TeX", mean essentially "LaTeX". LaTeX is a a big beast, and if you are new to TeX _and_ don't want to submit papers to math/cs journals (which are seldom aware of ConTeXt, I'm afraid), learning LaTeX may not be exactly what you want. There is also a very small minority using plain TeX (including Knuth, who doesn't use LaTeX; he was once asked why, and said: "I'm afraid of large systems";)). The TeXbook is about two things: plain TeX and using the TeX engine itself. Then there is another minority (but growing, I believe) of ConTeXt users. For example, I am a plain-to-LaTeX and then (after 5 years or so) LaTeX-to-ConTeXt convert (still using LaTeX when writing papers which I want to submit somewhere, though, and plain TeX when doing something really atypical). It is probably true that plain TeX is weird and "incomplete" in a sense. What \rm means in plain TeX is: "switch to upright, serif font in 10pt size". It _might_ be modified (in the TeXbook spirit) to, e.g., "switch to upright, serif font in _current_ size" - but please note that plain TeX itself has _no_ notion of "current size" (or, in other words, "current size" in plain TeX is fixed at 10pt). What Knuth mentions in the TeXbook is that you might want to write some macros to introduce something like a flexible "current size" - he even shows how to do it in Appendix E - but it is no longer plain vanilla TeX then! So what you did was to extrapolate plain TeX's meaning of \rm to a situation outside plain TeX itself (although in Knuthian spirit). So, everything I said above is trivial when applied just to \rm, but I wanted to try to explain the differences between plain TeX, LaTeX and ConTeXt. So to finish this explanation, I would say the following: * Plain TeX is a DIY thing. Cross-references, automatic numbering of chapters etc., bibliographies, including graphics, etc., etc. - forget it, it just isn't there. This is very fine if you're doing something really unusual (and this happens from time to time) and don't need such features, but you want to _exactly_ know what is happening where: plain TeX is small and easy to grasp (at least, when compared to LaTeX or ConTeXt). * LaTeX is what they call a "document preparation system", but that's a lie. LaTeX is a "scientific paper/monograph preparation system"; you _may_ typeset a cookbook, a school test, or a software manual in LaTeX, but it is a (sometimes small, sometimes big) pain. It is just not the best tool. Of course, it flexible, extensible, even Turing complete, so you can do everything - but it is sometimes like simulating recursion in BASIC using arrays as a stack: possible, but no-one would like to do it. The popularity of LaTeX caused, however, the situation when there is a LaTeX package for everything (and sometimes even three of them, each with different set of features and bugs...), so the pain is (usually) not that big, but still sometimes writing stuff in LaTeX is not very comfortable. * ConTeXt is something much more universal than LaTeX - without the scientific bias - but probably less stable than LaTeX, less documented and with smaller userbase (but: smaller does not mean less active nor less helpful!). The flexibility of plain TeX, LaTeX and ConTeXt is obviously similar (well, with ConTeXt actually bigger since the advent of luatex), but it is sometimes _very_ different in terms of easiness (and level of frustration), sometimes with LaTeX having more wtf per minute and sometimes ConTeXt. It seems, however, that Hans considered much more special cases when writing ConTeXt, so many thing are more natural in ConTeXt than in LaTeX (where even simplest things sometimes need an external package - for example, changing the style of enumerations).
If I were choosing a TeX macro package at this point, I would definitely look for one that kept semantics of basic TeX command sequences consistent with the intent expressed in the TeXbook... to avoid package lock-in, as well as to make the learning curve easier and to be able to use the resources of the whole TeX community.
As said - almost no-one uses plain TeX. Both LaTeX and ConTeXt claim to be "built on top of plain TeX", but in both cases it does _not_ mean "saving the meaning of each and every plain TeX command" (and that is clearly stated in both sources!).
That being said, I appreciate the design goals of ConTeXt, including the desire to have independent controls for +/- italic, +/- serif, etc. I'm also amazed at the energy that Hans still devotes to answering questions on this mailing list, 18 years after ConTeXt was written! That's dedication.
That's right. I would add one more point: if everyone called the software of ConTeXt quality "beta", then Windows would be pre-alpha and a typical GNU/Linux probably something between alpha and beta.
Sorry if the above sounds too negative. After all, the TeXbook itself does not make the semantics of \rm obvious.
Well, it does, but _not_ in the context of changing sizes/styles/etc...
However, once you dig deep enough it becomes clear that \rm does mean "switch to a non-italic typeface" in Plain TeX.
I'll stress it again: no. In plain TeX, it means "switch to cmr10 at 10pt", full stop. Greets -- Marcin Borkowski (http://mbork.pl) Walka trwa! Nie przeciw ciału i krwi, lecz przeciw złym siłom. Naszym ogniem Miłość Boga, naszym mieczem wierność Jego! Walka trwa! (Izaiash)