MirBSD manpage: 23.eqn(USD)

A System for Typesetting Mathematics                     USD:23-1

              A System for Typesetting Mathematics

            Brian W. Kernighan and Lorinda L. Cherry

                     AT&T Bell Laboratories
                  Murray Hill, New Jersey 07974


          This paper describes the design and implementation
     of  a  system for typesetting mathematics. The language
     has been designed to be easy to learn  and  to  use  by
     people  (for example, secretaries and mathematical typ-
     ists) who know  neither  mathematics  nor  typesetting.
     Experience  indicates  that the language can be learned
     in an hour or so, for it has few rules and fewer excep-
     tions.  For  typical  expressions,  the  size  and font
     changes, positioning, line drawing, and the like neces-
     sary to print according to mathematical conventions are
     all done automatically. For example, the input
          sum from i=0 to infinity x sub i = pi over 2
                           oo   i_̅
                           ≥̅ xi=2
          The syntax of the=language is specified by a small
     context-free  grammar;  a  compiler-compiler is used to
     make a compiler  that  translates  this  language  into
     typesetting  commands. Output may be produced on either
     a phototypesetter or on a  terminal  with  forward  and
     reverse   half-line   motions.  The  system  interfaces
     directly with text formatting programs, so mixtures  of
     text and mathematics may be handled simply.

          This paper is a revision  of  a  paper  originally
     published in CACM, March, 1975.

                                   1. Introduction

                        December 24, 2022

USD:23-2                     A System for Typesetting Mathematics

     ``Mathematics is known in     (``Requires'' is  perhaps  the

the  trade  as  difficult,  or     wrong  word,  but  mathematics

penalty, copy  because  it  is     has its own typographical con-

slower,  more  difficult,  and     ventions  which are quite dif-

more expensive to set in  type     ferent from those of  ordinary

than  any  other  kind of copy     text.)   Typesetting  such  an

normally  occurring  in  books     expression   by    traditional

and journals.'' [1]                methods  is  still  an  essen-

                                   tially manual operation.
     One    difficulty    with

mathematical  text is the mul-          A  second  difficulty  is

tiplicity    of    characters,     the  two dimensional character

sizes,  and  fonts. An expres-     of  mathematics,   which   the

sion such as                       superscript  and limits in the

                                   preceding  example  showed  in
     lim  (tan x)sin 2x = 1
                                   its  simplest  form.  This  is
requires an  intimate  mixture

                                   carried further by
of  roman,  italic  and  greek               ______1______

letters, in three sizes, and a            a0+
                                             a1+   ___3___
special   character   or  two.
                        December 24, 2022

A System for Typesetting Mathematics                     USD:23-3

and still further by
                                   phototypesetter  is  a  device

           |             _      _  which  exposes a piece of pho-
           |_______ log _|_a__m__-__|_b_
           |2m\|ab     \|aemx+\|b
           |               _       tographic paper or film, plac-
_____x_____ |______ tanh-1(_|_a_emx)
aemx-be-mx |m\|ab        \|b
           |               _       ing  characters  wherever they
           |______ coth-1(_|_a_emx)
           |m\|ab        \|b
           |                       are wanted. The  Graphic  Sys-

These examples also show line-     tems phototypesetter[2] on the

drawing,  built-up  characters     UNIX operating system[3] works

like braces and radicals,  and     by  shining  light  through  a

a   spectrum   of  positioning     character stencil. The charac-

problems.  (Section  6   shows     ter  is made the right size by

what  a  user  has  to type to     lenses,  and  the  light  beam

produce these on our system.)      directed  by  fiber  optics to

                                   the desired place on  a  piece

2. Photocomposition                of   photographic  paper.  The

                                   exposed paper is developed and
     Photocomposition    tech-

                                   typically used in some form of
niques  can  be  used to solve

                                   photo-offset reproduction.
some  of   the   problems   of

typesetting   mathematics.   A

                        December 24, 2022

USD:23-4                     A System for Typesetting Mathematics

     On   UNIX,   the   photo-     ``assembly   language,''    by

typesetter is driven by a for-     designing   a   language   for

matting program  called  TROFF     describing        mathematical

[4].  TROFF  was  designed for     expressions,  and compiling it

setting running text. It  also     into TROFF.

provides all of the facilities

that  one  needs   for   doing     3. Language Design

mathematics, such as arbitrary
                                        The fundamental principle

