B.1 Commands and Environments
B.1.1 Command Names and Arguments
LATEX comments that start with “%
” and end at end of line are ignored and produce no output.
Usually, HEVEA ignore such comments. However, HEVEA processes
text that follows “%HEVEA
” and some other comments have a specific meaning to it (see
section 5.3).
Command names follow strict LATEX syntax. That is, apart from
#
, $
, ~
, _
and ^
, they either are
“\
” followed by a single non-letter character or
“\
” followed by a sequence of letters.
Additionally, the letter sequence may be preceded by “@
”
(and this is the case of many of HEVEA internal commands), or
terminated by “*
” (starred variants are implemented as plain
commands).
Users are strongly advised to follow strict LATEX syntax for
arguments. That is, mandatory arguments are enclosed in curly braces
{
... }
and braces inside arguments must be properly
balanced.
Optional arguments are enclosed in square brackets [
...
]
.
However, HEVEA does its best to read arguments even when they are
not enclosed in curly braces.
Such arguments are a single, different from “\
”, “{
”
and “
”, character or
a command name.
Thus, constructs such as “\'ecole
”,
“$a_1$
” or “$a_\Gamma$
” are
recognized and processed as “école” “a1” and “aΓ”.
By contrast, “a^\mbox{...}
” is not recognized
and must be written “a^{\mbox{...}}
”.
Also note that, by contrast with LATEX, comments are parsed during
argument scanning, as an important consequence brace nesting is also
checked inside comments.
With respect to previous versions,
HEVEA has been improved as regards emulation of complicated
argument passing. That is,
commands and their arguments can now appear in
different static text bodies. As a consequence,
HEVEA correctly processes the following source:
\newcommand{\boite}{\textbf}
\boite{In bold}
The definition of \boite
makes it reduces as
\textbf
and HEVEA succeeds in fetching the argument
“{In bold}
”. We get
In bold
The above example arguably is no “legal” LATEX,
but HEVEA handles it.
Of course, there remains
numerous “clever” LATEX tricks that exploits TEX internal
behavior, which HEVEA does not handle.
For instance consider the following source:
\newcommand{\boite}[1]{\textbf#1}
\boite{{In bold}, Not in Bold.}
LATEX typesets the text “In bold” using bold font, leaving
the rest of the text alone. While HEVEA typesets everything using
bold font. Here is HEVEA output:
In bold, Not in Bold.
Note that, in most similar situations, HEVEA will likely crash.
As a conclusion of this important section,
Users are strongly advised to use ordinary command names and
curly braces and not to think too much the TEX way.
B.1.2 Environments
Environment opening and closing is performed like in LATEX, with
\begin{
env}
and
\end{
env}
.
The *
-form of an environment is a plain environment.
It is not advised to use \
env and
\end
env in place of \begin{
env}
and
\end{
env}
.
B.1.3 Fragile Commands
Fragile commands are not relevant to HEVEA and \protect
is
defined as a null command.
B.1.4 Declarations
Scope rules are the same as in LATEX.
B.1.5 Invisible Commands
I am a bit lost here. However spaces in the output should correspond
to users expectations. Note that, to HEVEA being
invisible commands is a static property attached to command name.
B.1.6 The \\ Command
The \\
and \\*
commands are the same, they perform a
line break, except inside arrays where they end the current row.
Optional arguments to \\
and \\*
are ignored.