On this page:
In LaTeX, you can define a new command, override an existing command or, in LaTeX2e only, provide a new command if it doesn’t already exist, using the following commands:
\newcommand{cmd}[args][opt]{def}
\renewcommand{cmd}[args][opt]{def}
\providecommand{cmd}[args][opt]{def}
in LaTeX2e
The arguments of these are as follows:
cmd
- The name of the new or redefined command. A backslash (
\
) 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
(LaTeX2e only)- If present, then the first of the number of arguments specified by
args
is optional with a default value ofopt
; 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 incmd
is replaced by the text of the nth argument when this substitution takes place.
Example
% Define a new command:
\newcommand{\super}{supercalifragilisticexpialidocious}
Renewing the command overwrites the behaviour of a previously defined command. If you attempt to renew a command that hasn’t been defined yet, you will get an error.
% Redefine the command:
\renewcommand{\super}{superman}
If you provide a command, the command is created if it doesn’t already exist. If the command does already exist, there will be no effect. The original command’s behaviour will not be affected.
% Define a command only if it's missing:
\providecommand{\super}{supercalifragilisticexpialidocious}
Here’s the full document and its output:
\documentclass[a4paper,12pt]{article}
\begin{document}
\newcommand{\super}{supercalifragilisticexpialidocious}
\noindent\super
\renewcommand{\super}{superman}
\noindent\super
\providecommand{\super}{supercalifragilisticexpialidocious}
\noindent\super
\end{document}