% This is a GELLMU document; it is NOT a LaTeX document. \documenttype[gellmu.dtd]{article} \newcommand{\gellmu}{\abbr{GELLMU}} \newcommand{\html}{\abbr{HTML}} \newcommand{\mml}{\abbr{MathML}} \newcommand{\sgml}{\abbr{SGML}} \newcommand{\xml}{\abbr{XML}} \newcommand{\dtd}{\abbr{DTD}} \surtitle{Univ at Albany: W. F. Hammond: The \gellmu Archive} \title{What is a Reasonable Authoring \dtd\brk under \sgml or \xml for \mml?} \author{William F. Hammond} \email{hammond@math.albany.edu} \nocustomlengths \nobaseprint \mathsym{Q}{\regch{\bold{Q}}} % \mathsym{Qbar}{\ovbar{\Q}} % Although the previous "works", a symbol declaration which incorporates % another is really an expression declaration rather than a symbol declaration. % For example, does one want a search for "Q" to get a hit for inside every % "Qbar"? Probably not. So the following is better: % At this point the semantic info is not serious but just for debugging. \mathsym{Qbar}{\ovbar{\regch{\bold{Q}}}}[type="R" mml="mi"] \mathsym{Gal}{\mbox{Gal}}[type="(R,R)" mml="mo"] \newcommand{\gal}[2][\Q]{\Gal(#2 / #1)} % Or we can put up galQ as its own symbol with or without any embedded % symbols: \mathsym{galQ}{% \mbox{Gal}(\ovbar{\regch{\bold{Q}}} / \regch{\bold{Q}})% }[type="G"] \begin{document} \section{Introduction} There has been a recent resurgence of interest in \anch[href="http://www.w3.org/Math/"]{\mml}, the rather granular XML language developed by the World Wide Web Consortium (W3C) \html Math Working Group during the period 1996-2000, due to the availability of \mml-capable builds of the browser \anch[href="http://www.mozilla.org/"]{Mozilla}, the open-source development version of the popular browser NetScape. \section{A Few Examples} \begin{enumerate} \item Compound fractions: \[ \frac{\frac{a}{b}}{\frac{c}{d}} = \frac{a d}{b c} \eos \] \item The formula for solving the quadratic equation \,$a x^2 + b x + c = 0$\, (in a field of characteristic $\neq 2$): \[ x = \frac{\neg{b} \pm \sqrt{b^2 - 4 a c}}{2 a} \ \eos \] \item Mixed function application and multiplication: \[ {\func{sin}\aF;{ax}}\itimes;{\func{cos}\aF;{bx}} \eos \] \item Newton's binomial series: \[ (1 + t)^r = \sum_{k=0}^{\infty} \, \frac{r(r - 1)(r - 2)\ldots(r - k + 1)}{k!}\, t^k \sum: \eos \] \item A differential equation: \[ D^2 y - 3 x (D y)^2 = x \func{cos} x \ \eos \] \item Stokes's Theorem in space: \[ \int\int_S \, (\mbox{\bold{curl}} \, \regch{\bold{F}} \,\cdot\, \regch{\bold{N}})\, d \sigma; \int:\int: = \int_{\partial S} \, (\regch{\bold{F}} \,\cdot\, \regch{\bold{T}})\, d s \int:\, \eos \] \item The continued fraction for the golden mean: \[ \frac{1 + \sqrt{5}}{2} = \frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\ldots;}}}} \eos \] \item The representation % expanded: \[ \mbox{Gal}( \ovbar{ \regch{\bold{Q}} } / \regch{\bold{Q}} ) \] % halfway: \[ \Gal(\Qbar / \Q) \] % with newcommand: \[ \gal{\Q}{\Qbar} \] % using newcommand default first arg: \[ \gal{\Qbar} \] of a centrally important object that one might choose to declare as the symbol \qquostr{galQ}. In this instance, however the expression is formed using the following three declared symbols:\footnote{The command \emph{regch} is a variant of \emph{mbox} that is intended to denote the normal version of a \quophrase{regular} character found in a mathematical context when that character is suitable for a hypothetical algorithmic application of an accent such as \emph{ovbar}. A general \emph{mbox} is regarded as not suitable for hypothetical algorithmic accenting.} \begin{tablec}{lcl} \tr \th\tdbc{Name} \th\tdbc{Rendering} \th\tdbc{\gellmu expansion} \tr \td\quostr{Q} \td $\Q$ \td\quostr{\bsl;regch\{\bsl;bold\{Q\}\}} \tr \td\quostr{Qbar} \td $\Qbar$ \td\quostr{\bsl;ovbar\{\bsl;regch\{\bsl;bold\{Q\}\}\}} \tr \td\quostr{Gal} \td $\Gal$ \td\quostr{\bsl;mbox\{Gal\}} \end{tablec} Here the example is repeated \[ \galQ \] with the same presented appearance but this time as the declared symbol \emph{galQ}, which is defined without using other declared symbols in its definition. \end{enumerate} \section{Generating \mml} There is a serious issue surrounding how one might migrate from traditional \tex;-like mathematical markup, which uses reasonably succinct mathematical notation based on the long tradition of Western mathematical notation, to an authoring markup that is fully adequate for translation to \mml. For example, how can we automatically translate, with full confidence, the \xml versions of the above mathematical examples into \mml? Or, if we cannot, what additional information needs to be added? One possibility is offered by my draft on mathematical notation at the URL \display{\urlanch{http://www.albany.edu/\tld;hammond/gellmu/notation} \eos;} It attempts to explain what additional information is needed in this document to eliminate the need for guessing by an automated rendering system at work on these examples, as marked up in the \xml version of this document. Note that no guessing is needed to render this document in either \html, with mathematics set crudely but reasonably, nor to render it in \latex;. (Perhaps one may not fully appreciate this latter point without examining the \anch[ href="http://www.albany.edu/\tld;hammond/gellmu/authordtd/mathbench.xml" ]{XML version of this document}.) For the purpose of assistance in automated rendering to \mml as well as for the purpose of supplying semantic information for computer algebra systems, \gellmu provides a metacommand \emph{mathsym}\footnote{The name \emph{mathsym} is the default value of the variable \emph{gellmu-mathsym-name} in the syntactic translator.} for the formal declaration of mathematical symbols with the usage: \display{ \quostr{\bsl;mathsym\{symbol-name\}\{symbol-rendering\}[symbol-meta-info]} \eos} Here \emph{symbol-name} is an alphanumeric string (case-sensitive) beginning with a letter. The second argument is the presentation rendering of the symbol in \gellmu markup. It is like the definition of a \emph{newcommand} except that it may not involve arguments.\footnote{However, a declared math symbol may be invoked in a \emph{newcommand} that takes arguments.} The optional third argument \emph{symbol-meta-info} is an alpha-numeric string that might also include possibly a few other string characters such as \quochar{/}, \quochar{-}, \quochar{,}, \quochar{.}, \quochar{*}, etc. Its exact structure depends on the production system. For example, it might consist of (name, value) pairs for conveying meta-information about the symbol. The syntactic translator replaces each invocation of a given \emph{mathsym} with the specified rendering and writes for each \emph{mathsym} definition a corresponding element in the \sgml output whose content consists solely of the declared symbol name if there is no meta information but otherwise consists of the symbol name followed by a blank space and then whatever string of meta information is provided in the optional argument. Additionally, each invocation is wrapped in a rendering-inert \emph{Sym} element whose \emph{key} attribute reveals the name given to the symbol at the point of declaration (and by which the symbol is invoked). This makes it possible for a downstream authoring platform processor that has remembered the list of declared symbol names to match each invocation of a declared symbol with its associated meta information, if any, provided by the author in the symbol declaration. A related feature in the didactic \gellmu document type is the \emph{mlg} tag for marking mathematical logical groups. This is somewhat akin to the \emph{lgg} tag for \tex;-like logical groups, traditionally created in \tex; markup with braces that are not attached to a command.\footnote{Such unattached braces in \gellmu markup lead to an \emph{lg0} tag in the output of the syntactic translator that is translated to an \emph{lgg} tag in the \xml version of the didactic document type.} As with \emph{lgg} there is no obvious evidence of an \emph{mlg} tag in a typeset rendering, but the presence of such a tag is intended as a signal to downstream mathematical parsers that the contents of the tag be given grouping priority as, say, with visible parentheses. Furthermore, the \emph{mtype} and \emph{mml} attributes of the \emph{mlg} tag may be used to pass semantic information about the tag's contents to a processor. The reader is invited to do one or more of the following: \begin{itemize} \item point out inadequacies in my draft on notation. \item improve my draft on notation. \item provide code to format the above examples in \mml. \end{itemize} \end{document}