13

TeX's primitives can be renamed by macro formats/packages: this allows new/altered features or behaviours. Usually this is done such that the originals are still available ('renamed'): certainly LaTeX2e does this (for example \@@end). Which primitives does ConTeXT rename/move, and where do they 'end up'? As there are two ConTeXt versions (MkII and MkIV), are there any differences between the two in this regard?

Joseph Wright
  • 259,911
  • 34
  • 706
  • 1,036

1 Answers1

11

ConTeXt moves several primitives, renaming them systematically using the prefix \normal.... For ConTeXt MkII, all but one of the primitives moved are from TeX90: there is also one from e-TeX and one 'pdfTeX' one that appears only in LuaTeX:

  • \end
  • \everyjob
  • \expanded
  • \input
  • \language
  • \mathop
  • \month
  • \outer
  • \over
  • \unexpanded
  • \vcenter

All of these are saved as \normal..., e.g. \normalend is the \end primitive.

ConTeXt MkIV moves all of the above plus a few additional primitives from TeX90/e-TeX:

  • \/ (saved as \normalitaliccorrection)
  • \hoffset
  • \left
  • \middle
  • \right
  • \voffset

MkIV uses some Lua code to extend/alter the behaviour of these primitives: again the originals are saved as \normal....

It also moves two LuaTeX primitives:

  • \bodydir
  • \pagedir

These are 'hidden' as \spac_directions_normal_body_dir and \spac_directions_normal_page_dir: the \normal... commands do exist but are not equivalent to the primitives.

Joseph Wright
  • 259,911
  • 34
  • 706
  • 1,036
  • @JosephWright: There are unofficial public git repos of the ConTeXt betas at http://repo.or.cz/w/context.git/shortlog/refs/heads/origin and https://gitorious.org/context. Running git blame on math-fen.mkiv shows that these primitives were overridden on 2013.10.20 commit: http://repo.or.cz/w/context.git/commit/b8ac6d7b7fdb16293c28034c349efd5b0b7b20b3?f=tex/context/base/math-fen.mkiv – Aditya Apr 17 '14 at 06:23
  • @Aditya Thanks: that what I suspect, but wanted someone with a bit more knowledge to help me out :-) – Joseph Wright Aug 04 '14 at 16:59
  • It seems as if \mathop is not moved in current TL2016 MkIV. If I typeset the following minimal expample \starttext\meaning\mathop\stoptext it simply prints \mathop. – Henri Menke Jun 20 '16 at 11:42
  • Furthermore is \outer is just empty macro. – Henri Menke Jun 20 '16 at 11:50
  • @HenriMenke Reuse (or similar) is a different question: if you want the \outer primitive in ConTeXt then \normalouter (or \primitive\outer or a Lua approach) is the way to go. – Joseph Wright Jun 20 '16 at 12:26