[texhax] controlling expansion

Lars Madsen daleif at imf.au.dk
Thu Feb 28 12:34:29 CET 2013

any reason why you don't just use the etoolbox package instead? It has very powerfull macros to test this sort of thing

/Lars Madsen
Institut for Matematik / Department of Mathematics
Aarhus Universitet / Aarhus University
Mere info: http://au.dk/daleif@imf / More information: http://au.dk/en/daleif@imf

From: texhax [texhax-bounces at tug.org] on behalf of Neal H. Walfield [neal at walfield.org]
Sent: 28 February 2013 12:22
To: texhax at tug.org
Subject: [texhax] controlling expansion


I'm writing a macro that compares the value of a parameter.  I'm
currently using \ifx to do this as follows:


      not empty


  1: \dosomething{}

  2: \dosomething{1}

  3: \foo


This breaks if the caller uses \edef: \empty is expanded.  However, if
I protect \empty and \arg with a \noexpand, then bare uses (such as 1
and 2 in my above example) don't work:

  ! Use of \noexpand doesn't match its definition.
  \dosomething #1-> \def \noexpand \empty
                                        {} \def \noexpand \arg {#1}
                                        \ifx \em...
  l.18 \edef\foo{\dosomething{}

What is the "right way" to compare argument values such that the macro
can (but need not) be used in an \edef context?


TeX FAQ: http://www.tex.ac.uk/faq
Mailing list archives: http://tug.org/pipermail/texhax/
More links: http://tug.org/begin.html

Automated subscription management: http://tug.org/mailman/listinfo/texhax
Human mailing list managers: postmaster at tug.org

More information about the texhax mailing list