<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/css"
   href="../webstyle/gellmuart.css"?>
<!DOCTYPE article
  PUBLIC "-//GNU GPL: William F. Hammond//DTD GELLMU XML 0.7.6L//EN"
  "http://www.albany.edu/~hammond/gellmu/xml/axgellmu.dtd">
<article stem="profart"
><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><nul
/><preamble
><surtitle
>W F Hammond: LaTeX Profiles as Objects in the
          Category of Markup Languages</surtitle><title
><latex
/> Profiles as Objects in the Category of Markup Languages</title><author
>William F. Hammond</author><address
>  Dept. of Mathematics <amp
/> Statistics<brk
/> University at Albany<brk
/> Albany, New York<spc
/><spc
/>12222<spc
/><spc
/>(USA) <brk
/> <urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.albany.edu<sol mml="mo"
/><tld
/>hammond<sol mml="mo"
/></urlanch></address><date
>TeX User Group (TUG)<brk
/> San Francisco, June 2010</date><nul
/><nul
/><latexcommand
><bsl
/>setlength<lbr
/><bsl
/>topmargin<rbr
/><lbr
/><hyp
/>36bp<rbr
/></latexcommand><latexcommand
><bsl
/>setlength<lbr
/><bsl
/>textheight<rbr
/><lbr
/>690bp<rbr
/></latexcommand></preamble><body
><abstract
><parb
>The mathematical notion of <quophrase
>category</quophrase> in the context of markup
languages raises the idea of widespread use of reliable automatic
translations between markup languages<eos
/></parb><parb
><latex
/> profiles, which are dialects of <latex
/> with a fixed
command vocabulary where all macro expansions must be effective in
that vocabulary, are suitable domains for defining translations to
other profiles and, where sensible, to other markup languages<eos
/></parb><parb
>The construction of reliable translators from several journal<hyp
/>neutral
<latex
/> profiles to many journal<hyp
/>specific <latex
/> profiles would
eliminate the need for technical editing in the production flow
for academic journals<eos
/></parb></abstract><tableofcontents
/><section
>Profiled Usage of <latex
/></section><parb
>We now have 15 years of experience with various efforts to translate
<latex
/> into <abbr
>HTML</abbr>, the language of the World Wide Web<eos
/>  We know that
the task is more difficult than it appeared to be to many of us in the
mid 1990<apos
/>s<eos
/>  Part of what makes <latex
/> difficult to translate is that
<latex
/>, contrary to the impression one might gain from an initial
reading of Leslie Lamport<apos
/>s book <cite
>lamport</cite>, has never been
entirely formalized as a language unto itself independent of any
implementation for processing the language<eos
/>  Indeed, the only implementation
of <latex
/> is that originating with Lamport <pdash
/> and maintained by
The <latex
/> Project (<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.latex<hyp
/>project.org<sol mml="mo"
/></urlanch>) <pdash
/> as a
very large macro package under <tex
/><eos
/></parb><parb
>As slide<nbs
/><ref
>pretext</ref> says, success with such translation
requires profiled usage of <latex
/><eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>pretext</label><display
><bold
>Slide<nbs
/><evalref
>pretext</evalref>:<spc
/><spc
/>Translation of <latex
/></bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><tabular
><tabuhead
><tabharg
>p{1}</tabharg></tabuhead><tabubody
><taburow><firstcell><description
><item
><itemlabel
>Question:</itemlabel
><itembody
>What works well with translation software<eoq
/></itembody></item><item
><itemlabel
>Answer:</itemlabel
><itembody
>Profiled usage of <latex
/><eos
/>
<itemize
><item
><itembody
>Carefully limited command vocabulary<eos
/></itembody></item><item
><itembody
>Tuned translation software<eos
/></itembody></item></itemize></itembody></item></description></firstcell></taburow></tabubody></tabular>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Slide<nbs
/><ref
>thistalk</ref> provides a succinct statement of what I wish to
suggest<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>thistalk</label><display
><bold
>Slide<nbs
/><evalref
>thistalk</evalref>:<spc
/><spc
/>Today<apos
/>s Suggestion</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>18bp<rbr
/></latexcommand>
<display
><bold
><slnt
>formalize<nbs
/>profiled<nbs
/>usage</slnt></bold></display>
 </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display>
</parb><subsection
><latex
/> Profiles</subsection><parb
>What might be involved in formalizing profiled usage<eoq
/>  First, I am
suggesting the notion of <emph
><latex
/> profile</emph> as the framework for
multi<hyp
/>purpose <latex
/> documents<eos
/>  Slide<nbs
/><ref
>latexprofile</ref> specifies
what is meant by <quophrase
><latex
/> profile</quophrase><eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>latexprofile</label><display
><bold
>Slide<nbs
/><evalref
>latexprofile</evalref>:<spc
/><spc
/>The Notion of <latex
/> Profile</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>A dialect of LaTeX with a fixed command vocabulary where all macro
       expansions must be effective in that vocabulary<eos
/></itembody></item><item
><itembody
>A language essentially equivalent to an SGML document type with
       a canonical XML shadow<eos
/></itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>My project on <emph
>Generalized Extensible <latex
/><hyp
/>Like MarkUp</emph> (<abbr
>GELLMU</abbr>),
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.albany.edu<sol mml="mo"
/><tld
/>hammond<sol mml="mo"
/>gellmu<sol mml="mo"
/></urlanch>,
begun in 1998, underlies what I am suggesting today<eos
/>  The <abbr
>GELLMU</abbr>
<quophrase
>didactic production system</quophrase> provides, in particular, a fairly elaborate
example of what might be regarded as a <latex
/> profile although some names
in its command vocabulary are not part of current standard <latex
/> usage<eos
/>
Slide<nbs
/><ref
>tinymathsource</ref> shows the source markup for a minimal document
instance under this profile<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>tinymathsource</label><display
><bold
>Slide<nbs
/><evalref
>tinymathsource</evalref>:<spc
/><spc
/>A Simple Example</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><verblist
><nln
><bsl
/>documenttype<lbr
/>article<rbr
/></nln><nln
><bsl
/>surtitle<lbr
/>LaTeX<spc
/>Profiles<rbr
/></nln><nln
><bsl
/>title<lbr
/><bsl
/>latex<spc
/>profiles<cln
/><spc
/>An<spc
/>Example<rbr
/></nln><nln
><bsl
/>begin<lbr
/>document<rbr
/></nln><nln
></nln><nln
>It<rsq
/>s<spc
/>easier<spc
/>to<spc
/>learn<spc
/>to<spc
/>write<spc
/>in<spc
/>a</nln><nln
><bsl
/>latex<spc
/>profile<spc
/>than<spc
/>to<spc
/>learn<spc
/>to<spc
/>write</nln><nln
><bsl
/>latex<per
/></nln><nln
></nln><nln
>The<spc
/>numbers<spc
/><dol
/><bsl
/>pi<dol
/><cma
/><spc
/><dol
/>i<spc
/><eqc
/><spc
/><bsl
/>sqrt<lbr
/><hyp
/>1<rbr
/><dol
/><cma
/><spc
/>and</nln><nln
><dol
/>e<spc
/><eqc
/><spc
/><bsl
/>func<lbr
/>exp<rbr
/><lpr
/>1<rpr
/><dol
/><spc
/>are<spc
/>related<spc
/>by<spc
/>the</nln><nln
>equation</nln><nln
><bsl
/><lsb
/><spc
/>e<crt
/><lbr
/>i<bsl
/>pi<rbr
/><spc
/><eqc
/><spc
/><hyp
/>1<spc
/><bsl
/><spc
/><per
/><spc
/><bsl
/><rsb
/></nln><nln
><bsl
/>end<lbr
/>document<rbr
/></nln></verblist>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Slide <ref
>tinymathrendered</ref> shows a typeset rendition of this
minimal document instance<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>tinymathrendered</label><display
><bold
>Slide<nbs
/><evalref
>tinymathrendered</evalref>:<spc
/><spc
/><latex
/> profiles: An Example</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><parb
>It<apos
/>s easier to learn to write in a
<latex
/> profile than to learn to write
<latex
/><eos
/></parb><parb
>The numbers <tmath
><pi
/></tmath>, <tmath
>i <eqs
/> <sqrt
><hyp
/>1</sqrt></tmath>, and
<tmath
>e <eqs
/> <func
>exp</func>(1)</tmath> are related by the
equation
<displaymath
> e<sup
>i<pi
/></sup> <eqs
/> <hyp
/>1 <spc
/>. </displaymath>
 </parb></tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>gellmu</label><display