horizontal    and     vertical
                                   upon   which   we   based  our

motions,   line-drawing,  size
                                   language design  is  that  the

changing, but the  syntax  for
                                   language should be easy to use

describing    these    special
                                   by people (for example, secre-

operations  is  difficult   to
                                   taries)   who   know   neither

learn,  and difficult even for
                                   mathematics nor typesetting.

experienced  users   to   type

                                        This  principle   implies

                                   several  things. First, ``nor-

     For   this   reason    we
                                   mal'' mathematical conventions

decided  to  use  TROFF  as an
                                   about   operator   precedence,

                        December 24, 2022

A System for Typesetting Mathematics                     USD:23-5

                                   operators,  and the like. This
parentheses, and the like can-

                                   keeps  the  language  easy  to
not  be used, for to give spe-

                                   learn  and  remember. Further-
cial meaning to  such  charac-

                                   more,  there  should  be   few
ters  means  that the user has

                                   exceptions  to  the rules that
to understand what he  or  she

                                   do exist: if  something  works
is  typing.  Thus the language

                                   in  one  situation,  it should
should   not    assume,    for

                                   work everywhere. If a variable
instance, that parentheses are

                                   can  have  a subscript, then a
always balanced, for they  are

                                   subscript  can  have  a   sub-
not  in the half-open interval

                                   script,   and  so  on  without
(a,b]. Nor  should  it  assume

                ___                limit.
that   that   \|a+b   can   be

replaced by (a+b)1/2, or  that          Third,       ``standard''

1/(1-x)  is  better written as     things should happen automati-

___ (or vice versa).
1-x                                cally.   Someone   who   types

     Second, there  should  be     ``x=y+z+1''     should     get

relatively   few  rules,  key-     ``x=y+z+1''.  Subscripts   and

words,  special  symbols   and     superscripts  should automati-

                        December 24, 2022

USD:23-6                     A System for Typesetting Mathematics

cally   be   printed   in   an     typed  on  a computer terminal

appropriately   smaller  size,     much like  an  ordinary  type-

with no special  intervention.     writer.  This implies an input

Fraction  bars have to be made     alphabet of perhaps 100  char-

the  right  length  and  posi-     acters, none of them special.

tioned  at  the  right height.
                                        A  secondary,  but  still

And so on. Indeed a  mechanism
                                   important,  goal in our design

for overriding default actions
                                   was that the system should  be

has to exist, but its applica-
                                   easy  to implement, since nei-

tion is the exception, not the
                                   ther of the  authors  had  any

                                   desire  to  make  a  long-term

     We assume that the typist     project  of  it.   Since   our

has  a  reasonable  picture (a     design  was  not  firm, it was

two-dimensional    representa-     also necessary that  the  pro-

tion)  of  the  desired  final     gram  be easy to change at any

form, as might be  handwritten     time.

by  the  author of a paper. We
                                        To make the program  easy

also assume that the input  is
                                   to build and to change, and to

                        December 24, 2022

A System for Typesetting Mathematics                     USD:23-7

guarantee   regularity   (``it     significant examples  required

should work everywhere''), the     perhaps  a person-month. Since

language  is  defined   by   a     then, we have spent  a  modest

context-free          grammar,     amount of additional time over

described in  Section  5.  The     several years  tuning,  adding

compiler  for the language was     facilities,  and  occasionally

built   using   a    compiler-     changing the language as users

compiler.                          make  criticisms  and  sugges-

     A       priori,       the

grammar/compiler-compiler               We  also  decided   quite

approach  seemed   the   right     early  that we would let TROFF

thing  to  do.  Our subsequent     do our work  for  us  whenever

experience leads us to believe     possible.  TROFF  is  quite  a

that  any  other  course would     powerful program, with a macro

have been folly. The  original     facility,  text and arithmetic

language was designed in a few     variables, numerical  computa-

days. Construction of a  work-     tion  and  testing, and condi-

ing  system  sufficient to try     tional branching. Thus we have

                        December 24, 2022

USD:23-8                     A System for Typesetting Mathematics

been  able  to avoid writing a     Since our program is only use-

lot  of  mundane  but   tricky     ful  for typesetting mathemat-

software.   For   example,  we     ics, it is necessary  that  it

store  no  text  strings,  but     interface   cleanly  with  the

simply  pass them on to TROFF.     underlying         typesetting

Thus we avoid having to  write     language  for  the  benefit of

