On avoiding the intended (but unwanted) effect of \outer

Taylor, P P.Taylor at rhul.ac.uk
Fri Oct 18 17:59:51 CEST 2019

Finding that I was continually re-using the sequence :

    \newbox \xxxbox
    \setbox \xxxbox = \hbox {...}

I thought to introduce an adjunct macro \imagebox, as in :

    \def \imagebox #1{\newbox #1\setbox #1}

such that I could thereafter write

    \imagebox \xxxbox = \hbox {...}

However, \newbox is defined with the \outer prefix and therefore cannot be used in a macro definition.  \let \outer = \relax before the definition does not help.  Victor Eijkhout [2] noted (p.~96) "[...] it is inconvenient that some of the plain macros are outer [...]. One remedy is to redefine them, without the ‘outer’ option, which is done for instance in LATEX, but cleverer tricks are possible" but failed (as far as I could see) to describe any of those cleverer tricks.  Stephan von Bechtolsheim [1] gives the canonical Knuthian definition of \outer (Vol.~III, p.~179) but also (as far as I could see) fails to offer any workaround.  Finally one suggested itself :

\def \imagebox #1{\csname newbox\endcsname #1 \setbox #1}

Thereafter I can write (e.g.)

\imagebox \logobox = \hbox {\XeTeXpdffile ../../Logos/WBH-Logo.pdf height \imageheight}

\imagebox \flagbox = \hbox {\XeTeXpdffile ../../Flags/St-Piran.pdf height \imageheight}

This would seem to be necessary and sufficient.
Philip Taylor
[1] @Book
  author =       "Stephan von Bechtolsheim",
  title =        "{\TeX} in Practice: Tokens, Macros",
  publisher =    pub-SV,
  year =         "1993",
  ISBN =         "0-387-97597-7, 3-540-97597-7",
  LCCN =         "Z253.4.T47 B4 1993",
  volume =       "3",
  address =      pub-SV:adr,
  bibdate =      "Mon Oct 18 15:41:37 1993",
  acknowledgement = ack-nhfb,

[2] @Book
  author =       "Victor Eijkhout",
  title =        "{\TeX} by Topic, {A} {\TeX}nician's Reference",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  year =         "1992",
  ISBN =         "0-201-56882-9",
  LCCN =         "Z253.4.T47 E38 1992",
  pages =        "vii + 307",
  bibdate =      "Tue Dec 14 22:47:52 1993",
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://tug.org/pipermail/texhax/attachments/20191018/8646426b/attachment.html>

More information about the texhax mailing list