><bold
>Slide<nbs
/><evalref
>gellmu</evalref>:<spc
/><spc
/>The GELLMU Project</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>Demonstrates that the ideas in this presentation can be implemented
</itembody></item><item
><itembody
>Provides a didactic document type which may be viewed as close
       enough to being a <latex
/> profile that it can serve as a base for
       constructing profiles</itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>From the outset I should make clear that:
<enumerate
><item
><itembody
>The totality of standard usage of classical <latex
/>, as we have it,
      is not suitable for modeling as a <latex
/> profile<eos
/></itembody></item><item
><itembody
>There should be many <latex
/> profiles<eos
/></itembody></item></enumerate>
</parb><subsection
><abbr
>HTML</abbr> Translation History</subsection><parb
>A close examination of our 15 years of experience with the most successful
projects for the automatic translation of <latex
/> to <abbr
>HTML</abbr> will suggest
that such translations should take place in two stages: (a) first capture
the <latex
/> document as an <abbr
>XML</abbr> document under a document type that closely
models <latex
/>, and (b) second translate from that document type to <abbr
>HTML</abbr><eos
/>
This is, in fact, the design in the <abbr
>GELLMU</abbr> Project (see <cite
>bridge</cite>,
<cite
>dual</cite>, and <cite
>multipurpose</cite>) except that <abbr
>GELLMU</abbr> source, though
<latex
/><hyp
/>like, is not <latex
/> nor a dialect of present <latex
/><eos
/></parb><parb
>The two stage design is also integral to the remarkably successful
translator <softw
>LaTeXML</softw><footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>http:<sol mml="mo"
/><sol mml="mo"
/>dlmf.nist.gov<sol mml="mo"
/>LaTeXML<sol mml="mo"
/> </urlanch></footnote>,
initiated around 2001 at the U.S. National Institute of Standards and Technology
(NIST) under the very capable leadership of Bruce Miller for the purpose of
providing a translation route to <abbr
>HTML</abbr> (actually <abbr
>XHTML</abbr> <plu
/> <abbr
>MathML</abbr>) for the
<emph
>NIST Handbook of Mathematical Functions</emph><eos
/>  As time passed <softw
>LaTeXML</softw>
became the translation engine for the ambitious project <quophrase
>arXMLiv</quophrase><footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>kwarc.info<sol mml="mo"
/>projects<sol mml="mo"
/>arXMLiv<sol mml="mo"
/></urlanch></footnote>,
led by Michael Kohlhase of Jacobs University in Bremen,
for translation to <abbr
>XHTML</abbr><plu
/><abbr
>MathML</abbr> of Paul Ginsparg<apos
/>s large e<hyp
/>print
archive<footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.arxiv.org</urlanch></footnote>,
originally housed at Los Alamos and now located at Cornell<eos
/></parb><parb
>An older very successful project for translation from <latex
/> to <abbr
>HTML</abbr> (including,
as desired, <abbr
>XHTML</abbr><plu
/><abbr
>MathML</abbr>) is <softw
>tex4ht</softw><footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.cse.ohio<hyp
/>state.edu<sol mml="mo"
/><tld
/>gurari<sol mml="mo"
/>TeX4ht<sol mml="mo"
/></urlanch></footnote>,
developed by the late Eitan Gurari of the Ohio State University, in the years
after 1995<eos
/>  While its core technique is the use of special<hyp
/>loading in <abbr
>DVI</abbr>
files generated by <latex
/> with <softw
>tex4ht</softw> macros, since the time that the
project<apos
/>s scope was extended to generate a number of <abbr
>XML</abbr> formats other
than <abbr
>HTML</abbr>, it has seemed clear to me that the <softw
>tex4ht</softw> design would be
improved by generating <abbr
>XML</abbr> under a document type modeling the supported parts of
<latex
/> and then using standard <abbr
>XML</abbr> libraries for translation to <abbr
>HTML</abbr> and
the various other <abbr
>XML</abbr> document types<eos
/>
</parb><section
>The Advantage of Using a <latex
/> Profile</section><parb
>The crux of the problem in translating <latex
/> documents to <abbr
>HTML</abbr> is
that <latex
/>, as a whole, is not well<hyp
/>defined as a language unto
itself<eos
/>  In the <latex
/> community there is a well<hyp
/>known <quophrase
>newbie</quophrase>
question: <emph
>How can I know if my <latex
/> document is correct?</emph>  A
commonly heard answer is that a <latex
/> document is correct if it runs
seamlessly through <latex
/>, the program.<footnote
>A tougher standard,
probably unreasonably tough, might be that a <latex
/> document is correct if
it runs through <latex
/> and also through the <softw
>tex4ht</softw> driver script
<qquostr
>mzlatex</qquostr> for generating <abbr
>XHTML</abbr><plu
/><abbr
>MathML</abbr>.</footnote></parb><parb
>The whole of <latex
/>, with maximally sane mixing and matching of
packages and arbitrary <quophrase
>legal</quophrase> (see Lamport <cite
>lamport</cite>,
Appendix E) excursions into the world of plain <tex
/>, is suitable for
translation to printer languages (either specific printer languages
or, more commonly <abbr
>DVI</abbr> and <abbr
>PDF</abbr>) but not suitable for reliable
automatic translation to <abbr
>HTML</abbr> or to common author<hyp
/>level document
formats<eos
/>
</parb><subsection
>Language specification</subsection><parb
>When a list of <latex
/> commands, perhaps 500 to 1500 in number<footnote
>Imagine culling these commands from the <latex
/> core and from one<apos
/>s
favorite packages; but note that one is just assembling a list of commands
and is not in any way thereby adopting segments of packages.</footnote>, is
fixed, and when rules for usage of those commands in relation to each
other, i.e., what commands are allowed to appear in a given context,
are given, then one has something that is essentially equivalent to
an <abbr
>SGML</abbr><footnote
><emph
>Standard Generalized Markup Language</emph>, an ISO
standard<eos
/>  See Goldfarb<apos
/>s <emph
>Handbook</emph> <cite
>goldfarb</cite> for a copy
of the standard, and see <urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.sgmlsource.com<sol mml="mo"
/></urlanch> for amendments
to the standard.</footnote>
document type<eos
/>  It is straightforward to construct an <abbr
>XML</abbr><footnote
><emph
>Extensible Markup Language</emph>, a World Wide Web Consortium (W3C)
standard <cite
>w3cxml</cite>.</footnote>
shadow<eos
/>  The reason for the dual track is that dialects of classical
<latex
/> can be more closely modeled with <abbr
>SGML</abbr> than with <abbr
>XML</abbr>, which is
<abbr
>SGML</abbr> dumbed down for use on the World Wide Web<eos
/>  The difference here
between <abbr
>SGML</abbr> and <abbr
>XML</abbr> is a question of convenience for authors<eos
/>  For
example, if we want blank lines to begin new paragraphs without the
tediously redundant explicit closing of previous paragraphs, then we
want the umbrella of <abbr
>SGML</abbr> in<hyp
/>house for the formal structuring of a
<latex
/> profile rather than the <abbr
>XML</abbr> umbrella<eos
/></parb><parb
>When a document language is implemented under the <abbr
>SGML</abbr> umbrella, then
<enumerate
><item
><itembody
>It is possible to know with varying degrees of precision, as
       required, when a document instance is technically correct<eos
