6

As far as I understand LaTeX is a set of macros built on top of the 300 or so primitive commands of the underlying TeX core. The TeXBook talks about macros like \it and \sl, but I cannot use them in my LaTeX documents (pdflatex).

So, is it that LaTeX2e is not really a conservative extension of TeX, or has TeX get updated over time too and the TeXBook is no reliable source anymore? If the latter one, is there some new literature that describes the lower most layer of TeX accessible from todays standard LaTeX2e?

  • Comments are not for extended discussion; this conversation has been moved to chat. – Joseph Wright Jun 24 '17 at 5:31
  • \it and \sl are defined in most document classes including standard ones such as article (although they are just legacy commands which shouldn't be used or mentioned in end-user documentation) – David Carlisle Jun 24 '17 at 8:14
8

The TeXbook documents two separate things: the set of primitives provided by the TeX binary, and the macros defined by Knuth in plain.tex on top of this. The primitives are available in LaTeX2e (though a few are renamed, for example \end is saved as \@@end), but LaTeX implements only some of the plain macros (and not necessarily in exactly the same way).

In terms of documentation, LaTeX’s user interface is described in Lamport’s book. For programmers, there is clsguide but no ‘definitive’ document saying which part of latex.ltx/primitives can and cannot be used: one has to pick this up to some extend by experimentation. One can read source2e for full details of the LaTeX2e kernel.

Notably, \it and \sl are user-level commands (no @ symbol), so their status is clear: they are not in Lamport’s book as part of the LaTeX2e document syntax so should not be used. As noted in the answer by Gustavo Mezzetti, the NFSS mechanism is available for font selection.


From a historical point of view, LaTeX was originally a file loaded on top of plain but that has not been the case for a long time: LaTeX is a separate TeX format which has its own approach.

| improve this answer | |
  • Thank you very much. The most clarifying fact for me was that LaTeX relates to TeX as plain TeX relates to TeX and that the mentioned macros are a part of plain TeX, hence are not expected to be present in LaTeX. – M. Winter Jun 24 '17 at 15:50
10

If the question is “May I use font switching commands like \it or \sl”, then the answer usually depends on the document class you are using. Indeed, these commands are not defined by the LaTeX2e kernel, although some classes do define them as a backward compatibility tool; for example, the article class does so, while the scrartcl class doesn’t (unless you specify the—now strongly deprecated, and therefore hidden—option enabledeprecatedfontcommands). Note, however, that the “backward compatibility” we are speaking of here refers to code usage that dates back to the early 1990’s, and that has been superseded by a much better device known as the New Font Selection Scheme (NFSS); NFSS was incorporated in LaTeX2e and is clearly and largely superior in that it permits to address the individual font characteristics (family, shape, etc.) one by one.

If, on the other hand, the question is “Should I use font switching commands like \it or \sl”, then the answer is a big “don’t”, for the reason explained in the last sentence of the previous paragraph.

| improve this answer | |
  • memoir users can add the option oldfontcommands to enable those commands; if used, a class warning will be given encouraging you to avoid these old 'LaTeX 2.09' font commands and switch to the LaTeX2e commands. – jon Jun 24 '17 at 1:25
  • I'm very scarce without the translator. Thank you. – Sebastiano Aug 23 '19 at 21:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.