Don:

I believe the solution to this is rather straightforward (and am relieved 
to say) there is not a TeX bug involved.  The problem is in the macro 
definition...  It should be...

\def\titles#1#2{\kern-\lin@pos%
\kern-3.2\Interligne\kern-\parindent\kern-\afterruleskip% 
\kern-\sign@skip\vbox{\vskip#1\Interligne% 
\if{#2}\empty\relax\else\leftline{\Bigtype #2}\fi}}% 
   ^  ^....BRACKETS here around #2 are all that changes.

This ultimately explains most of what you were seeing.  When the \if tested
#2 without brackets, it ultimately tested just X, and (for some reason I can't 
explain) concluded it was empty, and then concluded the macro (\relax)... It 
appears that this was tested a second time (accounting for the two X removals), 
and then (here's the fun part), it was left with inline text "XDessus" but was 
NOT executing your macro \titles anymore, so it just set the text as \tenrm 
XDessus.  (TeX was just doing what TeX would do when it runs into inline text.)

By putting brackets around the argument in that setting, it appears that TeX is 
forced to consider all of the argument to determine the logic outcome, and (when
I ran it) it appeared to be more what you might expect.

By the way, all this can be seen by putting \tracingall% right before the first 
instance of your macro.  A patient person can then search the resultant .log 
file for a step-by-step record of what TeX is doing.  This is where it can be 
seen that Tex was processing your \if test based only on the first X.

I hope the result here is just what you need.  It is possible that the \if test 
activity has more complications than this suggestion might handle, (for 
example)... I worry that maybe the brackets will make it always fail the test, 
then you wouldn't have what you wanted either...  but as was once written 
"Sufficient for the day is the trouble thereof."

Regards
Joel Hunsberger
[EMAIL PROTECTED]         

______________________________ Reply Separator _________________________________
Subject: TeX Problem
Author:  [EMAIL PROTECTED] (Don Simons) at SMTPpost
Date:    11/1/98 9:16 PM


In the following tex file, can anyone figure out why "Dessus" and 
"XXXDessus" come out in different fonts?  And what happened to the 
first two X's in "XXXDessus"?

--Don Simons

============================
\input musixtex
\font\BIGfont=\fontid bx10 scaled\magstep4 
\font\Bigfont=\fontid bx10 scaled\magstep2 
\hsize=524pt
\vsize740pt
\def\nbinstruments{1}
\setstaffs11
\setclef10
\makeatletter%
\def\titles#1#2{\kern-\lin@pos%
\kern-3.2\Interligne\kern-\parindent\kern-\afterruleskip% 
\kern-\sign@skip\vbox{\vskip#1\Interligne% 
\if#2\empty\relax\else\leftline{\Bigtype #2}\fi}}% 
\makeatother%
\startmuflex\startpiece\addspace\afterruleskip% 
\znotes\zcharnote{16}{\titles{2.0}{XXXDessus}}\en% 
\alaligne
\znotes\zcharnote{16}{\titles{2.0}{Dessus}}\en% 
\Endpiece
\vfill\eject\endmuflex
\bye

Reply via email to