/></itembody></item><item
><itembody
>Correct document instances can be translated automatically to
       other suitable formats with a very high degree of reliability<eos
/></itembody></item><item
><itembody
>Software libraries are available for most computer languages to
       facilitate automated translation and other forms of automatic
       processing such as, for example, automatic extraction of metadata<eos
/></itembody></item></enumerate>
</parb><subsection
>Categories: A  Metaphor</subsection><parb
>At this point it is relevant to mention the mathematical notion of
<emph
>category</emph><eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>categories</label><display
><bold
>Slide<nbs
/><evalref
>categories</evalref>:<spc
/><spc
/>Notion of Category</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>A category consists of:
  <enumerate
><item
><itembody
>Objects
    </itembody></item><item
><itembody
>Arrows between objects
  </itembody></item></enumerate></itembody></item><item
><itembody
>Rule: An arrow followed by a second is also an arrow</itembody></item><item
><itembody
>Relevance: to suggest a way of thinking about markup</itembody></item><item
><itembody
>(No plans for actually using category theory)</itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>My reason for introducing the concept of <emph
>category</emph> here is
not for the purpose of applying category theory but for the purpose
of suggesting different ways of thinking about how the community
handles its documents<eos
/>  In particular, I<apos
/>m trying to suggest a way
of thinking about how the systematic use of translations between
document formats can improve the way we operate with our documents<eos
/>
The largest relevant category here is the category of all markup
languages:</parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>markupcat</label><display
><bold
>Slide<nbs
/><evalref
>markupcat</evalref>:<spc
/><spc
/>The Category of Markup Languages</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>Markup languages are the objects</itembody></item><item
><itembody
>Translations are the arrows</itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Slide <ref
>glmarrows</ref> shows the principal objects and arrows in
the category of markup languages associated with the <abbr
>GELLMU</abbr>
didactic production system<eos
/></parb><parb
><display
> <tabular
><tabuhead
><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>glmarrows</label> </firstcell></taburow><taburow
><firstcell><bold
>Slide<nbs
/><evalref
>glmarrows</evalref>:<spc
/><spc
/>Objects and Arrows in <abbr
>GELLMU</abbr></bold></firstcell></taburow
><taburow
><firstcell><tabular
><tabuhead
><tabharg
>lcr</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/><nbs
/> </firstcell><tabampcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{.14}p{.07}p{.12}p{.07}p{.06}</tabharg></tabuhead><tabubody
><taburow><firstcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><abbr
>GELLMU</abbr></bold></firstcell></taburow><taburow
><firstcell><bold
>source</bold></firstcell></taburow
><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </firstcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale=".06"
>Arrows<sol mml="mo"
/>rightarrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><abbr
>SGML</abbr></bold></firstcell></taburow><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </tabampcell></taburow><taburow
><firstcell><nbs
/>                    </firstcell><tabampcell>   <nbs
/>             </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.008"
>Arrows<sol mml="mo"
/>downarrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell></taburow
><taburow
><firstcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
>Outside</bold></firstcell></taburow><taburow
><firstcell><bold
><abbr
>SGML</abbr></bold></firstcell></taburow
><taburow
><firstcell><bold
>source</bold></firstcell></taburow
><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular>  </firstcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale=".06"
>Arrows<sol mml="mo"
/>rightarrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell><tabampcell>                             <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
>Author<hyp
/></bold></firstcell></taburow><taburow
><firstcell><bold
>level</bold></firstcell></taburow
><taburow
><firstcell><bold
><abbr
>XML</abbr></bold></firstcell></taburow
><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </tabampcell></taburow
><taburow
><firstcell><nbs
/>                    </firstcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.04"
>Arrows<sol mml="mo"
/>swarrow</includegraphics></display></firstcell></taburow></tabubody></tabular>  </tabampcell><tabampcell>         <nbs
/>        </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.04"
>Arrows<sol mml="mo"
/>searrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell></taburow
><taburow
><firstcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><abbr
>PDF</abbr></bold></firstcell></taburow><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </firstcell><tabampcell>   <nbs
/>     </tabampcell><tabampcell>        <nbs
/>     </tabampcell><tabampcell>   <nbs
/>  </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><abbr
>HTML</abbr></bold></firstcell></taburow><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular></tabampcell></taburow
></tabubody></tabular>
 </tabampcell><tabampcell>  <nbs
/><nbs
/> </tabampcell></taburow></tabubody></tabular> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Classical <latex
/> is, more or less, a markup language<eos
/>  While many
useful arrows can point toward <latex
/>, few useful arrows point
from <latex
/> toward markup languages other than printer languages<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>classicallatex</label><display
><bold
>Slide<nbs
/><evalref
>classicallatex</evalref>:<spc
/><spc
/>Classical <latex
/>: an object in the category</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><display
><bold
>(to the extent that classical <latex
/></bold><brk
/> <bold
>is a well<hyp
/>defined language)</bold></display>
<itemize
><item
><itembody
><latex
/> is a reasonable translation target (for author<hyp
/>level
      markup languages)<eos