a  storage management package.     users who want to  set  inter-

Furthermore, we have been able     mingled  mathematics  and text

to isolate ourselves from most     (the usual case). The standard

details of the particular dev-     mode of operation is that when

ice    and    character    set     a document is typed, mathemat-

currently in use. For example,     ical  expressions are input as

we   let   TROFF  compute  the     part of the text,  but  marked

widths of all strings of char-     by  user  settable delimiters.

acters;  we  need know nothing     The program reads  this  input

about them.                        and  treats  as comments those

                                   things which are not mathemat-
     A third  design  goal  is

                                   ics,   simply   passing   them
special  to  our  environment.

                        December 24, 2022

A System for Typesetting Mathematics                     USD:23-9

through untouched. At the same     as  they  are  handed  to  the

time it converts the mathemat-     typesetting            program

ical input into the  necessary     (hereinafter  called ``EQN''),

TROFF  commands. The resulting     except that we won't show  the

ioutput is passed directly  to     delimiters that the user types

TROFF  where  the comments and     to mark the beginning and  end

the  mathematical  parts  both     of  the expression. The inter-

become  text and/or TROFF com-     face between EQN and TROFF  is

mands.                             described  at  the end of this


4. The Language
                                        As   we   said,    typing

     We  will   not   try   to     x=y+z+1     should     produce

describe   the  language  pre-     x=y+z+1, and indeed  it  does.

cisely    here;     interested     Variables   are  made  italic,

readers   may   refer  to  the     operators  and  digits  become

appendix  for  more   details.     roman,   and  normal  spacings

Throughout  this  section,  we     between letters and  operators

will write expressions exactly     are altered slightly to give a

                        December 24, 2022

USD:23-10                    A System for Typesetting Mathematics

more pleasing appearance.          may be  typed  as  many  short

     Input    is    free-form.

Spaces  and  new  lines in the

input  are  used  by  EQN   to

separate  pieces of the input;          Extra white space can  be

they are not  used  to  create

space in the output. Thus          forced   into  the  output  by

   x    =    y

                                   several characters of  various
      + z + 1

also gives x=y+z+1.  Free-form
                                   sizes.  A  tilde ``~'' gives a

input  is  easier to type ini-
                                   space equal to the normal word

tially; subsequent editing  is
                                   spacing  in text; a circumflex

also easier, for an expression
                                   gives half this  much,  and  a

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-11

tab  charcter  spaces  to  the     Here spaces are  necessary  in

next tab stop.                     the  input  to  indicate  that

                                   sin, pi, int,  and  omega  are
     Spaces (or tildes,  etc.)

                                   special, and potentially worth
also  serve  to delimit pieces

                                   special treatment.  EQN  looks
of the input. For example,  to

                                   up each such string of charac-

                                   ters  in  a  table,   and   if


we write
                                   appropriate  gives it a trans-

   f(t) = 2 pi int sin ( omega t )dlation. In this case,  pi  and

                        December 24, 2022

USD:23-12                    A System for Typesetting Mathematics

omega   become   their   greek     roman wherever found.

equivalents, int  becomes  the
                                        Fractions  are  specified

integral  sign  (which must be
                                   with the keyword over:

moved down and enlarged so  it

                                      a+b over c+d+e = 1

looks  ``right''),  and sin is


made roman, following  conven-


tional  mathematical practice.
                                        Similarly, subscripts and

Parentheses, digits and opera-
                                   superscripts are introduced by

tors  are  automatically  made
                                   the keywords sub and sup:

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-13

           x2+y2=z2                is  automatic. Multiple levels

is produced by

                                   of subscripts or  superscripts

   x sup 2 + y sup 2 = z sup 2

                                   are    of    course   allowed:

The spaces after the  2's  are
                                   ``xsupysupz'' is xyz. The con-

necessary  to  mark the end of
                                   struct  ``something  sub some-

the  superscripts;   similarly
                                   thing   sup   something''   is

the  keyword  sup  has  to  be
                                   recognized  as a special case,

marked off by spaces  or  some                                  2
                                   so ``x sub i  sup  2''  is  xi

equivalent    delimiter.   The     instead of xi2.

return to the proper  baseline

                        December 24, 2022

USD:23-14                    A System for Typesetting Mathematics

     More complicated  expres-     they  indicate   unambiguously

sions  can  now be formed with     what  goes  over  what  on the

