Dirk Laurie wrote:
> 2016-01-17 11:15 GMT+02:00 David Allsopp <dra-n...@metastack.com>:
> > Dirk Laurie wrote:
> >> After the latest changes to M-Tx on GitHub, I was tempted to remove
> >> "\input pmx" from mtx.tex since it is no longer needed there and will
> >> be input from the .tex files made by PMX.
> >>
> >> Doing so gives an error "No room for a new \read" on the big
> >> mtxdoc.ltx build. Apparently one is not allowed more than 12 file
> >> handles. This should of course be fine.
> >>
> >> But for some reason, pmx.tex is reloaded every time. I'm using a
> >> modified pmx.tex (attached) that tests on \pmxversion and writes
> >> entry/exit messages. The original mtx.tex with "\input pmx"
> >> duly gives "Already loaded PMX 2.72" as expected.
> >>
> >> I can solve my problem, easily: just don't remove "\input pmx".
> >> But I can't understand why it happens.
> >>
> >> The complete logs of the whole musixtex.tex pass are also attached,
> >> but let me reduce it to simple terms in terms of how every small TeX
> >> file made by PMX starts.
> >>
> >> Case 1:
> >>
> >> \input mtx % Does not contain "\input pmx"
> >> \input musixtex
> >> \input pmx % Reloads it every time.
> >>
> >> Case 2:
> >>
> >> \input mtx % Contains "\input pmx".
> >> \input musixtex
> >> \input pmx % Sees \pmxversion and does not reload it.
> >>
> >> As you can see, mtx.tex starts with exactly the same kind of test
> >> that pmx.tex does. Since \mtxversion is seen the next time that
> >> \input mtx comes along, its "input pmx" happens once only. I.e. I can
> >> understand why keeping it in works.
> >>
> >> But I can't understand why \pmxversion is not also seen.
> >
> > When running your version without \input pmx (Case 1), try altering
> > pmx.tex to have \gdef\pmxversion{2.72} instead of \def
> > - what happens then?
> 
> Yes, that was in fact the first thing I tried. It works in the sense that
> pmx.tex is not loaded again, but then no other PMX macro is defined.

That's what I was expecting - it means that pmx.tex is loaded within a group 
(and so without \global or \gdef, won't persist).

> I have been making many experiments in the meanwhile and think I now know
> what happens.
> 
> The main LaTeX file starts off
>    \usepackage{color,mtxlatex,mtxdoc,multicol}
> 
> mtxlatex.sty contains "\input mtx" but not "\input pmx".
> There is the difference.
> 
> And the reason why the first "\input pmx" does not persist is that every
> PMX-generated example is input inside \begin{mus}...\end{mus}.

You've arrived at the same conclusion! I don't use LaTeX (very often), but I 
imagine that \begin{..}..\end{..} is implemented either using braces or 
\begingroup somewhere!

> So the clean solution is to take "\input pmx" out of mtx.tex (which does
> not need it) and put it inside the \mtxlatex command in mtxlatex.sty,
> which by implication needs it since it defines environments like "mus"
> that are only used for including PMX-generated TeX files.

Indeed!


David 

-------------------------------
TeX-music@tug.org mailing list
If you want to unsubscribe or look at the archives, go to 
http://tug.org/mailman/listinfo/tex-music

Reply via email to