## B.8  Definitions, Numbering

### B.8.1  Defining Commands



Scoping rules apply to macros, as they do in LATEX. Environments and groups define a scope and command definition are local to the scope they occur.

It is worth noticing that HEVEA also partly implements TEX definitions (using \def) and bindings (using \let), see section B.16.1 for details.

### B.8.2  Defining Environments

HEVEA accepts environment definitions and redefinitions by \newenvironment and \renewenvironment. The support is complete and should conform to [LATEX, Sections C.8.2].

Environments define a scope both for commands and environment definitions.

### B.8.3  Theorem-like Environments

New theorem-like environments can also be introduced and redefined, using \newtheorem and \renewtheorem.

Note that, by contrast with plain environments definitions, theorem-like environment definitions are global definitions.

### B.8.4  Numbering

LATEX counters are (fully ?) supported. In particular, defining a counter cmd with \newcounter{cmd} creates a macro \thecmd that outputs the counter value. Then the \thecmd command can be redefined. For instance, section numbering can be turned into alphabetic style by:

\renewcommand{\thesection}{\alph{section}}

Note that TEX style for counters is not supported at all and that using this style will clobber the output. However, HEVEA implements the calc package that makes using TEX style for counters useless in most situations (see section B.17.3).

### B.8.5  The ifthen Package

The ifthen package is partially supported. The one unsupported construct is the \lengthtest test expression, which is undefined.

As a consequence, HEVEA accepts the following example from the LATEX manual:

\newcounter{ca}\newcounter{cb}%
\newcommand{\printgcd}[2]{%
\setcounter{ca}{#1}\setcounter{cb}{#2}%
Gcd(#1,#2) =
\whiledo{\not$$\value{ca}= \value{cb}$$}%
{\ifthenelse{\value{ca}>\value{cb}}%
gcd(\arabic{ca}, \arabic{cb}) = }%
\arabic{ca}.}%
For example: \printgcd{54}{30}

For example: Gcd(54,30) = gcd(24, 30) = gcd(24, 6) = gcd(18, 6) = gcd(12, 6) = gcd(6, 6) = 6.

Additionally, a few boolean registers are defined by HEVEA. Some of them are of interest to users.

hevea
Initial value is true. The hevea.sty style file also defines this register with initial value false.
mmode
This register value reflects HEVEA operating mode, it is true in math-mode and false otherwise.
display
This register value reflects HEVEA operating mode, it is true in display-mode and false otherwise.
footer
Initial value is true. When set false, HEVEA does not insert its footer “This document has been translated by HEVEA”.

Finally, note that HEVEA also recognised à la TEX conditional macros (see section B.16.1.4). Such macros are fully compatible with the boolean registers of the ifthen package, as it is the case in LATEX.