Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


EQN(1)								       EQN(1)



NAME
       eqn - format equations for troff

SYNOPSIS
       eqn [ -rvCNR ] [ -dxy ] [ -Tname ] [ -Mdir ] [ -fF ] [ -sn ] [ -pn ]
	   [ -mn ] [ files... ]

       It is possible to have whitespace between a command  line  option  and
       its parameter.

DESCRIPTION
       This  manual  page  describes the GNU version of eqn, which is part of
       the groff document formatting system.  eqn  compiles  descriptions  of
       equations  embedded  within  troff  input files into commands that are
       understood by troff.  Normally, it should  be  invoked  using  the  -e
       option  of  groff.  The syntax is quite compatible with Unix eqn.  The
       output of GNU eqn cannot be processed with Unix troff; it must be pro-
       cessed with GNU troff.  If no files are given on the command line, the
       standard input will be read.  A filename of - will cause the  standard
       input to be read.

       eqn  searches  for the file eqnrc in the directories given with the -M
       option first, then in /usr/lib/groff/site-tmac, /usr/share/groff/site-
       tmac,	and    finally	  in	the    standard	   macro    directory
       /usr/share/groff/1.18.1.1/tmac.	If it exists,  eqn  will  process  it
       before the other input files.  The -R option prevents this.

       GNU  eqn	 does not provide the functionality of neqn: it does not sup-
       port low-resolution, typewriter-like devices  (although	it  may	 work
       adequately for very simple input).

OPTIONS
       -dxy   Specify  delimiters x and y for the left and right end, respec-
	      tively, of in-line equations.   Any  delim  statements  in  the
	      source file overrides this.

       -C     Recognize	 .EQ  and .EN even when followed by a character other
	      than space or newline.

       -N     Don't allow newlines within delimiters.  This option allows eqn
	      to recover better from missing closing delimiters.

       -v     Print the version number.

       -r     Only one size reduction.

       -mn    The  minimum  point-size is n.  eqn will not reduce the size of
	      subscripts or superscripts to a smaller size than n.

       -Tname The output is for device name.  The only effect of this  is  to
	      define  a	 macro	name with a value of 1.	 Typically eqnrc will
	      use this to provide  definitions	appropriate  for  the  output
	      device.  The default output device is ps.

       -Mdir  Search dir for eqnrc before the default directories.

       -R     Don't load eqnrc.

       -fF    This is equivalent to a gfont F command.

       -sn    This is equivalent to a gsize n command.	This option is depre-
	      cated.  eqn will normally set equations at whatever the current
	      point size is when the equation is encountered.

       -pn    This  says  that subscripts and superscripts should be n points
	      smaller than the surrounding text.  This option is  deprecated.
	      Normally	eqn  makes sets subscripts and superscripts at 70% of
	      the size of the surrounding text.

