TeX is a macro processor: this is a computer-science-y term meaning “text expander” (more or less); TeX typesets text as it goes along, but expands each macro it finds. TeX’s macros may include instructions to TeX itself, on top of the simple text generation one might expect.
Macros are a good thing, since they allow the user to
manipulate documents according to context. For example, the macro
\TeX
is usually defined to produce “TEX” with the ‘E’ lowered
(the original idea was Knuth’s),
but in these FAQs the default definition of the macro is
overridden, and it simply expands to the letters “TeX”. (You
may not think this a good thing, but the author of the macros has his
reasons – see TeX-related logos.)
Macro names are conventionally built from a \
followed by a sequence of letters, which may be upper or lower case
(as in \TeX
, mentioned above). They may also be
\ ‹any single character›, which allows all
sorts of oddities (many built in to most TeX macro sets, all the
way up from the apparently simple ‘\
’ meaning “insert a space
here”).
Macro programming can be a complicated business, but at their very simplest they need little introduction — you’ll hardly need to be told that:
replaces each instance of\def\foo{bar}
\foo
with the text “bar”. The
command \def
is Plain TeX syntax for defining commands;
LaTeX offers a macro \newcommand
that goes some way towards
protecting users from themselves, but basically does the same thing:
Macros may have “arguments” , which are used to substitute for marked bits of the macro expansion:\newcommand{\foo}{bar}
which produces:\def\foo#1{This is a #1 bar} ... \foo{2/4}.
This is a 2/4 bar.or, in LaTeX speak:
which produces:\newcommand{\foo}[1]{This is a #1 bar} ... \foo{3/4}.
This is 3/4 bar.(LaTeX users waltz through life, perhaps?)
You will have noticed that the arguments, above, were enclosed in braces ({…}); this is the normal way of typing arguments, though TeX is enormously flexible, and you may find all sorts of other ways of passing arguments (if you stick with it).
Macro writing can get very complicated, very quickly. If you are a beginner (La)TeX programmer, you are well advised to read something along the lines of the TeXbook; once you’re under way, TeX by Topic is possibly a more satisfactory choice. Rather a lot of the answers in these FAQs tell you about various issues of how to write macros.
This answer last edited: 2011-10-12
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=whatmacros