\documenttype[gellmu.dtd]{article}
% \base{href="http://www.albany.edu/\tld;hammond/gellmu/igl/"}
\newcommand{\gurl}{http://www.albany.edu/\tld;hammond/gellmu}
\compacttitle
\newcommand{\st}{syntactic translator}
\newcommand{\gst}{\gellmu Syntactic Translator}
\newcommand{\gellmu}{\abbr{GELLMU}}
\newcommand{\html}{\abbr{HTML}}
\newcommand{\sgml}{\abbr{SGML}}
\newcommand{\xml}{\abbr{XML}}
\newcommand{\ll}{\latex;-like}
\surtitle{W. F. Hammond: The \gellmu Archive}
\title{A Brief Introduction to Regular \gellmu}
\author{William F. Hammond}
\address{
Department of Mathematics \& Statistics\\
The University at Albany\\
Albany, NY 12222, USA}
\date{September 2000\brk;
Last revision: \today\brk;
(still needs revision as well as a better proof reading)}
\draftlabel
\begin{document}
\begin{quotation}
\bold{Note:} Since this document was written, there have been
some enhancements to the system it describes. For more information
see the
\anch[href="http://www.albany.edu/\tld;hammond/gellmu/glman/glman.html"
]{\emph{\gellmu Manual}}.
\end{quotation}
\tableofcontents
\begin{Section}{Another Mark-Up Language?}
The purpose of \emph{regular} \gellmu\footnote{\gellmu stands for
\quophrase{Generalized Extensible \ll MarkUp}
}
is to provide a markup language with provision for mathematics under a
system design that is \emph{structured enough} to admit rigorous,
modularly-staged, automatic processing into many other formats while
at the same time being a comfortable input format for those accustomed to
using \latex;. There is not a set list of translation target formats.
Examples of possible translation targets include:
% an in-paragraph itemized list
\begin{itemize}
\item \latex .
\item \html.
\item \html as enhanced by \abbr{MathML}.
\item \abbr{Texinfo}.
\item \abbr{ME} (a \ast;\hyp;roff package).
\item \quostr{text/plain} (for optimal \quophrase{de-\tex;ing}).
\item audio stream.
\item search engine.
\item index engine.
\end{itemize}
\gellmu is not \latex; although its style of markup resembles that of
\latex;. An example of how there is provision for
\quophrase{enrichment of information} lies in the markup used
for a quoted phrase in the \begin{anch}[href="\gurl/igl/iglm.glm"
]{source}\end{anch} for this document.\footnote{The base for
relative \abbr{URI} references given here may be found at the end of the
printed form of this document.} Whereas the usual \latex; way of
writing the phrase in the last sentence would be
\display{\quostr{\lsq;\lsq;enrichment of information\rsq;\rsq;},}
and that markup would be meaningful in regular \gellmu, the markup
\display{\quostr{\bsl;quophrase\{enrichment of information\}}}
can be detected more easily by a processor looking for \emph{quophrase}
contents, while the separate double-quoting indicators may or may not
be adequate for such a processor seeking to glean similar information.
Furthermore, the effort by a processor to glean such information might
be spoiled by the occurrence of one or more unbalanced double-quoting
indicators. Possibly even more useful ways of marking the
same phrase that still would yield the same printed appearance,
depending on the overall context, might be:
\display{\quostr{\bsl;jargon\{enrichment of information\}}} or
\display{\quostr{\bsl;topic\{enrichment of information\}}.}
An important characteristic of this markup is that the processing of a
document always begins with a faithful translation to an instance
under the umbrella of \quophrase{Standard Generalized Markup Language
(\sgml)}. It is widely known in the text processing community (though
not widely observed in the mathematical community) that sufficiently
structured markup languages under \sgml can be robustly converted to
many other formats. \gellmu has been designed to provide a bridge
from LaTeX-like markup to the world of \sgml.
The translation from source markup to \sgml markup is performed by my
program called the \gst. Once that translation is performed the
author's document exists in the world of \sgml, and in that world many
programs, almost all of which are very highly configurable, are
available for automatic processing.
Beyond the syntactic translation from source markup to \sgml the first
release of materials from this project will contain a didactic
\emph{article} \sgml document type, and some of the statements herein
are, for illustration, non-explicit allusions to the article document
type, which is just one example of an \sgml document type in the
\emph{advanced} \gellmu category.
Realistically today, \sgml is a document standard for in-house
work, and its \quophrase{subset}
\xml\footnote{\emph{Subcategory}
might be a better term here than \emph{subset}.}
has become the only shareable form of \sgml. Major \sgml
document types such as \emph{DocBook} and \emph{TEI} have canonical
translations to \xml. Still one does not abandon \sgml in
an authoring environment, because some of the features of full
\sgml provide substantial convenience for authors.
What added convenience there is in using \ll markup as a writing
interface for \xml is greatly aided by taking advantage of
a few of the features in full \sgml that are not available in
\xml. On the other hand, \emph{basic} \gellmu is available for the direct
preparation of an \xml document as the direct output of the \st.
\end{Section}
\begin{Section}{How did \gellmu arise?}
Aside from markup languages under \sgml another example of
a markup language that is structured enough to admit robust conversion
is \abbr{Texinfo}, which is the markup language of The
\anch[href="http://www.gnu.org/"]{\abbr{GNU}} Documentation
System. The \quophrase{Info} side of \abbr{Texinfo} is the
\emph{Info} hypertext self\hyp;documentation system within the popular
fully programmable editing system \emph{GNU Emacs}. Documents
authored in \abbr{Texinfo} can be automatically converted into both
\emph{Info} (for viewing in an \emph{GNU Emacs} buffer) and \tex;
(for printing).
The \emph{Info} system is a hypertext system that pre-dates the World
Wide Web (WWW) and the latter's default presentation markup language
known as \html, which falls under the \sgml regime.
One should, therefore, not be surprised to learn that with the dawn of
\html Lionel Cons of \abbr{CERN} (the birthplace of the
World Wide Web) furnished the world with a \abbr{PERL} program for
converting a \abbr{Texinfo} document into \html with
(internal) hypertext references.
Although \abbr{Texinfo} is a \tex;-like markup language, it makes wide
use of the character \verb{\atc;} as command-introducer where in
\tex; one would (normally) use \verb{\bsl;}. It seems that many
authors find this superficial difference uncomfortable. Ulrik Vieth
of
% With latex-like multiple argument/option syntax it is *mandatory*
% that the chain having *command-name* followed by argument/option
% *delimiters* be unbroken by whitespace. Space inside delimiters is
% fine and sometimes helpful to human readers.
\anch[href="http://www.tug.org/"]{The \tex; Users Group (\abbr{TUG})}
wrote an \emph{Emacs Lisp} program
that served to convert into \abbr{Texinfo} a \latex; file
written in January 1998 as the
\anch[href =
"ftp://ctan.tug.org/tex-archive/tds/draft-standard/tds-0.9995.tar.gz"
]{draft report}
of the \abbr{TUG} Working Group on a directory structure for \tex;
systems.
This example, which was an \emph{ad hoc} conversion, played an
important role in my arrival at this design for a bridge from
\latex; to \sgml.
\end{Section}
\begin{Section}{Translation of \gellmu Markup}
\gellmu is essentially, but for appearance, a markup language under
\sgml. This means that after a document is translated by the \st into
the corresponding markup language falling formally under \sgml, any
general\hyp;purpose \sgml processing tool can be used.
The project's prototype production system is built around
\emph{Regular \gellmu}, which uses features for enhanced authoring
convenience in the \st that require some assumptions about the \sgml
document type under which the author is writing. \emph{Basic
\gellmu}, on the other hand, may be used as a simple \ll
markup interface with a large number of document types, including \xml
document types.
Two \sgml processing tools that are easily available form the
core of the prototype production system.
\begin{enumerate}
\item James Clark's \quostr{nsgmls}, an \sgml parser that is
part of his \anch[href="ftp://ftp.jclark.com/pub/sp/"]{
\quostr{SP} library package}.
\item David Megginson's \abbr{PERL}
program \softw{sgmlspl} that is an interface for his Perl library
\softw{SGMLSPM}. It may be found at
\anch[href="http://www.cpan.org/modules/by-authors/David\und;Megginson/"
]{CPAN} or at his
\anch[href="http://www.megginson.com/"]{office}.
\softw{sgmlspl} is a
% was "http://home.sprynet.com/sprynet/dmeggins/SGMLSpm-1.03ii.tar.gz"
programmer-friendly interface for writing simple or complex
\quophrase{event\hyp;driven} translators (to other formats) that operate
on \quostr{nsgmls} output.
\end{enumerate}
In the prototype production system a document under the
didactic \emph{article} \sgml document type made with the \gst
from \ll source markup is parsed by \softw{nsgmls} and then
passed through a simple \softw{sgmlspl} translation to yield an
instance under the corresponding \xml document type.
In the prototype production system the \xml version of an article may
be translated either to \html or to \latex;. Other translations are
possible. The two existing translations are done with
\softw{sgmlspl}.
But a number of other freely available translation tools may be
considered for the \xml version of a \gellmu article including:
\begin{enumerate}
\item James Clark's \softw{jade}, an engine for \abbr{DSSSL} with
a wide variety of possible translation targets.
\item James Clark's \softw{xt}, an \abbr{XSLT} engine also with
a wide variety of possible translation targets.
\item David Carlisle's \softw{xmltex}, a package for \softw{TeX},
the Program, that enables its user to write what amounts to
a \quophrase{style sheet} in \tex;, rather than, say, \abbr{XSL},
for formatting (with its own parse) an instance of an \xml
document type in \tex; (actually \abbr{DVI} since one does not
get a chance to \quophrase{see} a \tex; source image).
\end{enumerate}
\end{Section}
\begin{Section}{Advanced \gellmu vs. Basic \gellmu}
This document is about the \emph{regular} \gellmu. It is important
first to know a bit about \emph{basic} mode and \emph{advanced} mode.
What is called \emph{regular} in this document is an instance of
\emph{advanced} mode. The term \emph{regular} is being used here to
reference the didactic \emph{article} document type, which is an \sgml
document type that admits the more elaborate and succinct handling of
\emph{advanced} mode while not being in any way incompatible with
\emph{basic} mode.
Neither the basic nor the advanced mode involves in any way adoption of
the language of \latex. (But many command names under the didactic
document type, mimic \latex; command names.)
To use either \emph{basic} or \emph{advanced} mode one must be
familiar with the \sgml document type for which one is writing.
Ordinary \html is an example where the use of \emph{basic} mode
is indicated. Only a very few of the features in
advanced markup not part of basic markup\footnote{With several minor
exceptions, one related to the direct writing of \sgml attributes
(which cannot contain markup and which do not have many parallels in
\latex;) and another related to the way of escaping the character
\quochar{\bsl;}, everything about basic mode also applies to advanced
mode.} make any sense for use in the direct preparation of \html with
\ll input.
Basic \gellmu uses the \latex; special characters \quochar{\bsl;},
\quochar{\{}, and \quochar{\}} along with \ll argument/option syntax,
where braces immediately following a command name indicate command
arguments and square brackets, i.e., \quochar{\lsb;} and
\quochar{\rsb;}, indicate command options. A command corresponds to
an \sgml element, and in basic mode a command may have at most one
argument, the content of which corresponds to \sgml element content,
and at most one option, the content of which corresponds to a list of
\sgml attribute specifications. Thus for example, in basic mode for
\html one may use the markup
\display{
\verb{\bsl;a[href="http://www.w3.org/"]\{The World Wide Web Consortium\}}}
to form the \html anchor:
\display{\verb{The World Wide Web Consortium}
\ \eos}
(The formation of anchors with the didactic document
type in advanced mode is slightly more complicated because the
characters \quochar{=} and \quochar{/}, which may acquire special (and
\quophrase{overloaded}) semantic significance in mathematical
contexts, are held for delayed evaluation as empty elements and
because the \st, which does not recognize command names, regards this
usage in advanced mode as \emph{multiple} argument/option syntax, which
is not part of basic mode.)
An example of the distinction between basic and advanced \gellmu is that
in advanced mode it is possible and easy to arrange to have a blank line,
as in \latex;, represent the beginning of a paragraph. In basic mode
for classical \html one
must\footnote{There is a way, with the setting of several
variables for the \st, to have blank lines begin
new paragraphs in basic input for \html}
use \qquostr{\bsl;p} to begin a paragraph, and for the \xml version of
\html one must also provide markup for the end of every paragraph, which
may be done in several ways.
For some of the details on using the basic markup with \html see
\begin{anch}[href="\gurl/ghtml.html"]{\emph{Using the \gst
to Write \html}}\end{anch}.
\end{Section}
\begin{Section}{Some Fundamentals on Regular \gellmu}
\begin{Subsection}{The Markup Commands}
\par{There are several kinds of commands:}
\begin{itemize}
\item \bold{A maximal string introduced by} \verb{\bsl;}
\bold{followed by a letter\footnote{For the first alpha release
\quophrase{letter} means something matching the regular expression
\qquostr{[A-Za-z]}. This will not be a limitation of the \st
after the alpha releases. I believe that
\softw{GNU Emacs}, from version 20, is fully capable of meeting the
needs of \gellmu for supporting international
character sets. At present, it is possible to use \softw{Emacs}
\quophrase{word constituent characters} in names defined with
\emph{newcommand}, and there is no reason why the definition strings
cannot involve standard \sgml entity notation. It is also possible to
define symbolic \sgml entities in the \sgml internal declaration
subset, which is the content of an option (at most one) that follows the
unique argument to the meta-command \qquostr{\bsl;documenttype}.
Additionally, the \sgml version of the didactic \emph{article}
document type provides commands for the document preamble that may be
used to construct an internal declaration subset for the \xml version
of the document. (Of course, someone using this markup to edit
directly for a document type under \xml would need to use the
\qquostr{\bsl;documenttype} option provided for the \sgml internal
declaration subset.)}
%%% end of long footnote
and otherwise consisting only of letters and numbers.}
\bold{The first number, if any, must not be \quophrase{0} since
such names are reserved for use by the \st.}\brk;
Command names are case sensitive. Such a command is a
\emph{container}, corresponding to an \sgml \emph{element}, if it is
immediately followed, without intervening white space, by the
character \verb{\{}. In that case the delimited zone of containment
normally ends with the subsequent \quophrase{balancing character}
\verb{\}}. (\latex;\hyp;like multiple argument/option chains deserve
more discussion; for now it will suffice to point out that the use of
the \verb{\bsl;anch} command in this document for making
\quophrase{anchors} is an example, and, of course, \latex;'s
\verb{\bsl;frac} command is another example. For the present
discussion these commands are considered to be containers.) Such a
command corresponds to an \sgml \emph{defined-empty element} if it is
followed immediately without intervening white space by the character
\verb{;}. In any other case there is syntactical ambiguity. However,
the \st will produce a corresponding \sgml
open tag unless the logical variable \emph{gellmu-xml-strict} has been
set. (This variable is normally not set for advanced \gellmu.)
% IMHO here GELLMU becomes *easier* than LaTeX.
\item \bold{Certain single characters.}\brk;
\verb{\bsl;}, \verb{\{}, \verb{\}}, \verb{\crt;}, \verb{\und;},
\verb{\dol;}, \verb{\pct;}, and \verb{\tld;} have command meanings
that are similar to their meanings in \latex;. The characters
\verb{;} and \verb{:} are ordinary characters that have special
meaning at the end of a command name. The character \verb{\hsh} is
also a special character used, as with \latex;, in \emph{newcommand}
templates. In source for the didactic
\emph{article} document type any non-alpha-numeric \abbr{ASCII}
character may be escaped (referenced for itself) with a named command,
e.g. \verb{\%} may be referenced for itself as \verb{\bsl;pct;}. This
is \bold{necessary} in order to provide delayed evaluation for
ultimate translation to one of many possible ultimate formats.
The following language meanings apply to both basic and regular
markup:
\begin{enumerate}
\item \verb{"\bsl;"}: \bold{Command introducer}.
Escape in basic mode: \verb{"\bsl;\bsl;"}. This escape is
incorrect in regular mode. For the didactic \emph{article}
document type the escape is \verb{"\bsl;bsl;"}. For other document
types one may resort to an entity reference
if there is an aversion to the provision of a corresponding
defined-empty element or if one lacks control of the document type.
\item \verb{"\{"}: \bold{Command argument opener}.
Escape: \verb{"\bsl;\{"}.
\item \verb{"\}"}: \bold{Command argument closer}.
Escape: \verb{"\bsl;\}"}.
\item \verb{"["}: \bold{Command option opener}.
\item \verb{"]"}: \bold{Command option closer}.
\item \verb{";"}: \bold{Command terminator} for commands corresponding
to defined-empty \sgml elements; otherwise an ordinary
character. Its use as a command terminator is invisible and may be
omitted optionally in some contexts. This syntax is analogous to
the use of \quochar{;} as an entity reference terminator in \html.
\item \verb{":"}: \bold{Special purpose command terminator} used for
indicating the close of a command\hyp;zone; otherwise an ordinary
character. Its use as a command terminator is invisible.
\item \verb{"\pct;"}: \bold{Comment introducer} (in force to end of line).
\end{enumerate}
Any command is terminated by a non-alpha-numeric character. There is
syntactic ambiguity unless the terminator is one of \quochar{\{},
\quochar{\lsb;}, \quochar{;}, or \quochar{:}. This kind of syntactic
ambiguity is not permitted in the direct editing for an \xml document
type with \gellmu input. The terminator can be a blank space, but, if
so, the blank space becomes invisible.
The following language meanings apply to regular markup with
allusion to the didactic \emph{article} document type.
\begin{enumerate}
\item \verb{"\tld;"}: \bold{Non-breaking interword space}.
Equivalent: \verb{\bsl;nbs;}, cf. \verb{\amp;nbsp;} in \html.
\item \verb{"\crt;"}: \bold{Superscript command}.
Equivalent: \verb{\bsl;sup}.
\item \verb{"\und;"}: \bold{Subscript command}.
Equivalent: \verb{\bsl;sub}.
\item \verb{"\amp;"}: \bold{Dual use: tabular cells and entity introducer}.
\quochar{\amp;} introduces an entity reference if it is followed
by anything other than white space. It is used, as in \latex;, as
a \emph{tabular} cell delineator when it is followed by white space.
\item \verb{"\dol;"}: \bold{Toggle inline math mode}.\brk;
Equivalent:
\menu
\item \verb{"\bsl;tmath\{ . . . \}"}
\menu:
Nearly equivalent:
\menu
\item \verb{"\bsl;( . . . \bsl;)"} or
\item \verb{"\bsl;math\{ . . . \}"}.\footnote{It is possible to
merge the inline \emph{math} and \emph{tmath} zones at any level
of processing beyond the \st. (These are indeed the same in
\latex;.) The syntactic translator resists the temptation here
to go beyond syntax, and with the didactic \emph{article}
document type the formatting to \latex; inserts the \latex; markup
\qquostr{\bsl;,} for a small horizontal space before and after
\emph{math}, but not before and after \emph{tmath}.}
\menu:
\end{enumerate}
\item \bold{Certain strings of plain text in regular \gellmu that are part
of legacy practice under \latex;.}
\begin{enumerate}
\item \verb{"\hyp;\hyp;"} \brk;\bold{A short dash} as used with a range
of numbers, e.g., 1--2.
Equivalent: \verb{\bsl;rdash}.
\item \verb{"\hyp;\hyp;\hyp;"} \brk;\bold{A long dash} as used for
punctuation, e.g., a dash --- like this.
Equivalent: \verb{\bsl;pdash}.
\item \verb{"\bsl; "} \brk;\bold{Blank interword space}.
Equivalent: \verb{\bsl;spc;}
\item \verb{"\bsl;,"} \brk;\bold{Small horizontal space}.
Equivalent: \verb{\bsl;hsp;}
\item \verb{"\bsl;\bsl;"} \brk;\bold{A forced line break}.
\qquostr{\bsl;\bsl;} may be used at the end of a line of
input for a forced line break. In a \emph{tabular} environment
(with the didactic \emph{article} document type, as in
\latex;) it begins a new \emph{tabular} row. Any other use is
deprecated, and will result in translation to the defined-empty
element \emph{bsl} corresponding to the \abbr{ASCII} character
\quochar{\bsl;} with a warning from the \st.
The use of \emph{tabular} is deprecated
and is not supported beyond \quophrase{lrc}. Use \emph{table},
which is not similar to \latex;'s \emph{table}, instead of
\emph{tabular}.
Equivalents: \verb{\bsl;brk;} for a
line break outside of a \emph{tabular} environment.\footnote{
The \st simply outputs the \sgml defined-empty element
\emph{brk0}, which belongs to its reserved name space. The dual use of
\emph{brk0} involves some \sgml chicanery that is resolved during translation
to the \xml version of the \emph{article} document type,
where \emph{tabular} is converted to \emph{table} and non-tabular use of
\emph{brk0} is converted to \emph{brk}.}
\item A blank line. \brk;\bold{Begin new paragraph} command.
Equivalent: \verb{\bsl;parb}. Nearly equivalent: \verb{\bsl;par}.
\item \verb{"\lsq;\lsq;"} \brk;\bold{Left (double) quotation mark}.
Equivalent: \verb{\bsl;ldq}.
\item \verb{"\rsq;\rsq;"} \brk;\bold{Right (double) quotation mark}.
Equivalent: \verb{\bsl;rdq}.
\item \verb{"\bsl;("} \brk;\bold{Begin} \emph{math mode} \bold{command}.
Equivalent: \verb{\bsl;begin\{math\}}.
\item \verb{"\bsl;)"} \brk;\bold{End} \emph{math mode} \bold{command}.
Equivalent: \verb{\bsl;end\{math\}}.
\item \verb{"\bsl;["} \brk;\bold{Begin} \emph{displaymath mode}
\bold{command}.
Equivalent: \verb{\bsl;begin\{displaymath\}}.
\item \verb{"\bsl;]"} \brk;\bold{End} \emph{displaymath mode} \bold{command}.
Equivalent: \verb{\bsl;end\{displaymath\}}.
\end{enumerate}
\item
\quostr{\bsl;begin\{}\emph{name}\quostr{\}}
\quostr{. . .}
\quostr{\bsl;end\{}\emph{name}\quostr{\}}
This usage is equivalent to \quostr{\quo;\bsl;}\emph{name} \quostr{. . .}
\quostr{\bsl;}\emph{name}\quostr{:\quo;}, which, in turn, is
equivalent to \quostr{\quo;\bsl;}\emph{name}\quostr{\{} \quostr{...}
\quostr{\}\quo;}.
\end{itemize}
\end{Subsection}
\begin{Subsection}{Multiple Argument/Option Syntax}
An essential point in the present design is that the whole system
is built from components, each of which has its own
function\footnote{In the prototype production system based on
the didactic \emph{article} document type the output from each
stage is available for examination and, where necessary, intervention.
However, such use of intervention is intended only for temporary
expedient use while a \gellmu system is being designed or enhanced.
As with \latex;, enhancement is an ongoing process.
}. % end of footnote
Consistent with this design the \st operates with knowledge of syntax
but little or no knowledge of language.
Multiple argument/option syntax has been built into advanced mode as
part of the overall idea of providing, where sensible, \ll
features in a precise user markup interface for writing in document
types under \sgml and \xml.
What are the rules for converting the multiple argument/option syntax
in source markup into \sgml? Direct conversion by the \st of this
type of usage into \xml is not available because such conversion
requires some language knowledge and the program does not operate with
knowledge of language at that level. One obtains an \xml version of a
document in the prototype production system by using a translator with
minimal knowledge of the command vocabulary to create the \xml version
from an \sgml version that is the immediate output of the \st.
In multiple argument/option syntax, which is much like that of
\latex;, arguments and options follow command names. Arguments are
delimited by braces, i.e., \quochar{\{} and \quochar{\}} and options
by square brackets, i.e., \quochar{\lsb;} and \quochar{\rsb;}. There
must be no white space between the arguments and options nor between
the command name and the first member of an argument/option sequence.
Each command with a multiple argument/option sequence is translated to
an open tag whose name is the name of the command. Each argument is
translated to an \emph{ag0} element and each option to an \emph{op0}
element lying in \gellmu's reserved name space. There are two
exceptional cases.
\begin{enumerate}
\item The first argument or option is an option inside which the very
first character is a colon, i.e., \quochar{:}. This is the method
provided in advanced mode for the direct entry of an \sgml attribute
sequence. The entire contents of the option string, apart from the
leading \quochar{:}, which is discarded, are understood to be a
sequence of \sgml attributes for the \sgml element whose name is the
name of the command. There is no syntax check of the attribute
contents by the \st. Such an \emph{attribute option} is not treated
as an \emph{op0} element. In particular, an attribute option is
correctly followed immediately by a semi-colon, i.e., the character
\quochar{;}, if and only if the corresponding \sgml element is a
defined-empty element under the \sgml document type. Since \sgml
attributes correspond to very little of classical \latex;, attribute
options may be entirely ignored.
\item The first argument is the only argument and there are no options
apart from a possible attribute option. This case, which is extremely
common, is exceptional relative to argument/option handling
since the sole argument simply becomes element content without an
\emph{ag0} wrapper.
\end{enumerate}
\end{Subsection}
\begin{Subsection}{Mathematics}
The Greek letter $\Gamma;$ is marked, up as in \latex;, with
\display{\verb{\bsl;Gamma}\eos;}
The didactic \emph{article} document type provides mathematical
markup that is similar to that of \latex;.
For example, one may use the markup
\display{
\quostr{\bsl;[ 2\^\{p-1\} \bsl;equiv 1 \bsl;pmod\{p\^2\} \bsl;eos\bsl;]}}
to speak of the congruence
\[ 2^{p-1} \equiv 1 \pmod{p^2} \eos\]
In this example the markup \qquostr{\bsl;eos} is a formal
end-of-sentence\footnote{Regular \gellmu recognizes \quochar{.} followed
by two blank spaces or by a newline as ends-of-sentence markup when
these occur outside of mathematical contexts.}.
In a \latex; math environment, input text \quophrase{\quostr{abc}} is
set the same as the the input text \quophrase{\quostr{a b c}}
following the presumption that each glyph is a separate symbol. At
one point I had planned to provide for a distinction between these two
forms of input for \emph{article}. However, I am concerned about
author confusion; so there will be provision for having \qquostr{abc}
be a math symbol, but an instance will be invoked as
\qquostr{\bsl;abc}.
In math mode all symbols are assumed to be single-characters as in
\latex;. A \verb{\bsl;mathsym} command (part of language
design that, for the moment, has no extant implementation) in the
document preamble may be used to specify that a string is to be
regarded as a single mathematical entity whenever it occurs in math
mode. This contrasts with \latex; in that there is no formal
declaration of math symbols.
\emph{mathsym} will be a variant of \emph{newcommand},
which is a meta-command that is handled entirely by the \st with no
trace in the output. However, the design of \emph{mathsym}, which will
also be a meta-command but which will leave marks in the output, is
not yet decided. The design issues surround how to provide the author
who is its user with fexible open means of planting semantic information
in the output without undue verbosity. The syntax might be simply
\display{\quostr{\bsl;mathsym\{}\emph{symbol-name}\quostr{\}}%
\quostr{\{}\emph{presentation-defintion}\quostr{\}}%
\quostr{\lsb;}\emph{semantic-information-without-markup}\quostr{\rsb;}%
}
Omitting the option could make author usage equivalent to that of
\emph{newcommand}, but still trace information planted in the output
of the \st could be sufficient that in the future a derived
\abbr{MathML} object or a derived \xml formatted object produced by
translation and viewed in
\anch[href="http://www.mozilla.org/"]{\softw{Mozilla}} might
enable the reader to ascertain the \emph{symbol-name} and then launch
a search for other occurrences. The option would serve as a mechanism
for the author to pass semantic enrichment information to downstream
formatters.
\end{Subsection}
\begin{Subsection}{Examples}
The following table refers to the didatic \emph{article} document
type. It demonstrates how source is translated by the \gst to the
\sgml version of \emph{article} and from there is translated using
\softw{sgmlspl} to the \xml version of \emph{article}.
\begin{display}
\begin{table}{ll}
\tr \td{\tdbc{Source}} \td \quostr{\bsl;emph\{this\}}
\tr \td{\tdbc{\sgml}} \td \quostr{this}
\tr \td{\tdbc{\xml}} \td \quostr{this}
\emprow;
\tr \td{\tdbc{Source}} \td \quostr{\bsl;tex;}
\tr \td{\tdbc{\sgml}} \td \quostr{}
\tr \td{\tdbc{\xml}} \td \quostr{}
\emprow;
\tr \td{\tdbc{Source}} \td \quostr{\$ \bsl;frac\{2\}\{3\} \$}
\tr \td{\tdbc{\sgml}} \td
\quostr{ 23 }
\tr \td{\tdbc{\xml}} \td
\quostr{ 23}
\emprow;
\tr \td{\tdbc{Source}} \td
\quostr{\bsl;anch[href="nil"]\{Null\}\bsl;anch:}
\tr \td{\tdbc{\sgml}} \td
\quostr{href"nil"Null}
\tr \td{\tdbc{\xml}} \td
\quostr{href="nil"Null}
\end{table}
\end{display}
One may find many other examples of \gellmu markup in the
\begin{anch}[
href="http://www.albany.edu/\tld;hammond/gellmu/"
]{project archive}\end{anch}.
\end{Subsection}
\end{Section}
\begin{Section}{Notes}
Although the meta-command \emph{newcommand}, which is handled
internally by the \st, is now available, the variant meta-command
\emph{mathsym} is not yet available.
This document is still at draft stage.
It is itself a \gellmu document.
The following versions are available:
\begin{menu}
\item \anch[href="\gurl/igl/iglm.glm"]{source}.
\item \anch[href="\gurl/igl/iglm.sgml"]{SGML}.
\item \anch[href="\gurl/igl/iglm.xml"]{XML}.
\item \anch[href="\gurl/igl/iglm.xhtml"]{XHTML with MathML}.
\item \anch[href="\gurl/igl/iglm.html"]{classic HTML}.
\item \anch[href="\gurl/igl/iglm.ltx"]{\latex}.
\item \anch[href="\gurl/igl/iglm.dvi"]{DVI}.
\end{menu}
\end{Section}
\end{document}