\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}