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 .