/></itembody></item><item
><itembody
><latex
/> is a poor domain for translation to languages other
      than printer languages<eos
/></itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Classical <latex
/> is does not fall under the umbrella of <abbr
>SGML</abbr>, but
classical <abbr
>HTML</abbr> does<eos
/>  While classical <abbr
>HTML</abbr> is not under the umbrella
of <abbr
>XML</abbr>, there is a variant of <abbr
>HTML</abbr> called <abbr
>XHTML</abbr> that is<eos
/>
</parb><subsection
><abbr
>SGML</abbr> and <abbr
>XML</abbr></subsection><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>sgmlxml</label><display
><bold
>Slide<nbs
/><evalref
>sgmlxml</evalref>:<spc
/><spc
/>SGML <amp
/> XML</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>SGML is a subcategory of the category of all markup languages</itembody></item><item
><itembody
>XML is a subcategory of SGML</itembody></item><item
><itembody
>XML is SGML made suitable for the World Wide Web</itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
><abbr
>SGML</abbr> is designed so as to facilitate the construction of arrows
emanating from an <abbr
>SGML</abbr> document type<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>gooddomains</label><display
><bold
>Slide<nbs
/><evalref
>gooddomains</evalref>:<spc
/><spc
/>Good domains for translation</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>Author<hyp
/>level <abbr
>SGML</abbr> and <abbr
>XML</abbr> document types are, by design, good
       domains for translation, i.e., arrows can flow <bold
>from</bold> these
       document types<eos
/></itembody></item><item
><itembody
>Arrows can be <quophrase
>chained</quophrase>; these pipelines work well<eos
/></itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Let me suggest that in a properly designed system the chaining of
arrows, i.e., translations, should take place at the command line<eos
/>
This makes it possible for the user to switch components (translators)
from time to time, and it provides the opportunity for the user to run
correctness tests at intermediate stages<eos
/></parb><parb
>While the use of translations between document formats has not been
part of regular <latex
/> practice, the use of translations has not been
far away<eos
/>
</parb><subsection
><sopt
></sopt><sprefix
><label
>texi</label></sprefix><shead
>Example: <slnt
>Texinfo</slnt></shead></subsection><parb
><slnt
>Texinfo</slnt>, the language of the GNU Documentation System, was originally a
vehicle for the simultaneous generation from a single source
of (1) print output (via <abbr
>DVI</abbr>) and (2) <quophrase
>Info</quophrase>, an
early form of hypertext predating <abbr
>HTML</abbr><eos
/>  Historically, <slnt
>Texinfo</slnt>
had been processed by the <tex
/> engine with <slnt
>Texinfo</slnt> macros for print and
either by the GNU Emacs Lisp engine or by a free<hyp
/>standing C program, called
<softw
>info</softw>, for Info hypertext<eos
/>  When <abbr
>HTML</abbr> came along, it became
easily  possible for the program <softw
>info</softw> to generate <abbr
>HTML</abbr> as
well as Info<eos
/>  It has been obvious from the beginning to anyone
asking the question that <slnt
>Texinfo</slnt>, which has a careful
language definition, is equivalent to an <abbr
>SGML</abbr> document type<eos
/>  This
was formalized in the year 2000 with Daniele Giacomini<apos
/>s
<quophrase
>Sgmltexi</quophrase><footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.archive.org<sol mml="mo"
/>details<sol mml="mo"
/>sgmltexi</urlanch></footnote>,
and a few years later an independent <abbr
>XML</abbr> version of <slnt
>Texinfo</slnt> was incorporated
in the <slnt
>Texinfo</slnt> distribution<eos
/></parb><parb
>Because of its different markup syntax and command vocabulary relative
to <latex
/>, it is not sensible to think of <slnt
>Texinfo</slnt> as a <latex
/>
profile<eos
/>  But aside from those differences, it is a long<hyp
/>standing example
of something that is the same type of object as a <latex
/> profile<eos
/></parb><parb
>As an object in the category of markup languages <slnt
>Texinfo</slnt> can serve usefully
as both origin and target for arrows<eos
/>  This is often the case with
author<hyp
/>level <abbr
>SGML</abbr> and <abbr
>XML</abbr> document types<eos
/>
</parb><subsection
><sopt
></sopt><sprefix
><label
>tds</label></sprefix><shead
>Example: the <emph
>tdsguide</emph> document class</shead></subsection><parb
>Another instance of the use of format translations lies in the
production during the late 1990<apos
/>s of the specification document for
the <tex
/> Directory System (TDS),
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>mirror.ctan.org<sol mml="mo"
/>tds.zip</urlanch><eos
/>  Ulrik Vieth, the editor,
devised a set<hyp
/>up under which the TDS specification could be written in
<latex
/> and processed either as a <latex
/> document or as a <slnt
>Texinfo</slnt> document
(for Info and <abbr
>HTML</abbr> outputs)<eos
/>  Of course, there was a finite list of
<latex
/> commands (and environments) associated with the TDS <latex
/>
source<eos
/>  In effect, this system can be said to
amount to the ad hoc construction <pdash
/> not formalized <pdash
/> of (1) a
<latex
/> profile and (2) a program for translating that <latex
/> profile
to <slnt
>Texinfo</slnt><eos
/>

<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/>
<nul
/></parb><parb
><display
> <tabular
><tabuhead
><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>tdsroutes</label> </firstcell></taburow><taburow
><firstcell><bold
>Slide<nbs
/><evalref
>tdsroutes</evalref>:<spc
/><spc
/><emph
>tdsguide</emph>: Two Routes to <abbr
>PDF</abbr></bold></firstcell></taburow
><taburow
><firstcell><tabular
><tabuhead
><tabharg
>lcr</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/><nbs
/> </firstcell><tabampcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{.11}p{.06}p{.11}p{.06}p{.08}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/> </firstcell></taburow><taburow
><firstcell><tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
>TDS</bold></firstcell></taburow><taburow
><firstcell><bold
>source</bold></firstcell></taburow
><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </firstcell><tabampcell>  <empty
/> </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.06"
>Arrows<sol mml="mo"
/>rightarrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell><tabampcell>  <empty
/> </tabampcell><tabampcell>                                                     <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><slnt
>Texinfo</slnt></bold></firstcell></taburow><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular></tabampcell></taburow
><taburow
><firstcell><empty
/>       </firstcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.04"
>Arrows<sol mml="mo"
/>searrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell><tabampcell>   <empty
/>  </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
>p{0.7}</tabharg></tabuhead><tabubody
><taburow><firstcell><display
><includegraphics scale="0.04"
>Arrows<sol mml="mo"
/>swarrow</includegraphics></display></firstcell></taburow></tabubody></tabular> </tabampcell><tabampcell>  <empty
/> </tabampcell></taburow
><taburow
><firstcell><empty
/>       </firstcell><tabampcell>     <empty
/>   </tabampcell><tabampcell>  <tabular
><tabuhead
><tabopt
>m</tabopt><tabharg
><vbr
/>c<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><bold
><abbr
>PDF</abbr></bold></firstcell></taburow><taburow
><firstcell><hline
/></firstcell></taburow
></tabubody></tabular> </tabampcell></taburow
><taburow
><firstcell><nbs
/></firstcell></taburow
></tabubody></tabular>
 </tabampcell><tabampcell>  <nbs
