[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
Hi,
I'm writing a macro that compares the value of a parameter. I'm
currently using \ifx to do this as follows:
\documentclass{article}
\def\dosomething#1{
\def\empty{}
\def\arg{#1}
\ifx\empty\arg
empty
\else
not empty
\fi}
\begin{document}
1: \dosomething{}
2: \dosomething{1}
\edef\foo{\dosomething{}}
3: \foo
\end{document}
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?
Thanks,
Neal
_______________________________________________
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