# Global variables

Roger Price rprice at woodworm.cs.uml.edu
Thu Apr 27 18:13:08 CEST 2000

Dear List, I use teTeX (tetex-0.4pl8-11.src.rpm).

I am trying to define a LaTeX class in which two environments A and B
communicate via global variables (booleans).  I wish to check that the
environments are being used in the correct order.  In the main code
section of the class file (see the LaTeX Companion p.468) I declare
three booleans:

\newboolean{P at rt0}
\setboolean{P at rt0}{true}     % Initial value = true
\newboolean{P at rt1}           % Initial value = false
\newboolean{P at rt2}           % Initial value = false

and a command which will check that A and B are in the correct order.
The first argument is the number of the previous part, the second is
the number of the current part.

\newcommand{\CheckOrder}[2]{\ifthenelse{\boolean{P at rt#1}}
{\setboolean{P at rt#2}{true}
\typeout{Correct order.}
}
{\setboolean{P at rt#2}{true}
\typeout{Incorrect order.}
}}

The environment declarations are
\newenvironment{A}{\CheckOrder{0}{1}}{}
\newenvironment{B}{\CheckOrder{1}{2}}{}

The document instance contains the environments in the correct order:

\begin{document}
\begin{A}
Hello
\end{A}
\begin{B}
World
\end{B}
\end{document}

xdvi shows the correct "Hello World", but the console output is:

Correct order.
Incorrect order.

Why can't environments A and B communicate with each other?
Is this because P at rt0, P at rt1 and P at rt2 are not global variables?
How does one create global variables in LaTeX?

My apologies if this is a FAQ. Any help would be much appreciated.
Roger
rprice at cs.uml.edu