Sanjoy Mahajan wrote:
Here's a possible solution that works here but is a hack and may make unwarranted assumptions about control-sequence names. It require a new if to say whether we are processing a static MP figure, and then using a dedicated output stream for those writes.
======================== cut here ======================== \unprotect
\newif\ifinstaticMPfigure
interesting is that we already had a boolean but somehow it was not used (only at one place) \newwrite\MPstaticwrite \long\def\startstaticMPgraphic#1#2\stopstaticMPgraphic {\bgroup \MPstaticgraphictrue\MPstaticgraphictrue \setMPrandomseedfalse \def\MPgraphicfile{#1}% no \jobname here \let\allocateMPslot \gobbleoneargument \let\deallocateMPslot\gobbleoneargument \let\runMPgraphic \gobbleoneargument \runMPgraphicstrue \enableincludeMPgraphics \currentMPgraphic\plusone % hack, else no close \startMPgraphic#2\stopMPgraphic \executeMPgraphicfile \egroup} \def\openMPgraphicfile#1#2% #1=alwaysopen #2=message {\ifMPstaticgraphic \donetrue \let\MPwrite\MPstaticwrite \else \@EA\ifx\csname\@@MPG\@@MPG\MPgraphicfile\endcsname\relax \donetrue % \@EA\newwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname % for the sake of plain usage \@EA\@EA\csname newwrite\endcsname\csname\@@MPG\@@MPG\MPgraphicfile\endcsname \doglobal\addtocommalist\MPgraphicfile\MPgraphicfiles \else \ifcase#1\relax\donefalse\else\donetrue\fi \fi \@EA\let\@EA\MPwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname \fi \ifdone \immediate\openout\MPwrite\MPgraphicfile.mp\relax \ifx\MPinputtranslation\empty\else \immediate\write\MPwrite{\MPinputtranslation}% \immediate\write\MPwrite{verbatimtex \MPinputtranslation etex ;}% \fi \immediate\write\MPwrite{\letterpercent\space #2 graphics of job "\jobname"}% \writeMPgraph \setMPrandomseed \fi} i'll add this
! No room for (\write) \H.
e.g. try this file:
\starttext \dorecurse{17}{\newwrite\H} \stoptext
But with the staticMPfigure test file, the "No room for (\write)" message didn't appear, and instead the TeX complained only when \openout was tried on the resulting stream.
it is because we open files without closing them; somehow i think that this is a bug (taco may know) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------