[NTG-pdftex] \quitvmode patch
taco at elvenkind.com
Thu Jul 15 13:39:59 CEST 2004
On Thu, 15 Jul 2004 12:21:57 +0200
Heiko Oberdiek <oberdiek at uni-freiburg.de> wrote:
> On Thu, Jul 15, 2004 at 11:29:35AM +0200, Taco Hoekwater wrote:
> > The change file adds a new primitive called \quitvmode. In vertical modes,
> > it is identical to \indent, but in horizontal and math modes it is \noindent.
> What's the difference to \leavevmode?
If there would be deep binding of macro meanings and when running in a
context-free environment (and if you ignore efficiency considerations),
there would not be any real difference between the new primitive and
a macro doing precisely what \leavevmode does.
But you cannot have a 'context-free' environment in current TeX, and,
if I understand correctly, this is where Hans' problems stem from. I'm
sure he has examples.
Asides, it is also a lot more efficient: \leavevmode is a macro that
expands into two tokens (\unhbox\voidb at x). Therefore, the command sequence
when starting out in vertical mode is:
* read \leavevmode
* exec expand()
- read \unvbox
- unread \unvbox
- exec new_graf()
- reread \unvbox, now in hmode
- exec unpackage()
* exec scan_register_num()
- read \voidb at x
The new sequence is:
* read \quitvmode
* exec new_graf()
(removing a number of subroutine calls and two input_stack entries)
More information about the ntg-pdftex