/><nbs
/> </tabampcell></taburow></tabubody></tabular> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Note that although the <latex
/> source <quostr
>tds.tex</quostr> is very nicely
structured, there are two reasons why a direct<hyp
/>to<hyp
/>html translation
program might be expected to have trouble with it<eos
/>  First, it is
written under the documentclass <emph
>tdsguide</emph>; I am not aware of any
direct<hyp
/>to<hyp
/>html translator with knowledge of that documentclass<eos
/>
Second, the document uses <emph
>manmac</emph> syntax, which is part of plain
<tex
/> rather than <latex
/><eos
/></parb><parb
>Moreover, inasmuch as it is reasonable to think about constructing a
translation to regular <latex
/> from any author<hyp
/>level <abbr
>XML</abbr> document
type, it is, in particular, reasonable to imagine the possibility of
someone constructing a translation from (the <abbr
>XML</abbr> guise of) <slnt
>Texinfo</slnt>
to <latex
/><eos
/>  That would offer a third (and different) route to <abbr
>PDF</abbr> for
<emph
>tdsguide</emph> documents<eos
/>  Beyond that it is reasonable to think about
constructing a translation from <slnt
>Texinfo</slnt> to <abbr
>GELLMU</abbr> article, and,
following that with the translation to <latex
/> provided for <abbr
>GELLMU</abbr>
article would provide a fourth route to <abbr
>PDF</abbr> for <emph
>tdsguide</emph>
documents<eos
/>
</parb><section
>How <latex
/> Profiles Might be Deployed</section><parb
>There are many advantages<eos
/>
</parb><subsection
>Traditional <latex
/> authors</subsection><parb
>We know that a very substantial portion of the community of <latex
/>
authors is interested in being able to <quophrase
>pull</quophrase> <abbr
>HTML</abbr> from <latex
/>
documents<eos
/>  There are frequent questions in the UseNet newsgroup
<path
>comp.text.tex</path> about using translation programs<eos
/>  There is a
recurring theme in discussions there where the participants are
seeking a <latex
/> authoring interface <pdash
/> a better form of <latex
/>
markup <pdash
/> that is robust for translation to other formats,
particularly <abbr
>HTML</abbr><eos
/>  Another recurring theme that is sometimes
intertwined with the former theme is that of having a version of
<latex
/> that enables an author to focus on content<eos
/>  Of course, there
is some irony in this latter theme in that Lamport in his book
<cite
>lamport</cite>explicitly states that this is the purpose of <latex
/> <pdash
/>
as is indeed the case, when <latex
/> is used well<eos
/>  Thus, the latter
theme may be interpreted to be about somehow <quophrase
>enforcing</quophrase> the use
of <latex
/> as Lamport intended<eos
/></parb><parb
>One or more <latex
/> profiles sponsored by the <latex
/> Project could
meet these requests<eos
/>
</parb><subsection
><latex
/> for Beginners</subsection><parb
>With a suitably literate system for constructing <latex
/> profiles
it should be a relatively simple matter to produce a command glossary
for a given <latex
/> profile<eos
/></parb><parb
>Combine the availability of a definitive command glossary with the
enforcement of sane markup provided by routine structural validation
in the process of running <latex
/> on a document instance under a <latex
/>
profile, and it is not difficult to see why it should be easier for
a beginner to learn a <latex
/> profile than to learn classical <latex
/><eos
/>
</parb><subsection
><latex
/><apos
/>s interface with established <abbr
>SGML</abbr> document types</subsection><parb
>Although provision for typesetting <abbr
>SGML</abbr> and <abbr
>XML</abbr> has been a stated
goal of the <latex
/>3 Project, almost all of the Project<apos
/>s work so far
has been focused on developing the infra<hyp
/>structure for writing
document classes and packages<eos
/>  The community is just beginning to
harvest the results of that work<eos
/></parb><parb
>Another aspect of the situation with <abbr
>SGML</abbr> and <abbr
>XML</abbr> in relation to
<latex
/> is that while <latex
/> is used by a very large community of
authors, it does not seem to be the case that large crowds of original
authors have migrated to well<hyp
/>known document types such as that of
the Text Encoding Initiative (<abbr
>TEI</abbr>),
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.tei<hyp
/>c.org</urlanch>, which provides a vehicle for capturing
electronic versions of classical printed texts, and the
<emph
>DocBook</emph><footnote
><urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.oasis<hyp
/>open.org<sol mml="mo"
/>docbook<sol mml="mo"
/></urlanch></footnote>
document type, of the Organization for the Advancement of Structured
Information Standards (<abbr
>OASIS</abbr>), oriented (like <slnt
>Texinfo</slnt>) toward
documentation of technical work<eos
/></parb><parb
>Well supported <abbr
>SGML</abbr> and <abbr
>XML</abbr> document types such as these typically
are accompanied by formatting code for reaching both <abbr
>HTML</abbr> for online
presentation and <abbr
>PDF</abbr> for print presentation<eos
/></parb><parb
>Some tentative and rather incomplete experiments<footnote
>These involved
using <softw
>sgmlspl</softw>, about which there is a section in <emph
>The <latex
/>
Web Companion</emph> <cite
>lwc</cite>, and which is the staged translation workhorse
in the <abbr
>GELLMU</abbr> Project, to begin building a translator from <emph
>DocBook</emph>
to <abbr
>GELLMU</abbr> <emph
>article</emph>, sufficient for handling four particular document
instances.</footnote>
I have undertaken, with the <abbr
>GELLMU</abbr> didactic document type playing the
role of a <latex
/> profile, suggest to me that the process of formatting
<abbr
>SGML</abbr> and <abbr
>XML</abbr> documents for print and <abbr
>HTML</abbr> can be improved by first
translating to a suitable <latex
/> profile<eos
/>  This may seem contrary to
common sense<eos
/>  The first point, however, is that numbering and
cross<hyp
/>references can be worked out at an early stage, so that one can
have consistency in this regard between the print and <abbr
>HTML</abbr> outputs<eos
/>
The second point is metaphorical<eos
/>  Think of the trip from a source
document to an end format as a downhill journey<eos
/>  One can jump the
entire distance, or one can move more slowly, checking in at way
stations along a path; at each of these stages one strives to retain
as much as possible for that stage of the author<apos
/>s expressed intention
as found in the source<eos
/>
</parb><subsection
>Suggestions for <latex
/> Evolution</subsection><parb
>Slide <ref
>latexproject</ref> presents a capsule description of what
I think the <latex
/> Project should undertake in order to support
the generation of <abbr
>HTML</abbr> and other non<hyp
/>traditional formats from
<latex
/> source<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>latexproject</label><display
><bold
>Slide<nbs
/><evalref
>latexproject</evalref>:<spc
/><spc
/>Suggestion for the <latex
/> Project</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>Sponsor one or more reference profiles</itembody></item><item
><itembody
>Sponsor translations from reference profiles to
      <abbr
