For a long time now I've had a problem trying to get whole-bar rests
properly centered.  Using the construction 

\def\atnextbar{\znotes\centerbar{\pause}\en}%

always seems to put them somewhat right of center.  In my tests I have fixed
the problem by temporarily redefining \pause as 

\def\pause{\hbox{\raise6\internote\hbox{\musixchar61}}}

but I still don't understand everything that's going on here.

I think the following lines are from musixtex.tex are relevant:

%\def\centerpause{\let\adv@box\hbox \centerbar\pause}
%\def\centerhpause{\let\adv@box\hbox \centerbar\hpause}
\def\centerpause{\centerbar\pause}
\def\centerhpause{\centerbar\hpause}
...
\def\pause{\adv@box{\raise\si@\internote\hbox{\musixchar61}}}
...
\def\adv@box#1{\hbox\@to\noteskip{#1\hss}\advance\locx@skip\noteskip}

It looks like \adv@box puts the text at the *left* edge of a \noteskip-wide
box (and then does some other accounting).  So if centerbar really centers
its argument (in this case, the box) between the barlines, why isn't the
character offset to the left of center?  

The next question is why the alternate definitions in musixtex.tex are
commented out.  They seem to do about what I did in my re-definition of
\pause, and that does put the rest where I want it to be.

--Don Simons 


Reply via email to