The ``text-processing'' systems that have found their way into almost every PC or workstation nowadays are mostly of the WYSIWYG type, one specifically chooses the ``presentation'' or ``formatting'' characteristics of the various textual elements. They can be compared to older formatting languages, where specific codes were mixed with the (printable) text of the document to control the typesetting on the micro level. For example, line and page breaks, explicit horizontal or vertical alignments or skips were frequently used to compose the various pages. Generally, these control characters were extremely application-specific, and it was difficult to treat sources marked up in one of these systems with one of the others. On the other hand, this type of markup does a very good job of defining the specific physical representation of a document, and for certain kinds of documents it might be more convenient for obtaining a given layout, in allowing a precise control of line and page breaks. This approach makes viewing and printing documents particularly easy, but re-using the source for other purposes can be difficult, even impossible.
To successfully prepare a document for use in multiple ways it is mandatory to clearly describe its logical structure by eliminating every reference to a physical representation. This is what is understood under the term logical or generic markup. The logical function of all elements of a document---title, sections, paragraphs, tables, possibly bibliographic references, or mathematical equations---as well as the structural relations between these elements, should be clearly defined.
Figure
shows a few examples of marking up the same
text. One clearly sees the difference between specific markup,
where precise instructions are given to the text formatter for
controlling the layout (for example, the commands vskip or
.sp), and generic markup, where only the logical function
(chapter or beginning of paragraph) is specified.
Figure: Different kinds of markup