guzman-juan@cs.yale.edu (Juan Carlos Guzman) (04/12/91)
Hi,
I have defined the environment `file', which should work essentially
like `document', except that I can have nested file environments, in
which case the nested ones behave as noop.
\newenvironment{file}[1]
{\ifnum\value{FileCounter}=0\begin{document}\fi
\addtocounter{FileCounter}{1}}
{\addtocounter{FileCounter}{-1}
\ifnum\value{FileCounter}=0\end{document}\fi}
The environment works fine, but when it's time to close the
document, LaTeX complains:
% latex myfile
LaTeX error. See LaTeX manual for explanation.
Type H <return> for immediate help.
! \begin{file} ended by \end{document}.
...
l.123 \end{file}
?
After hitting <CR>, the file is closed with no problem, except that
\end{file} does not seem to have been closed properly (note
complaining about \ifnum not being complete):
[3] (myfile.aux) )
(\end occurred inside a group at level 1)
(\end occurred when \ifnum on line 123 was incomplete)
Output written on .dvi (3 pages, 7200 bytes).
Transcript written on myfile.log.
From this I gather that when LaTeX processes \end{document}, it
immediately stops further processing of the input. So my question is:
How can I do to `delay' LaTeX's processing of \end{document} until it
has completely expanded \end{file}?
On a related note, How should I change the macro so that when LaTeX
reaches a recursive \end{file} it ignores further input from this
file, and returns processing its parent?
Thanks a lot,
Juan Carlos Guzman
guzman-juan@cs.yale.edu
--
Juan in a millionpiet@cs.ruu.nl (Piet van Oostrum) (04/17/91)
>>>>> guzman-juan@cs.yale.edu (Juan Carlos Guzman) (JCG) writes:
JCG> I have defined the environment `file', which should work essentially
JCG> like `document', except that I can have nested file environments, in
JCG> which case the nested ones behave as noop.
JCG> The environment works fine, but when it's time to close the
JCG> document, LaTeX complains:
JCG> % latex myfile
JCG> LaTeX error. See LaTeX manual for explanation.
JCG> Type H <return> for immediate help.
JCG> ! \begin{file} ended by \end{document}.
JCG> ...
JCG> l.123 \end{file}
JCG> ?
Apparently \begin{document} and \end{document} are hard to use in another
environment. However, the following works (but strictly speaking it is an
undocumented feature):
\newenvironment{file}[1]
{\ifnum\value{FileCounter}=0\document\fi
\addtocounter{FileCounter}{1}}%
{\addtocounter{FileCounter}{-1}
\ifnum\value{FileCounter}=0\enddocument\fi}
Note: The % must also be given to get rid of a space token.
--
Piet* van Oostrum, Dept of Computer Science, Utrecht University,
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
Telephone: +31 30 531806 Uucp: uunet!mcsun!ruuinf!piet
Telefax: +31 30 513791 Internet: piet@cs.ruu.nl (*`Pete')