USAGE
       Only the differences between GNU eqn and Unix eqn are described	here.

       Most  of the new features of GNU eqn are based on TeX.  There are some
       references to the differences between TeX and GNU eqn below; these may
       safely be ignored if you do not know TeX.

   Automatic spacing
       eqn  gives each component of an equation a type, and adjusts the spac-
       ing between components using that type.	Possible types are:

       ordinary	    an ordinary character such as 1 or x;

       operator	    a large operator such as ?;

       binary	    a binary operator such as +;

       relation	    a relation such as =;

       opening	    a opening bracket such as (;

       closing	    a closing bracket such as );

       punctuation  a punctuation character such as ,;

       inner	    a subformula contained within brackets;

       suppress	    spacing that suppresses automatic spacing adjustment.

       Components of an equation get a type in one of two ways.

       type t e
	      This yields an equation component that contains e but that  has
	      type t, where t is one of the types mentioned above.  For exam-
	      ple, times is defined as

		     type "binary" \(mu

	      The name of the type doesn't have to  be	quoted,	 but  quoting
	      protects from macro expansion.

       chartype t text
	      Unquoted	groups	of  characters	are  split up into individual
	      characters, and the type of each character is looked  up;	 this
	      changes  the  type  that	is stored for each character; it says
	      that the characters in text from now on have type t.  For exam-
	      ple,

		     chartype "punctuation" .,;:

	      would  make  the characters .,;: have type punctuation whenever
	      they subsequently appeared in an equation.  The type t can also
	      be  letter  or  digit; in these cases chartype changes the font
	      type of the characters.  See the Fonts subsection.

   New primitives
       e1 smallover e2
	      This is similar to over; smallover reduces the size of  e1  and
	      e2;  it  also puts less vertical space between e1 or e2 and the
	      fraction bar.  The over primitive corresponds to the TeX	\over
	      primitive	 in display styles; smallover corresponds to \over in
	      non-display styles.

       vcenter e
	      This vertically centers e about the math axis.  The  math	 axis
	      is the vertical position about which characters such as + and -
	      are centered; also it is the vertical position used for the bar
	      of fractions.  For example, sum is defined as

		     { type "operator" vcenter size +5 \(*S }

       e1 accent e2
	      This  sets e2 as an accent over e1.  e2 is assumed to be at the
	      correct height for a lowercase letter; e2 will  be  moved	 down
	      according	 if  e1 is taller or shorter than a lowercase letter.
	      For example, hat is defined as

		     accent { "^" }

	      dotdot, dot, tilde, vec and dyad are  also  defined  using  the
	      accent primitive.

       e1 uaccent e2
	      This sets e2 as an accent under e1.  e2 is assumed to be at the
	      correct height for a character without a descender; e2 will  be
	      moved  down if e1 has a descender.  utilde is pre-defined using
	      uaccent as a tilde accent below the baseline.

       split "text"
	      This has the same effect as simply

		     text

	      but text is not  subject	to  macro  expansion  because  it  is
	      quoted;  text will be split up and the spacing between individ-
	      ual characters will be adjusted.

       nosplit text
	      This has the same effect as

		     "text"

	      but because text is not quoted it	 will  be  subject  to	macro
	      expansion;  text	will  not be split up and the spacing between
	      individual characters will not be adjusted.

       e opprime
	      This is a variant of prime that acts as an operator on  e.   It
	      produces	a  different  result  from  prime  in  a case such as
	      A opprime sub 1: with opprime the 1 will be  tucked  under  the
	      prime as a subscript to the A (as is conventional in mathemati-
	      cal typesetting), whereas with prime the 1 will be a  subscript
	      to  the prime character.	The precedence of opprime is the same
	      as that of bar and under, which is higher than that  of  every-
	      thing  except accent and uaccent.	 In unquoted text a ' that is
	      not the first character will be treated like opprime.

       special text e
	      This constructs a new object from	 e  using  a  troff(1)	macro
	      named  text.  When the macro is called, the string 0s will con-
	      tain the output for e, and the number  registers	0w,  0h,  0d,
	      0skern  and  0skew  will contain the width, height, depth, sub-
	      script kern, and skew of e.  (The subscript kern of  an  object
	      says  how	 much a subscript on that object should be tucked in;
	      the skew of an object says how far to the right of  the  center
	      of the object an accent over the object should be placed.)  The
	      macro must modify 0s so that it will output the desired  result
	      with  its origin at the current point, and increase the current
	      horizontal position by the width of  the	object.	  The  number
	      registers	 must also be modified so that they correspond to the
	      result.

	      For example, suppose you wanted a construct that	'cancels'  an
	      expression by drawing a diagonal line through it.

		     .EQ
		     define cancel 'special Ca'
		     .EN
		     .de Ca
		     .ds 0s \Z'\\*(0s'\v'\\n(0du'\D'l \\n(0wu -\\n(0hu-\\n(0du'\v'\\n(0hu'
		     ..

	      Then you could cancel an expression e with cancel { e }

	      Here's  a	 more complicated construct that draws a box round an
	      expression:

		     .EQ
		     define box 'special Bx'
		     .EN
		     .de Bx
		     .ds 0s \Z'\h'1n'\\*(0s'\
		     \Z'\v'\\n(0du+1n'\D'l \\n(0wu+2n 0'\D'l 0 -\\n(0hu-\\n(0du-2n'\
		     \D'l -\\n(0wu-2n 0'\D'l 0 \\n(0hu+\\n(0du+2n''\h'\\n(0wu+2n'
		     .nr 0w +2n
		     .nr 0d +1n
		     .nr 0h +1n
		     ..

   Customization
       The appearance of equations is controlled by a large number of parame-
       ters. These can be set using the set command.

       set p n
	      This  sets parameter p to value n ; n is an integer.  For exam-
	      ple,

		     set x_height 45

	      says that eqn should assume an x height of 0.45 ems.

	      Possible parameters are as follows.  Values  are	in  units  of
	      hundredths  of  an  em unless otherwise stated.  These descrip-
	      tions are intended to be expository rather than definitive.

	      minimum_size	      eqn will not set anything at a  smaller
				      point-size  than this.  The value is in
				      points.

	      fat_offset	      The fat primitive emboldens an equation
				      by overprinting two copies of the equa-
				      tion  horizontally   offset   by	 this
				      amount.

	      over_hang		      A	 fraction bar will be longer by twice
				      this amount than	the  maximum  of  the
				      widths  of  the numerator and denomina-
				      tor; in other words, it  will  overhang
				      the  numerator  and  denominator	by at
				      least this amount.

	      accent_width	      When bar or under is applied to a	 sin-
				      gle  character,  the  line will be this
				      long.  Normally, bar or under  produces
				      a line whose length is the width of the
				      object to which it applies; in the case
				      of  a  single  character, this tends to
				      produce a line that looks too long.

	      delimiter_factor	      Extensible delimiters produced with the
				      left  and	 right primitives will have a
				      combined height and depth of  at	least
				      this many thousandths of twice the max-
				      imum amount by which  the	 sub-equation
				      that  the	 delimiters  enclose  extends
				      away from the axis.

	      delimiter_shortfall     Extensible delimiters produced with the
				      left  and	 right primitives will have a
				      combined height and depth not less than
				      the  difference  of  twice  the maximum
				      amount by which the  sub-equation	 that
				      the  delimiters  enclose	extends	 away
				      from the axis and this amount.

	      null_delimiter_space    This much horizontal space is  inserted
				      on each side of a fraction.

	      script_space	      The  width  of  subscripts  and  super-
				      scripts is increased by this amount.

	      thin_space	      This amount of space  is	automatically
				      inserted	after punctuation characters.

	      medium_space	      This amount of space  is	automatically
				      inserted on either side of binary oper-
				      ators.

	      thick_space	      This amount of space  is	automatically
				      inserted on either side of relations.

	      x_height		      The height of lowercase letters without
				      ascenders such as x.

	      axis_height	      The height above the  baseline  of  the
				      center  of  characters such as + and -.
				      It is important that this value is cor-
				      rect for the font you are using.

	      default_rule_thickness  This should set to the thickness of the
				      \(ru character,  or  the	thickness  of
				      horizontal  lines	 produced with the \D
				      escape sequence.

	      num1		      The over	command	 will  shift  up  the
				      numerator by at least this amount.

	      num2		      The smallover command will shift up the
				      numerator by at least this amount.

	      denom1		      The over command will  shift  down  the
				      denominator by at least this amount.

	      denom2		      The  smallover  command will shift down
				      the  denominator	by  at	 least	 this
				      amount.

	      sup1		      Normally	superscripts  will be shifted
				      up by at least this amount.

	      sup2		      Superscripts  within  superscripts   or
				      upper limits or numerators of smallover
				      fractions will  be  shifted  up  by  at
				      least  this  amount.   This  is usually
				      less than sup1.

	      sup3		      Superscripts  within  denominators   or
				      square  roots  or	 subscripts  or lower
				      limits will be shifted up by  at	least
				      this amount.  This is usually less than
				      sup2.

	      sub1		      Subscripts  will	normally  be  shifted
				      down by at least this amount.

	      sub2		      When  there  is  both a subscript and a
				      superscript,  the	 subscript  will   be
				      shifted down by at least this amount.

	      sup_drop		      The  baseline  of a superscript will be
				      no more than this much amount below the
				      top  of  the object on which the super-
				      script is set.

	      sub_drop		      The baseline of a subscript will be  at
				      least this much below the bottom of the
				      object on which the subscript is set.

	      big_op_spacing1	      The baseline of an upper limit will  be
				      at least this much above the top of the
				      object on which the limit is set.

	      big_op_spacing2	      The baseline of a lower limit  will  be
				      at  least this much below the bottom of
				      the object on which the limit is set.

	      big_op_spacing3	      The bottom of an upper limit will be at
				      least  this  much	 above the top of the
				      object on which the limit is set.

	      big_op_spacing4	      The top of a lower  limit	 will  be  at
				      least this much below the bottom of the
				      object on which the limit is set.

	      big_op_spacing5	      This much vertical space will be	added
				      above and below limits.

	      baseline_sep	      The  baselines of the rows in a pile or
				      matrix will normally be this far apart.
				      In  most	cases this should be equal to
				      the sum of num1 and denom1.

	      shift_down	      The midpoint between the	top  baseline
				      and  the bottom baseline in a matrix or
				      pile will be shifted down by this	 much
				      from  the	 axis.	 In  most  cases this
				      should be equal to axis_height.

	      column_sep	      This much space will be  added  between
				      columns in a matrix.

	      matrix_side_sep	      This  much  space will be added at each
				      side of a matrix.

	      draw_lines	      If this  is  non-zero,  lines  will  be
				      drawn  using  the	 \D  escape sequence,
				      rather than with the \l escape sequence
				      and the \(ru character.

	      body_height	      The  amount  by which the height of the
				      equation exceeds this will be added  as
				      extra  space before the line containing
				      the equation (using \x.)	 The  default
				      value is 85.

	      body_depth	      The  amount  by  which the depth of the
				      equation exceeds this will be added  as
				      extra  space  after the line containing
				      the equation (using \x.)	 The  default
				      value is 35.

	      nroff		      If  this is non-zero, then ndefine will
				      behave like define and tdefine will  be
				      ignored,	otherwise tdefine will behave
				      like  define  and	  ndefine   will   be
				      ignored.	 The default value is 0 (This
				      is typically changed to 1 by the	eqnrc
				      file  for	 the ascii, latin1, utf8, and
				      cp1047 devices.)

	      A more precise description of the role of many of these parame-
	      ters can be found in Appendix H of The TeXbook.

   Macros
       Macros  can  take arguments.  In a macro body, $n where n is between 1
       and 9, will be replaced by the n-th argument if the  macro  is  called
       with  arguments;	 if  there  are	 fewer	than  n arguments, it will be
       replaced by nothing.  A word containing a left parenthesis  where  the
       part  of	 the  word before the left parenthesis has been defined using
       the define command will be recognized as a macro call with  arguments;
       characters  following  the  left	 parenthesis  up  to a matching right
       parenthesis will	 be  treated  as  comma-separated  arguments;  commas
       inside nested parentheses do not terminate an argument.

       sdefine name X anything X
	      This  is	like  the define command, but name will not be recog-
	      nized if called with arguments.

       include "file"
	      Include the contents of file.  Lines of file beginning with .EQ
	      or .EN will be ignored.

       ifdef name X anything X
	      If  name	has been defined by define (or has been automatically
	      defined because name is the output  device)  process  anything;
	      otherwise	 ignore anything.  X can be any character not appear-
	      ing in anything.

   Fonts
       eqn normally uses at least two fonts to set  an	equation:  an  italic
       font  for letters, and a roman font for everything else.	 The existing
       gfont command changes the font that is used as the  italic  font.   By
       default	this  is  I.   The font that is used as the roman font can be
       changed using the new grfont command.

       grfont f
	      Set the roman font to f.

       The italic primitive uses the current italic font set  by  gfont;  the
       roman  primitive	 uses the current roman font set by grfont.  There is
       also a new gbfont command, which changes the font  used	by  the	 bold
       primitive.   If	you only use the roman, italic and bold primitives to
       changes fonts within an equation, you can change all the fonts used by
       your equations just by using gfont, grfont and gbfont commands.

       You can control which characters are treated as letters (and therefore
       set in italics) by using the chartype command described above.  A type
       of  letter will cause a character to be set in italic type.  A type of
       digit will cause a character to be set in roman type.

FILES
       /usr/share/groff/1.18.1.1/tmac/eqnrc
	      Initialization file.

BUGS
       Inline equations will be set at the point size that is current at  the
       beginning of the input line.

SEE ALSO
       groff(1), troff(1), groff_font(5), The TeXbook



Groff Version 1.18.1.1	       05 October 2001			       EQN(1)


UNIX/Linux commands referenced on this page:
  1. which
  2. groff
  3. troff
  4. file
  5. size
  6. dir
  7. at
  8. as
  9. split
  10. make
  11. less
  12. display
  13. sum
  14. cal
  15. script
  16. cancel
  17. more
  18. top