[tex-live] TL2004: Technical problems and testing

Olaf Weber olaf at infovore.xs4all.nl
Wed May 12 20:19:28 CEST 2004


Petr Olsak writes:
> On Fri, 7 May 2004, Olaf Weber wrote:
>> Olaf Weber writes:
>>> Hans Hagen writes:

>>>> just curious: is \write16 the same as \message, or will \write16 act
>>>> as any other write (which makes sense)

>>> \write18 should be like other writes, not like \message.  Othewise it
>>> becomes needlessly hard to use.

>> Actually, it isn't like other writes, and it isn't like \message
>> either.  TeX doesn't ever do ^^-processing for \write18, just like it
>> doesn't do it for \special.

>> Note that we don't even do xord/xchr processing for \write18 or
>> \special, _and never have._

> This is not actually true. It is possible to activate this conversion in
> \specials (but it is not default behaviour of course). See section 4 in
> encTeX documentation.

As you note, this is encTeX-specific and not the default behaviour
even there.  So if we're dicussing what the behaviour used to be for
the sake of determining what requirements are imposed by backward
compatibility, then we don't need to take that into account.

To pull the locale-dependency we'd have to make this change:

@x
{ The web2c locale dependency is here -- it is correct if we assume
  that pseudoprinting goes to the terminal or log file.
  We do not have to check |special_printing| here: we never want to
  do the printable check for specials, and |selector| equals
  |new_string| whenever |special_printing| is true. }
if ((selector<no_print) and (@<Character |s| cannot be printed@>))
    or ((selector>no_print) and (selector<=pseudo) and (not isprint(xchr[s])))
then begin print_visible_char("^"); print_visible_char("^");
@y
{ We do not have to check |special_printing| here: we never want to
  do the printable check for specials, and |selector| equals
  |new_string| whenever |special_printing| is true. }
if (selector<=pseudo) and (@<Character |s| cannot be printed@>)
then begin print_visible_char("^"); print_visible_char("^");
@z

So it is pretty simple to do this.  The catch is that if you do get
unprintable stuff spewed on a terminal, the terminal's status may get
thoroughly screwed.

-- 
Olaf Weber

               (This space left blank for technical reasons.)



More information about the tex-live mailing list