these primitives:                  left-hand side of the  expres-

                                   sion. The language defines the
          `x2 a2 b2

is produced by

                                   precedence of sup to be higher

      {partial sup 2 f} over {partial x sup 2} =
                                   than   that  of  over,  so  no

      x sup 2 over a sup 2 + y sup 2 over b sup 2
                                   braces are needed to  get  the

Braces {} are  used  to  group     correct   association  on  the

objects together; in this case     right side. Braces can  always

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-15

be  used  when  in doubt about     in  braces  can  also occur in

precedence.                        that context.

     The braces convention  is          There is a sqrt  operator

an  example  of  the  power of     for making square roots of the

using a recursive  grammar  to     appropriate size: ``sqrt a+b''

define  the  language.  It  is     produces \|a+b, and

part of the language that if a
                                      x =  {-b +- sqrt{b sup 2 -4ac}} over 2a

construct  can  appear in some


context, then  any  expression

                                           x=    2a

                        December 24, 2022

USD:23-16                    A System for Typesetting Mathematics

Since large radicals look poor
                                      sum from i=0 to inf x sub i -> 0

on our typesetter, sqrt is not

                                   Centering and making the ≥̅ big

useful for tall expressions.

                                   enough  and the limits smaller

     Limits   on   summations,
                                   are all  automatic.  The  from

integrals   and  similar  con-
                                   and    to   parts   are   both

structions are specified  with
                                   optional, and the central part

the  keywords  from and to. To
                                   (e.g.,  the  ≥̅) can in fact be


            ≥̅ xi->0

we need only type

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-17

                                   of the right height, using the
   lim from {x -> pi /2} ( tan~x) = inf

                                   keywords left and right:


                                      left [ x+y over 2a right ]~=~1

        lim  (tan x)=oo

Again,  the  braces   indicate


just  what  goes into the from

                                             |2a | = 1

                                   A  left  need   not   have   a

     There is a  facility  for     corresponding   right,  as  we

making    braces,    brackets,     shall see in the next example.

parentheses, and vertical bars     Any characters may follow left

                        December 24, 2022

USD:23-18                    A System for Typesetting Mathematics

and right, but generally  only

                                   we can type

various  parentheses  and bars

                                      sign (x) ~==~ left {

are meaningful.

                                         rpile {1 above 0 above -1}

     Big brackets,  etc.,  are

                                         ~~lpile {if above if above if}

often used with another facil-

                                         ~~lpile {x>0 above x=0 above x<0}

ity, called piles, which  make

                                   The  construction  ``left  {''

vertical piles of objects. For

                                   makes  a left brace big enough

example, to get

                                   to   enclose    the    ``rpile

              | 1
    sign(x) _ | 0  if
              |-1  if  x>0
              |    if  x=0         {...}'',  which  is  a  right-

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-19

justified pile of ``above  ...          Although  EQN   makes   a

above ...''. ``lpile'' makes a     valiant  attempt  to  use  the

left-justified pile. There are     right sizes and  fonts,  there

also  centered  piles. Because     are  times  when  the  default

of  the   recursive   language     assumptions  are  simply   not

definition, a pile can contain     what  is  wanted. For instance

any number  of  elements;  any     the italic sign in the  previ-

element   of  a  pile  can  of     ous  example would convention-

course contain piles.              ally be in roman.  Slides  and

                        December 24, 2022

USD:23-20                    A System for Typesetting Mathematics

transparencies  often  require     is 1/72 inch;  this  paper  is

larger characters than  normal     set in 9 point type.)

text.  Thus  we  also  provide
                                        If  necessary,  an  input

size and  font  changing  com-
                                   string can be quoted in "...",

mands:    ``size    12    bold
                                   which  turns  off  grammatical

{A~x~=~y}''    will    produce
                                   significance,  and any font or

A x = y. Size is followed by a
                                   spacing  changes  that   might

number representing a  charac-
                                   otherwise  be done on it. Thus

ter size in points. (One point
                                   we can say

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-21

   lim~ roman "sup" ~x sub n = 0      x dot under + x hat + y tilde

                                      + X hat + Y dotdot = z+Z bar
to ensure  that  the  supremum

doesn't become a superscript:
                                        There are also facilities

         lim sup xn=0              for  globally changing default

     Diacritical marks, long a

                                   sizes and fonts,  for  example

problem     in     traditional

                                   for  making  viewgraphs or for

typesetting, are  straightfor-

                                   setting  chemical   equations.


                                   The    language   allows   for

        .       .. ___

        _+^+y̅+^+Y =z+Z
                                   matrices, and  for  lining  up

is made by typing

                        December 24, 2022

USD:23-22                    A System for Typesetting Mathematics

equations at the same horizon-     expression  will  be  expanded

tal position.                      into whatever was  inside  the

                                   double  quotes  in its defini-
     Finally,   there   is   a

                                   tion. This lets  users  tailor
definition facility, so a user

                                   the   language  to  their  own
can say

                                   specifications,  for   it   is

   define name "..."

                                   quite   possible  to  redefine

at any time in  the  document;

                                   keywords  like  sup  or  over.

henceforth,  any occurrence of

                                   Section  6 shows an example of

the  token  ``name''   in   an

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-23

definitions.                       the sequence ``.EQ''  to  mark

                                   the  beginning  of an equation
     The   EQN    preprocessor

                                   and ``.EN'' to mark  the  end.
reads   intermixed   text  and

                                   The  ``.EQ''  and  ``.EN'' are
equations, and passes its out-

                                   passed   through   to    TROFF
put to TROFF. Since TROFF uses

                                   untouched, so they can also be
lines beginning with a  period

                                   used by a  knowledgeable  user
as    control   words   (e.g.,

                                   to  center  equations,  number
``.ce''  means  ``center   the

                                   them  automatically,  etc.  By
next  output line''), EQN uses

                        December 24, 2022

USD:23-24                    A System for Typesetting Mathematics

default,  however, ``.EQ'' and     input:

``.EN'' are simply ignored  by

TROFF, so by default equations

are printed in-line.
                                         x sub i = y sub i ...

     ``.EQ'' and  ``.EN''  can           .EN

be  supplemented by TROFF com-

                                        Since it  is  tedious  to

mands as desired; for example,

                                   type   ``.EQ''   and   ``.EN''

a  centered  display  equation

                                   around very short  expressions

can  be  produced   with   the

                                   (single      letters,      for

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-25

instance), the user  can  also
                                      Let #x sub i#, #y# and #alpha# be positive

define two characters to serve


as the left and  right  delim-

                                      Let xi, y and ( be positive

iters  of  expressions.  These

                                        Running a preprocessor is
characters are recognized any-

                                   strikingly  easy  on  UNIX. To
where  in subsequent text. For

                                   typeset text  stored  in  file
example if the left and  right

                                   ``f'', one issues the command:
delimiters  have both been set

to ``#'', the input:                  eqn f | troff

                        December 24, 2022

USD:23-26                    A System for Typesetting Mathematics

The vertical bar connects  the     various   ways.  For  example,

output of one process (EQN) to     something with a subscript  is

the input of another (TROFF).      just a box followed by another

                                   box moved downward and  shrunk

5. Language Theory

                                   by  an  appropriate  amount. A

     The  basic  structure  of

                                   fraction is just  a  box  cen-

the language is not a particu-

                                   tered  above  another  box, at

larly original one.  Equations

                                   the  right  altitude,  with  a

are   pictured  as  a  set  of

                                   line  of  correct length drawn

``boxes,'' pieced together  in

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-27

between them.                      guarantee that some keyword is

                                   recognized early enough in the
     The   grammar   for   the

                                   parsing  process.  Symbols  in
language  is  shown below. For

                                   capital  letters  are terminal
purposes  of  exposition,   we

                                   symbols;  lower  case  symbols
have  collapsed  some  produc-

                                   are  non-terminals, i.e., syn-
tions. In the  original  gram-

                                   tactic categories. The  verti-
mar,  there  are about 70 pro-

                                   cal  bar | indicates an alter-
ductions, but  many  of  these

                                   native; the brackets [ ] indi-
are  simple  ones used only to

                        December 24, 2022

USD:23-28                    A System for Typesetting Mathematics

cate optional material. A TEXT
                                    eqn: box | eqn box

is a string of non-blank char-
                                    box: text

acters  or  any  string inside
                                       | { eqn }

double quotes; the other  ter-
                                       | box OVER box

minal     symbols    represent
                                       | SQRT box

literal  occurrences  of   the
                                       | box SUB box | box SUP box

corresponding keyword.
                                       | [ L | C | R ]PILE { list }

                                       | LEFT text eqn [ RIGHT text ]

                                       | box [ FROM box ] [ TO box ]

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-29

    | SIZE text box                observation that something can

    | [ROMAN | BOLD | ITALIC] box  be replaced by a more  compli-

    | box [HAT | BAR | DOT | DOTDOTcatedLDsomething  in braces is

    | DEFINE text text             implicit in the productions:

 list: eqn | list ABOVE eqn
                                         eqn    : box | eqn box

 text: TEXT
                                         box    : text | { eqn }

     The  grammar   makes   it     Anywhere  a  single  character

obvious   why  there  are  few     could  be used, any legal con-

exceptions. For  example,  the     struction can be used.

                        December 24, 2022

USD:23-30                    A System for Typesetting Mathematics

     Clearly, our  grammar  is
                                      a over {b over c}  ?

highly  ambiguous.  What,  for

                                        To answer questions  like

instance, do we  do  with  the

                                   this,  the  grammar is supple-


                                   mented with  a  small  set  of

   a over b over c  ?

                                   rules  that  describe the pre-

Is it
                                   cedence and  associativity  of

   {a over b} over c               operators.  In  particular, we

                                   specify (more  or  less  arbi-
or is it

                                   trarily)  that over associates

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-31

to  the  left,  so  the  first     resolve  the  ambiguity  in  a

alternative  above  is the one     construction like

chosen. On the other hand, sub
                                      a sup 2 over b

and  sup  bind  to  the right,

                                   We define sup to have a higher

because  this  is  closer   to

                                   precedence  than over, so this

standard   mathematical  prac-
                                   construction is parsed  as  b

tice. That is, we  assume  xab                 _2
                                   instead of a

is x(ab), not  (xa)b.

                                        Naturally,  a  user   can

     The   precedence    rules
                                   always   force   a  particular

                        December 24, 2022

USD:23-32                    A System for Typesetting Mathematics

parsing  by   placing   braces     resolving  ambiguity.  Instead

around expressions.                the  supplemental  information

                                   about  precedence and associa-
     The   ambiguous   grammar

                                   tivity (also small  enough  to
approach  seems  to  be  quite

                                   be  understood)  provides  the
useful. The grammar we use  is

                                   compiler-compiler   with   the
small   enough  to  be  easily

                                   information it needs to make a
understood,  for  it  contains

                                   fast, deterministic parser for
none  of  the productions that

                                   the specific language we want.
would  be  normally  used  for

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-33

When the language  is  supple-     mands are output. For example,

mented  by  the disambiguating     when  the   lexical   analyzer

rules, it is in fact LR(1) and     reports  that  it  has found a

thus easy to parse[5].             TEXT (i.e., a string  of  con-

                                   tiguous  characters),  we have
     The output code  is  gen-

                                   recognized the production:
erated   as   the   input   is

scanned. Any time a production        text    : TEXT

of  the grammar is recognized,
                                   The  translation  of  this  is

(potentially) some TROFF  com-
                                   simple.  We  generate  a local

                        December 24, 2022

USD:23-34                    A System for Typesetting Mathematics

name for the string, then hand     the production

the  name  and  the  string to
                                      box    : box OVER box

TROFF, and let  TROFF  perform


the storage management. All we

save  is  the  name   of   the

string,  its  height,  and its


     As another  example,  the

translation   associated  with

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-35

                                      draw bottom box (i.e., copy string for bottom box);
 Width of output box =

                                      move up; move left enough to center top box;
   slightly more than largest input width

                                      draw top box (i.e., copy string for top box);
 Height of output box =

                                      move down and left; draw line full width;
   slightly more than sum of input heights

                                      return to proper base line.
 Base of output box =

   slightly more than height of botMostiofutheoother  productions

 String describing output box =    have  equally  simple semantic

   move down;                      actions. Picturing the  output

   move right enough to center bottas bax;set  of properly placed

                        December 24, 2022

USD:23-36                    A System for Typesetting Mathematics

boxes makes the right sequence     one  of  our users suggested a

of  positioning commands quite     TENSOR operator, to make  con-

obvious. The  main  difficulty     structions like

is   in   finding   the  right                    kj

                                   Grammatically, this  is  easy:

numbers to  use  for  estheti-

                                   it is sufficient to add a pro-

cally pleasing positioning.

                                   duction like

     With  a  grammar,  it  is

                                      box    : TENSOR { list }

usually  clear  how  to extend

                                   Semantically,  we  need   only
the  language.  For  instance,

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-37

juggle  the boxes to the right          The  first  question   is

places.                            easily  addressed. This entire

                                   paper has been set by the pro-

6. Experience

                                   gram.  Readers  can  judge for

     There  are  really  three

                                   themselves whether it is  good

aspects  of  interest-how well

                                   enough for their purposes. One

EQN sets mathematics, how well

                                   of our  users  commented  that

it satisfies its goal of being

                                   although  the output is not as

``easy to use,'' and how  easy

                                   good  as  the  best   hand-set

it was to build.

                        December 24, 2022

USD:23-38                    A System for Typesetting Mathematics

material,  it  is still better     tages.

than average, and much  better
                                        Some of the  deficiencies

than  the  worst. In any case,
                                   in the output could be cleaned

who cares? Printed books  can-
                                   up with more work on our part.

not compete with the birds and
                                   For   example,   we  sometimes

flowers     of     illuminated
                                   leave too much space between a

manuscripts     on    esthetic
                                   roman  letter  and  an  italic

grounds, either, but they have
                                   one. If  we  were  willing  to

some   clear  economic  advan-
                                   keep   track   of   the  fonts

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-39

involved,  we  could  do  this          As to ease of use, at the

better more of the time.           time  of  writing,  the system

                                   has been used by two  distinct
     Some other weaknesses are

                                   groups.  One  user  population
inherent in our output device.

                                   consists  of   mathematicians,
It is hard, for  instance,  to

                                   chemists, physicists, and com-
draw  a  line  of an arbitrary

                                   puter scientists. Their  typi-
length without getting a  per-

                                   cal  reaction  has  been some-
ceptible   overstrike  at  one

                                   thing like:

                        December 24, 2022

USD:23-40                    A System for Typesetting Mathematics

  (1) It's  easy   to   write,          The  learning   time   is

     although  I make the fol-     short. A few minutes gives the

     lowing mistakes...            general flavor, and  typing  a

                                   page  or  two  of a paper gen-
 (2) How do I do...?

                                   erally uncovers  most  of  the

 (3) It botches the  following

                                   misconceptions  about  how  it

     things....  Why don't you


     fix them?

                                        The second user group  is

 (4) You really need the  fol-

                                   much  larger,  the secretaries

     lowing features...

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-41

and mathematical  typists  who     critical  of  the esthetics of

were  the  original  target of     their   output   than    users

the system. They  tend  to  be     trained  in mathematics. After

enthusiastic   converts.  They     a transition period, most find

find  the  language  easy   to     using    a    computer    more

learn  (most are largely self-     interesting  than  a   regular

taught), and have little trou-     typewriter.

ble  producing the output they
                                        The main difficulty  that

want. They are of course  less
                                   users   have   seems   to   be

                        December 24, 2022

USD:23-42                    A System for Typesetting Mathematics

remembering that a blank is  a     instead of

delimiter;   even  experienced

                                   Since the EQN  language  knows

users use  blanks  where  they

                                   no   mathematics,   it  cannot

shouldn't  and  omit them when

                                   deduce    that    the    right

they  are  needed.  A   common

                                   parenthesis is not part of the

instance is typing


   f(x sub i)

                                        The language is  somewhat

which produces

                                   prolix,  but this doesn't seem


                                   excessive considering how much

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-43

is  being done, and it is cer-
                                           a sub 0 + b sub 1 over

tainly more compact  than  the
                                             {a sub 1 + b sub 2 over

corresponding  TROFF commands.
                                               {a sub 2 + b sub 3 over

For  example,  here   is   the
                                                 {a sub 3 + ... }}}

source for the continued frac-

                                   This  is  the  input  for  the

tion expression in  Section  1

                                   large  integral  of Section 1;

of this paper:

                                   notice the use of definitions:

                        December 24, 2022

USD:23-44                    A System for Typesetting Mathematics

                                         1 over mab ~ tanh sup -1 ( sa over sb emx )
 define emx "{e sup mx}"

 define mab "{m sqrt ab}"

                                         -1 over mab ~ coth sup -1 ( sa over sb emx )
 define sa "{sqrt a}"

 define sb "{sqrt b}"

 int dx over {a emx - be sup -mx} ~=~
                                        As to ease  of  construc-

 left { lpile {
                                   tion,  we  have  already  men-

      1 over {2 mab} ~log~
                                   tioned that there  are  really

            {sa emx - sb} over {sa emx + sb}
                                   only   a   few   person-months

                                   invested. Much  of  this  time

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-45

has gone into two things-fine-          The program consists of a

tuning  (what  is   the   most     number  of  small, essentially

esthetically pleasing space to     unconnected modules  for  code

use between the numerator  and     generation,  a  simple lexical

denominator  of  a fraction?),     analyzer,  a   canned   parser

and  changing   things   found     which   we  did  not  have  to

deficient    by    our   users     write,  and  some   miscellany

(shouldn't a tilde be a delim-     associated  with  input  files

iter?).                            and the  macro  facility.  The

                        December 24, 2022

USD:23-46                    A System for Typesetting Mathematics

program   is  now  about  1600     commands  can  be  changed  to

lines of C [6],  a  high-level     accommodate  other  formatting

language  reminiscent of BCPL.     languages  and  devices.   For

About  20  percent  of   these     example,   in   less  than  24

lines   are  ``print''  state-     hours, one of us  changed  the

ments, generating  the  output     entire   semantic  package  to

code.                              drive  NROFF,  a  variant   of

                                   TROFF,     for     typesetting
     The   semantic   routines

                                   mathematics on  teletypewriter
that generate the actual TROFF

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-47

devices   capable  of  reverse     and sometimes even  for  ulti-

line   motions.   Since   many     mate use.

potential  users  do  not have

                                   7. Conclusions

access to  a  typesetter,  but

                                        We think  we  have  shown

still  have  to type mathemat-

                                   that  it  is  possible  to  do

ics, this provides  a  way  to

                                   acceptably good typesetting of

get  a  typed  version  of the

                                   mathematics    on   a   photo-

final output  which  is  close

                                   typesetter,  with   an   input

enough for debugging purposes,

                                   language that is easy to learn

                        December 24, 2022

USD:23-48                    A System for Typesetting Mathematics

and  use  and  that  satisfies     like  the only sensible way to

many  users'  demands.  Such a     do  business.  Our  experience

package can be implemented  in     with  the use of a grammar and

short order, given a compiler-     a compiler-compiler  has  been

compiler and a decent typeset-     uniformly favorable. If we had

ting program underneath.           written everything  into  code

                                   directly,  we  would have been
     Defining a language,  and

                                   locked   into   our   original
building  a  compiler  for  it

                                   design.  Furthermore, we would
with a compiler-compiler seems

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-49

have never been sure where the     Acknowledgements

exceptions  and  special cases
                                        We are deeply indebted to

were. But because  we  have  a
                                   J.  F.  Ossanna, the author of

grammar,  we  can  change  our
                                   TROFF, for his willingness  to

minds  readily  and  still  be
                                   modify  TROFF to make our task

reasonably sure that if a con-
                                   easier and for his  continuous

struction works in  one  place
                                   assistance during the develop-

it will work everywhere.
                                   ment of our  program.  We  are

                                   also grateful to A. V. Aho for

                        December 24, 2022

USD:23-50                    A System for Typesetting Mathematics

help with language theory,  to     [1]  A Manual of  Style,  12th

S. C. Johnson for aid with the          Edition.   University  of

compiler-compiler, and to  our          Chicago  Press,  1969.  p

early  users  A. V. Aho, S. I.          295.

Feldman, S. C. Johnson, R.  W.
                                   [2]  Model    C/A/T     Photo-

Hamming, and M. D. McIlroy for
                                        typesetter.  Graphic Sys-

their constructive criticisms.
                                        tems, Inc., Hudson, N. H.

                                   [3]  Ritchie,   D.   M.,   and

                                        Thompson,  K.  L.,  ``The

                        December 24, 2022

A System for Typesetting Mathematics                    USD:23-51

     UNIX  time-sharing   sys-          S.  C.,  ``LR  Parsing.''

     tem.''  Comm.  ACM  17, 7          Comp. Surv.  6,  2  (June

     (July 1974), 365-375.              1974), 99-124.

[4]  Ossanna,  J.  F.,   TROFF     [6]  B. W. Kernighan and D. M.

     User's    Manual.    Bell          Ritchie,  The  C Program-

     Laboratories    Computing          ming Language.  Prentice-

     Science  Technical Report          Hall, Inc., 1978.

     54, 1977.

[5]  Aho, A. V., and  Johnson,

                        December 24, 2022

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung