[texhax] To not expanding macros, is there anything else besides \string?

Paul Isambert zappathustra at free.fr
Wed Jan 5 20:07:59 CET 2011

Le 05/01/2011 16:40, Philip Taylor (Webmaster, Ret'd) a écrit :
> Barhorst, Alan wrote:
>> Hello, I am sorry for the naivety of this question, but here it
>> goes.  I am trying to use \immediate\write on file 14 and 15 for
>> information that is generated/input in my main LaTeX session.
>> They are solutions to problems that I want to assemble in an
>> appendix.  The problem is that any macro I pass to the write
>> command gets immediately expanded, and all I have found in the
>> literature is that I need to put \string in front of every
>> macro.  What I am hoping is that there is one big wrapper macro
>> I can place around anything I want to write to a file for later
>> expansion.  If there is such a creature I would appreciate
>> someone who could point it out to me.  There seems to be hints
>> of this in styles such as inlinedef, but it seems to not work or
>> I don't understand how it works.
> Alan, check the e-TeX Reference Manual : there are many new
> primitives in e-TeX intended to address exactly this sort
> of problem.
>     http://www.tug.org/texmf-dist/doc/etex/base/etex_ref.html

What Phil alludes to is:
First, you're running under eTeX, even though you might not know it.
Second, eTeX has a primitive called \unexpanded, which, as its name 
indicates, returns its argument with no expansion in such contexts as 
writing to an external file. I.e.:

\write15{\unexpanded{<Your material here>}}

will write what you feed it as is.


More information about the texhax mailing list