Handling ``order-sensitive'' Commands

Some commands need to be passed to LATEX , but using the &process_commands_in_tex subroutine gives incorrect results. This may occur when the command is ``order-sensitive'', using information such as the value of a counter or a boolean expression (or perhaps requiring a box to have been constructed and saved). Try using the &process_commands_inline_in_tex subroutine instead. Commands declared this way are first ``wrapped'' within a dummy environment, which ensures that they are later processed in correct order with other environments and order-sensitive commands.


Other commands may need to be passed to LATEX , not to create an image themselves, but to affect the way subsequent images are created. For example a color command such as \color{red} should set the text-colour to `red' for all subsequent text and images. This must be sent to LATEX so that it is processed at exactly the right time; i.e. before the first image required to be `red' but following any images that are not intended to be affected by this colour-change.
The subroutine process_commands_nowrap_in_tex is designed specifically to meet such requirements.


Commands can be order-sensitive without having to be passed to LATEX . Indeed even if a Perl subroutine has been carefully written to process the command, it may still give wrong results if it is order-sensitive, depending on the values of counters, say. To handle such cases there is the &process_commands_wrap_deferred subroutine. This also ``wraps'' the command within a dummy environment, but when that environment is processed the contents are not sent to LATEX , as in the previous case. All of the standard LATEX commands to change, set or read the values of counters are handled in this way.


Ross Moore
1999-03-26