On Wed, Jun 1, 2011 at 3:52 PM, Mojca Miklavec <[email protected]> wrote: > On Wed, Jun 1, 2011 at 15:36, Wolfgang Schuster wrote: >> >> Am 01.06.2011 um 15:26 schrieb Mojca Miklavec: >> >>> Dear magitians, >>> >>> I discovered this in LaTeX, but ConTeXt behaves the same (plain TeX >>> behaves differently). Can somebody please explain me why this code >>> fails to work? (A workaround is to move \newif on top which I'm >>> willing to do, but I'm still curious.) >>> >>> \starttext >>> >>> \ifx\hbox\undefined >>> \message{invisible to tex} >>> \newif\ifabc \abcfalse >>> \ifabc \message{abc true breaks} \else \message{abc false breaks} \fi >>> \fi >>> >>> \stoptext >>> >>> >>> systems : begin file iftest at line 1 >>> abc false breaks >>> ! Extra \fi. >>> l.7 \fi >> >> The \ifx ends with the first \fi > > I figured that out, but I still find it very weird. > >> from \ifabc which isn’t defined and >> ignored by TeX > > This part somehow makes sense (TeX should not keep defining stuff and > writing out stuff) ... > >> the last \fi is left which generates the error message > > The code works when using \ifx\hboxx\undefined ... But despite the > explanation, this is very very very weird. Or to quote Taco: "The > trick of TeX being bug-free is that all the bugs and limitations are > documented." I hope that this behaviour is documented in TeXbook. > > To some extent this resembles > /* I want to comment out this code > c = a + b; > /* a more complex equation */ > c = a * b; > */ > but it is not quite the same. see TeX by Topic e.g. 13.7 Evaluation of conditionals
-- luigi ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________
