\newcommand
and
\newenvironment
. \renewcommand
and \renewenvironment
are
understood as well (Hyperlatex makes no attempt to test whether a
command is actually already defined or not.)
Note that it is not possible to redefine a Hyperlatex command that is
hard-coded into the Hyperlatex converter. So you could redefine
the command \cite
or the verse
environment, but you cannot
redefine \T
.
(Currently, the only way to determine whether a command is hard-coded
is to try or to look at the Hyperlatex source file.)
When a command definition appears in the preamble, it must start at
the beginning of a line, with only whitespace before it (the macro
definitions may be prepended with \W
as well).
Some examples:
\newcommand{\Html}{\textsc{Html}} \T\newcommand{\bad}{$\surd$} \W\newcommand{\bad}{\htmlimage{badexample_bitmap.xbm}} \newenvironment{badexample}{\begin{description} \item[\bad]}{\end{description}} \W \newenvironment{smallexample}{\begin{example}}{\end{example}} \T \newenvironment{smallexample}{\begingroup\small \begin{example}}{\end{example}\endgroup}The
\bad
command and the smallexample
environments are
good examples for conditional compilation. The
smallexample
environment is equal to
example
in HTML, but is typeset in a smaller
font in the LaTeX document.
Command definitions made by Hyperlatex are global, their scope is not restricted to the enclosing environment.
Note that Hyperlatex does not tokenize its input the way TeX does.
To evaluate your macros, Hyperlatex simply inserts the expansion
string, replaces occurrences of #1
to #9
by the arguments,
strips one # from strings of at least two #'s, and then
reevaluates the whole. Since the white space after a command is
already removed when the command is parsed, the following code will
not work in Hyperlatex:
\newcommand{\smallit}{\small\it} ... And now some \smallit text in smaller italics.Hyperlatex will complain with the error message "Command
\ittext
undefined." To avoid this, you should always leave a
final space in the expansion string, if it ends with a macro
invocation.
So the right way is to write:
\newcommand{\smallit}{\small\it } ... And now some \smallit text in smaller italics.And everything will work fine.
Problems also occur when you try to use %, \T
, or \W
in
the expansion string. Don't do that.