\newcommand{cmd}[args][opt]{def}
\renewcommand{cmd}[args][opt]{def}
\providecommand{cmd}[args][opt]{def}
These commands define (or redefine) a command.
cmd
The name of the new or redefined command.
A \
followed by a string of lower and/or uppercase
letters or a \
followed by a single nonletter.
For \newcommand
the name must
not be already defined and must not begin with \end
; for
\renewcommand
it must already be defined. The
\providecommand
command is identical to the \newcommand
command if a command with this name does not exist; if it does
already exist, the \providecommand
does nothing and the
old definition remains in effect.
args
An integer from 1 to 9 denoting the number of arguments of
the command being defined. The default is for the command to
have no arguments.
opt
If present, then the first of the number of arguments specified by
args
is optional with a default value of opt
;
if absent, then all of the arguments are required.
def
The text to be substituted for every occurrence of cmd; a
parameter of the form #n in cmd is replaced by the text of the
nth argument when this substitution takes place.
\newcommand{\water}{H$_2$O}
This would allow one to write, e.g.,
The formula for water is \water.or
\water\ is the formula for water.Note, in the second case, the trailing
\
followed by a blank
is required to ensure a blank space after the H2O;
LaTeX ignores the blank following a command, so the space has
to be specifically inserted with the
\<space>
.
As a second example consider
\newcommand{\hypotenuse}{$a^{2}+b^{2}$}
Note that this will produce the desired formula
in text (paragraph) mode because of the $...$
in the definition.
In math mode, however, the first $
in the definition will cause LaTeX to leave math mode, causing problems.
In LaTeX 2.09 a standard trick for getting around this is
to put the math-mode expression in an
\mbox
, viz.,
\newcommand{\hypotenuse}{\mbox{$a^{2}+b^{2}$}}
In LaTeX2e the
\ensuremath
command has been
provided to alleviate this problem. The argument of the \ensuremath
command is always processed in math mode, regardless of the current mode.
Using this mechanism the above could be written as
\newcommand{\hypotenuse}{\ensuremath{a^{2}+y^{2}}}