A flexible markup system needs to be extensible. This is because it is impossible to enumerate all possible logical structures that different authors might wish to use. This is perhaps one of the biggest shortcomings with SGML, where extending the logical structure requires modifying the Document Type Definition (DTD), a non-trivial task. On the other hand, one of the most powerful aspects of La)TeX is its extensibility. It is possible for an author to define the few additional logical constructs needed by a particular document instance using the TeX macro facility, [Knu86][Knu84].
Macros permit the author to
abstract away layout details when writing the document. To give an example,
the command \kronecker
is not present in La)TeX. An author can
extend La)TeX by defining
[LVerbatim102]
and then write
[LVerbatim106]
The definition for \kronecker
has extended the markup
language, and consequently, the logical structure that can be expressed.
LaTeX [Lam86] is itself a good example of how TeX macros can be used
to implement a language for encoding document structure. The presence of
user-defined macros in documents presents both a challenge and an opportunity
for a system like AsTeR .