>PDF</abbr> and <abbr
>HTML</abbr><eos
/></itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Because the <latex
/> Project needs to continue to provide support for
legacy documents, a document instance written under a <latex
/> profile
must be clearly identifiable at the outset<eos
/>  My suggestion, used from
the outset in the <abbr
>GELLMU</abbr> Project, is that one of these new document
instances, prepared under a <latex
/> profile, should begin with
<quostr
><bsl
/>documenttype</quostr> rather than <quostr
><bsl
/>documentclass</quostr><eos
/></parb><parb
>The argument of <emph
>documenttype</emph> should be the name of the root
element in the <abbr
>XML</abbr> document type corresponding to the <latex
/> profile
being used<eos
/>  The name of the root element in an <abbr
>XML</abbr> document type
falls far short of specifying completely what document type definition
(command list) is involved<eos
/>  With <abbr
>GELLMU</abbr> <quostr
><bsl
/>documenttype</quostr> has an
option whose content is typically a string that serves as a key to (or
name for) a data structure that has been made known to the syntactic
translator<eos
/>  (See <ssec
/> 3.1 of the <emph
><abbr
>GELLMU</abbr> Manual</emph>
<cite
>glman</cite>.)  If this option is missing, the syntactic translator
looks for a default value for that key corresponding to the name of
the root element<eos
/>  While presently in <abbr
>GELLMU</abbr> the documenttype option
points to information characterizing the document type and style
choices are determined by the manner of running processors on a
document instance, it would be possible with <latex
/> profiles, if
desired, to incorporate style choice information in the data
structures behind these keys<eos
/></parb><parb
>As with the ad hoc system created for the TDS specification (section
<sref
>tds</sref>) there will be various choices for processing a document
instance prepared under a <latex
/> profile<eos
/>  In particular, there are
a number of choices for print formatting<eos
/>  Slide <ref
>printroute</ref>
indicates three possibilities:</parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>printroute</label><display
><bold
>Slide<nbs
/><evalref
>printroute</evalref>:<spc
/><spc
/>Paper Typesetting of a <latex
/> Profile</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell>There are several possibilities:
<itemize
><item
><itembody
>Translate to classical <latex
/></itembody></item><item
><itembody
>Translate to <softw
>Context</softw></itembody></item><item
><itembody
>Teach <latex
/> itself to digest the profile</itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>In case it is not completely clear, I should point out that the third
of these routes might be substantially different from the first two in
that the latter probably should involve first explicitly generating
the <abbr
>XML</abbr> shadow of the document instance and then translating from
there<eos
/>  If one is also going to have <abbr
>HTML</abbr> output, it would, of
course, be expected that the <abbr
>HTML</abbr> output would be translated from the
same <abbr
>XML</abbr> shadow<eos
/>  With the third route, however, there will be the
question of bypassing generation of a formal <abbr
>XML</abbr> shadow and then
losing the advantage of structural validation <pdash
/> or maybe constructing
the <abbr
>XML</abbr> shadow for structural validation and for staging non<hyp
/>print
outputs but generating the print output directly from the source<eos
/></parb><parb
>At this point I hope that the suggestions in Slide <ref
>publishing</ref>
will be obvious<eos
/></parb><parb
><display
><tabular
><tabuhead
><tabharg
><vbr
/>p<vbr
/></tabharg><hline
/></tabuhead><tabubody
><taburow><firstcell><label series="frame"
>publishing</label><display
><bold
>Slide<nbs
/><evalref
>publishing</evalref>:<spc
/><spc
/>Publishing</bold></display></firstcell></taburow><taburow
><firstcell><latexcommand
><bsl
/>vspace<ast
/><lbr
/><hyp
/>24bp<rbr
/></latexcommand> <display
><tabular
><tabuhead
><tabharg
>p{0.03}p{0.65}p{0.03}</tabharg></tabuhead><tabubody
><taburow><firstcell><nbs
/></firstcell><tabampcell><itemize
><item
><itembody
>Encourage maintainers of <abbr
>XML</abbr> document types
       to reach <abbr
>HTML</abbr> and <abbr
>PDF</abbr> by translating first
       to reference <latex
/> profiles</itembody></item><item
><itembody
>Encourage authors to submit articles to
       journals as <latex
/> instances under reference profiles<eos
/></itembody></item></itemize>
 </tabampcell><tabampcell>  <nbs
/> </tabampcell></taburow></tabubody></tabular></display> </firstcell></taburow
><taburow
><firstcell><hline
/> </firstcell></taburow
></tabubody></tabular></display></parb><parb
>Technical editing by a journal should not be necessary when an
article is submitted under a reference <latex
/> profile<eos
/>  The journal
will have its own profile that is a modification of a reference
profile enabling the journal to incorporate metadata<eos
/>  For each
article a journal will prepare metadata, and the journal<apos
/>s processing
stream will merge that metadata with the author<apos
/>s source to generate
a document instance under the journal<apos
/>s profile that, in turn, will
be processed to end formats using the journal<apos
/>s formatting software<eos
/>
</parb><section
>Issues with Implementation</section><parb
>Within the <abbr
>GELLMU</abbr> project, particularly its didactic production system,
there is demonstration that everything discussed here is possible<eos
/>
The question is how these ideas might be introduced so as to provide
as smooth as possible a transition in authoring techniques for those
<latex
/> users who wish to avail themselves of the advantages of source
markup that is amenable to generalized processing rather than only
processing for print by <tex
/> engines<eos
/>
</parb><subsection
>Syntax</subsection><parb
>The discussion following slide <ref
>printroute</ref> suggests that a possible
route to print for a document instance under a <latex
/> profile might
bypass the profile<apos
/>s <abbr
>XML</abbr> shadow<eos
/>  There are related questions:
<enumerate
><item
><itembody
>Might a modern engine like <quostr
>luatex</quostr> be a good vehicle for
       generating the <abbr
>SGML</abbr> shadow<eoq
/>  Similarly, might such an engine
       be a better vehicle than the GNU Emacs Lisp engine for generating
       the <slnt
>Texinfo</slnt> version of the TDS specification (see section <sref
>tds</sref>)<eoq
/></itembody></item><item
><itembody
>Shall the engine used to generate the <abbr
>SGML</abbr> shadow use knowledge
       (unlike the <abbr
>GELLMU</abbr> syntactic translator) of the
       corresponding document type definition<footnote
>That the <abbr
>GELLMU</abbr> syntactic translator operates only on syntax, largely
without knowledge of command vocabulary, enables the syntactic translator
to be employed for writing virtually any <abbr
>SGML</abbr> or <abbr
>XML</abbr> document type using
directly the vocabulary of that document type with the advantage for
the author of being able to use <abbr
>GELLMU</abbr><apos
/>s <emph
>newcommand</emph> with arguments.</footnote>
       in so doing<eoq
/>  For example, shall this stage of processing be
       allowed to know that <quostr
><bsl
/>frac</quostr> takes two arguments, numerator and
       denominator, and to know what the names of those arguments are<eoq
/></itembody></item></enumerate>
In regard to the second of these questions, if the processor for generation
of the <abbr
>SGML</abbr> shadow is allowed to use knowledge of command vocabulary, then
the syntactical requirements for a document instance could be somewhat
looser than in <abbr
>GELLMU</abbr><eos
/>  For example, as in <latex
/> but not in <abbr
>GELLMU</abbr>,
spaces could be allowed between the successive arguments and options in
a command invocation<eos
/>  This would be both possible and, in a sense,
author<hyp
/>friendly<eos
/>  However, I do not recommend loose syntax<eos
/>  The syntactic
tightness of <abbr
>GELLMU</abbr> was motivated by that of <slnt
>Texinfo</slnt><eos
/>  The enforcement of
syntactic tightness can help prevent author errors<eos
/>  Moreover, the overall
design of processing is more <quophrase
>modular</quophrase> when the first stage deals only
with syntax<eos
/></parb><parb
>Also if the processor for generation of the <abbr
>SGML</abbr> shadow incorporates
knowledge of the command vocabulary, then it may be reasonable for that
processor to write the <abbr
>XML</abbr> shadow directly without first going through
an <abbr
>SGML</abbr> shadow and then relying on an <abbr
>SGML</abbr> parser and a subsequent
processor with knowledge of the command vocabulary to write the <abbr
>XML</abbr>
shadow<eos
/>
</parb><subsection
>Counters</subsection><parb
>While <latex
/> has infrastructure for managing counters, there is nothing
entirely parallel in the <abbr
>SGML</abbr> world<eos
/>  Document types can provide hooks
for counting, and the processors operating on those document types can
take those into account<eos
/>  Section 5.5 in the <emph
><abbr
>GELLMU</abbr> Manual</emph>
<cite
>glman</cite>, <quophrase
>Labels, References, and Anchors</quophrase>, explains the approach
to this in the <abbr
>GELLMU</abbr> didactic production system<eos
/></parb><parb
>Where there are to be multiple end formats of a given document
instance, it is best if counters, numbering, and cross<hyp
/>references are
managed centrally, as in the <abbr
>GELLMU</abbr> didactic production system, so
that there is consistency among the various end formats<eos
/>
</parb><subsection
>Names</subsection><parb
>For a faithful representation<footnote
>Faithful to the source apart from
<emph
>newcommand</emph>s that should appear expanded.</footnote>
of source markup under a <latex
/> profile as an <abbr
>XML</abbr> document every item
of <latex
/> markup needs to have a name<eos
/></parb><parb
>For the document type of the <abbr
>GELLMU</abbr> didactic production system the minimum
number of characters in a command name is three<eos
/>  One and two character names are
reserved for user macros<eos
/>  While this is not necessary, I recommend it<eos
/></parb><parb
>A number of frequently used commands in classical <latex
/> do not have
names<eos
/>  The <abbr
>SGML</abbr> and <abbr
>XML</abbr> shadows need names for them<eos
/>  For example, <quostr
><tld
/></quostr>
is <quophrase
>non<hyp
/>breaking space</quophrase> in <latex
/><eos
/>  In the <abbr
>GELLMU</abbr> didactic production
system it becomes the empty element named <emph
>nbs</emph>.<footnote
>Of course,
<quophrase
>non<hyp
/>breaking space</quophrase> is the Unicode character U<hyp
/>00A0, but writing that
in the <abbr
>XML</abbr> shadow would make the shadow not a faithful representation of
the source.</footnote></parb><parb
>While the argument in a <latex
/> command such as <quostr
><bsl
/>emph</quostr> simply corresponds
to the content of an element <quostr
><ltc
/>emph<gtc
/></quostr> in the <abbr
>XML</abbr> shadow, the
arguments in a command taking more than one argument such as <quostr
><bsl
/>frac</quostr> need
to be named<eos
/>  Thus, for example, <quostr
><bsl
/>frac<lbr
/>3<rbr
/><lbr
/>7<rbr
/></quostr> would be represented in
the <abbr
>XML</abbr> shadow as
<display
><quostr
><ltc
/>frac<gtc
/><ltc
/>numr<gtc
/>3<ltc
/><sol mml="mo"
/>numr<gtc
/><ltc
/>denm<gtc
/>7<ltc
/><sol mml="mo"
/>denm<gtc
/><ltc
/><sol mml="mo"
/>frac<gtc
/></quostr> <eos
/></display>
</parb><subsection
>Special <abbr
>ASCI</abbr>I Characters</subsection><parb
>One commonly sees the 128 characters in the <abbr
>ASCII</abbr> character set
in a table of 8 rows of 16 characters each<eos
/>  The first 2 rows are control
characters that are, apart from newlines, non<hyp
/>printable and not used either
in <latex
/> or in <abbr
>SGML</abbr> document types<eos
/>  Thus there are 6 rows of 16 characters
that are the printable <abbr
>ASCII</abbr> characters except for the very last of
these, which is not printable and not relevant here<eos
/>  Within the <abbr
>ASCII</abbr>
realm, we need to deal with the 95 printable characters<eos
/>  Of these 62
are alpha<hyp
/>numeric <rdash
/> upper and lower case letters and numerals<eos
/>  The 33
remaining printable <abbr
>ASCII</abbr> characters are the <quophrase
>special</quophrase> <abbr
>ASCII</abbr>
characters<eos
/></parb><parb
>Within the realm of electronic formats each of the 33 special <abbr
>ASCII</abbr>
characters is a candidate for use as a control character of some type<eos
/>
For this reason it is wise that a name be provided for each of these characters
in a <latex
/> profile<eos
/>  This is the case in the <abbr
>GELLMU</abbr> didactic document
type<eos
/>  Thus, for example, <quostr
><lbr
/></quostr> has markup meaning in <latex
/>, and
one may use <quostr
><bsl
/><lbr
/></quostr> to place an actual left brace in one<apos
/>s document;
in the <abbr
>GELLMU</abbr> didactic production system <quostr
><bsl
/><lbr
/></quostr> is represented
by the empty element <quostr
><ltc
/>lbr<sol mml="mo"
/><gtc
/></quostr> in the <abbr
>XML</abbr> shadow<eos
/>  The character <quostr
><atc
/></quostr> is
only a bit different<eos
/>  Normally it is perfectly safe to use this character
for itself in a <latex
/> document, and normally there is no harm in passing
it through as itself to the <abbr
>XML</abbr> shadow<eos
/>  If, however, the author, as in
the case of the TDS specification (see <sref
>tds</sref>), wants to translate the
document to <slnt
>Texinfo</slnt>, there is suddenly a problem since <quostr
><atc
/></quostr> has markup significance
in <slnt
>Texinfo</slnt><eos
/></parb><parb
>For each of these 33 special characters there can be found contexts where
they have markup or <quophrase
>control</quophrase> significance<eos
/>  Names should be available
for all of them<eos
/>
</parb><subsection
>Non<hyp
/><abbr
>ASCII</abbr> Characters</subsection><parb
>Because <tex
/> and <latex
/> originally handled only 7 bit characters, <latex
/>
has legacy names for characters that are no longer strictly necessary
or, at least, almost no longer strictly necessary in the sense that we expect
unicode<hyp
/>capable modern <tex
/> engines soon to be mainstreamed<eos
/>  For example,
there is the character <squophrase
><csll
/></squophrase>, U<hyp
/>0142, which may be entered as
<quostr
><bsl
/>l</quostr><footnote
>In keeping with the thought that one character
names should be reserved for user macros, the name for this character in
the <abbr
>GELLMU</abbr> didactic production system is <quostr
><bsl
/>csll</quostr>.</footnote>
in <latex
/> and as <quostr
><amp
/>lstrok;</quostr> in classical <abbr
>HTML</abbr><eos
/></parb><parb
>For the long term it seems clear that names for Unicode characters beginning
with the Latin 1 range of Unicode are not needed<eos
/>
</parb><subsection
>CSS</subsection><parb
><abbr
>CSS</abbr> stands for <quophrase
>Cascading Style Sheets</quophrase>, which is a web
technology for controlling the appearance of <abbr
>HTML</abbr> and of arbitrary
author<hyp
/>level <abbr
>XML</abbr> document types for display in mainstream web browsers<eos
/></parb><parb
>At the point where some <latex
/> documents have <abbr
>XML</abbr> shadows, one may become
interested in writing <abbr
>CSS</abbr> sheets for governing the display
of those <abbr
>XML</abbr> shadows in web browsers<eos
/>  Beyond that the question
arises whether there might some day be gain in using <abbr
>CSS</abbr> sheets
to govern, at least in part, the typesetting of such a document by <latex
/><eos
/>

</parb><thebibliography
><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>w3cxml</bibkey></bibhead><bibbody
> Tim Bray, Jean Paoli, <amp
/> C. M. Sperberg<hyp
/>McQueen,
<emph
>Extensible Markup Language (XML) 1.0</emph>, World Wide Web Consortium
Recommendation, 10 February 1998,
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.w3.org<sol mml="mo"
/>TR<sol mml="mo"
/>1998<sol mml="mo"
/>REC<hyp
/>xml<hyp
/>19980210</urlanch>, currently
superseded by <urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.w3.org<sol mml="mo"
/>TR<sol mml="mo"
/>REC<hyp
/>xml<sol mml="mo"
/></urlanch><eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>goldfarb</bibkey></bibhead><bibbody
> Charles F. Goldfarb, <emph
>The SGML Handbook</emph>,
Oxford University Press, 1990<eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>lwc</bibkey></bibhead><bibbody
> Michel Goossens and Sebastian Rahtz et al., <emph
>The <latex
/>
Web Companion</emph>, Addison<hyp
/>Wesley, 1999<eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>lamport</bibkey></bibhead><bibbody
> Leslie Lamport, <latex
/>: A Document Preparation System,
2nd Edition, Addison<hyp
/>Wesley, 1994<eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>glman</bibkey></bibhead><bibbody
> William F. Hammond, <emph
>The GELLMU Manual</emph>, 2007, available
at CTAN, <urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>mirror.ctan.org<sol mml="mo"
/>support<sol mml="mo"
/>gellmu<sol mml="mo"
/>doc<sol mml="mo"
/>glman.pdf</urlanch>, or
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>mirror.ctan.org<sol mml="mo"
/>support<sol mml="mo"
/>gellmu<sol mml="mo"
/>doc<sol mml="mo"
/>glman.xhtml</urlanch>
(<abbr
>XHTML</abbr> <plu
/> <abbr
>MathML</abbr>)<eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>bridge</bibkey></bibhead><bibbody
>  William F. Hammond,
<quophrase
><abbr
>GELLMU</abbr>: A Bridge for Authors from <latex
/> to <abbr
>XML</abbr></quophrase>,
<emph
>TUGBoat: The Communications of the <tex
/> Users Group</emph>, vol. 22 (2001),
pp. 204<rdash
/>207; also available online at
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.tug.org<sol mml="mo"
/>TUGboat<sol mml="mo"
/>Contents<sol mml="mo"
/>contents22<hyp
/>3.html</urlanch><eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>dual</bibkey></bibhead><bibbody
>  William F. Hammond,
<quophrase
>Dual presentation with math from one source using <abbr
>GELLMU</abbr></quophrase>,
<emph
>TUGboat: The Communications of the <tex
/> Users Group</emph>,
vol. 28 (2007), pp. 306<rdash
/>311; also available online at
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.tug.org<sol mml="mo"
/>TUGboat<sol mml="mo"
/>Contents<sol mml="mo"
/>contents28<hyp
/>3.html</urlanch><eos
/>
A video recording of the presentation at <abbr
>TUG<nbs
/>2007</abbr>, July<nbs
/>2007, in
San<nbs
/>Diego is available at
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>www.river<hyp
/>valley.tv<sol mml="mo"
/>conferences<sol mml="mo"
/>tex<sol mml="mo"
/>tug2007<sol mml="mo"
/></urlanch><eos
/>
</bibbody></bibentry><bibentry
><bibhead
><biblabel
></biblabel><bibkey
>multipurpose</bibkey></bibhead><bibbody
>  William F. Hammond,
<quophrase
>Multipurpose <latex
/><hyp
/>like markup for math</quophrase>, talk given in
the AMS<hyp
/>MAA Special Session <emph
>Putting Math on the Web the Correct Way</emph>
at the Joint Mathematics Meetings in San Diego in January<nbs
/>2008<eos
/>  This
has not been published, but HTML slides that link to many examples are
available on the web at
<urlanch
>http:<sol mml="mo"
/><sol mml="mo"
/>math.albany.edu<sol mml="mo"
/>math<sol mml="mo"
/>pers<sol mml="mo"
/>hammond<sol mml="mo"
/>Presen<sol mml="mo"
/>JMM08<sol mml="mo"
/>Putting<sol mml="mo"
/></urlanch><eos
/>
</bibbody></bibentry></thebibliography></body></article>
