home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / lout2.lzh / LOUT2 / DOC / TR.EQ / s2 < prev    next >
Text File  |  1994-01-25  |  7KB  |  225 lines

  1. @Section
  2.    @Title { Symbols }
  3. @Begin
  4. @PP
  5. Eq prints characters in the fonts appropriate for mathematics:
  6. @ID {
  7. @Code "x - 2"
  8. |7ct
  9. @Eq { x-2 }
  10. }
  11. Here @Eq {x} is in Italic, @Eq { 2 } is in Roman, and @Eq { minus } is
  12. from the Symbol font.  The character @Code "-" is a @I symbol which
  13. stands for {@Eq {minus}}, and @Code "2" is also a symbol, standing for
  14. {@Eq { 2 }}.  Eq includes a vast number of symbols:
  15. @ID {
  16. @Code "Omega delta int partial club"
  17. |7ct
  18. @Eq { Omega delta int partial club }
  19. }
  20. The summary at the end of this report has the complete list.
  21. @PP
  22. Symbols whose names are made from letters should be separated from each
  23. other by at least one space or end of line, as was done above, or else
  24. Eq will become confused:
  25. @ID {
  26. @Code "Omegadelta"
  27. |7ct
  28. @Eq { Omegadelta }
  29. }
  30. Symbols whose names are made from digits and punctuation characters can,
  31. however, be run together with each other and with symbols made from
  32. letters:
  33. @ID {
  34. @Code "Omega-delta<=2"
  35. |7ct
  36. @Eq { Omega-delta<=2 }
  37. }
  38. This rule applies throughout the Lout world.
  39. @PP
  40. Some symbols join objects together in mathematical ways:
  41. @ID {
  42. @Code "x sub 2"
  43. |7ct
  44. @Eq { x sub 2 }
  45. }
  46. Here the @Code "sub" symbol has taken the object just to its left, and
  47. the object just to its right, and joined them into one object in the
  48. form of a subscript.  The two objects are called the left and right
  49. parameters of {@Code "sub"}, and they may be arbitrary Lout objects.
  50. @PP
  51. Other symbols of a similar kind include {@Code "sup"} for
  52. superscripting, @Code "over" for built-up fractions, and @Code "from"
  53. and @Code "to" for the lower and upper limits of sums, products,
  54. etc.  These symbols may be used together to produce complicated
  55. equations with astonishing ease:
  56. @ID {
  57. @Code {
  58. "big sum from i=0 to n r sup i"
  59. "= {r sup n+1 - 1} over r-1"
  60. }
  61. ||7ct
  62. @Eq { big sum from i=0 to n r sup i
  63. = {r sup n+1 - 1} over r-1
  64. }
  65. }
  66. Here @Code "sum" is just the @Eq { summation } symbol; @Code "from" and
  67. @Code "to" do all the work of placing the limits.  They are quite
  68. independent, so either or both may be omitted.  To get a superscript
  69. directly over a subscript, use the @Code "supp" and @Code "on" symbols:
  70. @ID {
  71. @Code "A supp 2 on 1"
  72. |7ct
  73. @Eq { A supp 2 on 1 }
  74. }
  75. These two symbols should always be used together as shown.
  76. @PP
  77. As usual in Lout, braces are used to group something into an indivisible
  78. object.  Leaving them out creates ambiguities:
  79. @ID @Code "a  sup  b  over  c"
  80. There are two possible interpretations for this:
  81. @IndentedList
  82. @LI {
  83. @Code "{a  sup  b}  over  c"
  84. |7ct
  85. @Eq {  {a  sup  b}  over  c }
  86. }
  87. @LI {
  88. @Code "a  sup  {b  over  c}"
  89. |7ct
  90. @Eq {  a  sup  {b  over  c} }
  91. }
  92. @EndList
  93. Eq chooses between them in the following way.  Every symbol that takes a
  94. parameter also has a {@I precedence}, which is a number.  For example,
  95. @Code "sup" has precedence 60 and @Code "over" has precedence 54.  The
  96. symbol with the highest precedence wins the object lying between them,
  97. so in the above case the first interpretation is chosen.  If two symbols
  98. of equal precedence compete for an object, the association is towards
  99. the left:
  100. @ID {
  101. @Code "a sup b sub 2"
  102. |7ct
  103. @Eq { a sup b sub 2 }
  104. }
  105. In this case it is more probable that the following right association
  106. was actually wanted:
  107. @ID {
  108. @Code "a sup { b sub 2 }"
  109. |7ct
  110. @Eq { a sup { b sub 2 } }
  111. }
  112. @PP
  113. White space between two objects is considered to be a symbol with
  114. precedence 7, which is lower than the precedence of any Eq symbol; but
  115. if the two objects are immediately adjacent the precedence is 102, which
  116. is higher than the precedence of any Eq symbol.  Compare these three
  117. examples:
  118. @IL
  119. @LI {
  120. @Code "big sum from i=0 to n"
  121. |7ct
  122. @Eq {  big sum from i=0 to n }
  123. }
  124. @LI {
  125. @Code "big sum from {i = 0} to n"
  126. |7ct
  127. @Eq {  big sum from {i = 0} to n }
  128. }
  129. @LI {
  130. @Code "big sum from i = 0 to n"
  131. |7ct
  132. @Eq {  big sum from i = 0 to n }
  133. }
  134. @EL
  135. and you will see that some care is needed on this point.  Braces can
  136. always be used to override precedence and associativity,
  137. and when in doubt the easiest course is to insert them.  Although
  138. Lout allows symbols to associate towards the left or right, Eq chooses
  139. to have only left associative symbols.  The summary at the end of this
  140. report gives the precedence of every symbol.
  141. @PP
  142. The @I matrix symbol {@PageMark matrix} builds an array of objects:
  143. @ID {
  144. @Code {
  145. "matrix"
  146. "   atleft { blpar }"
  147. "   atright { brpar }"
  148. "{ x sup 2 above x above 1"
  149. "  nextcol"
  150. "  y sup 2 above y above 1"
  151. "  nextcol"
  152. "  z sup 2 above z above 1"
  153. "}"
  154. }
  155. ||7ct
  156. @Eq {
  157. matrix
  158.    atleft { blpar }
  159.    atright { brpar }
  160. { x sup 2 above x above 1
  161.   nextcol
  162.   y sup 2 above y above 1
  163.   nextcol
  164.   z sup 2 above z above 1
  165. }
  166. }
  167. }
  168. The @Code atleft and @Code atright options place vertically scaled
  169. versions of their
  170. values at each side; if either is omitted the value is taken to be an
  171. empty object of zero width by default.  The right parameter of @Code
  172. matrix is the array itself.  It is a sequence of columns separated by
  173. @Code nextcol symbols; each column is a sequence of objects separated by
  174. @Code above symbols.
  175. @PP
  176. The @Code nextcol and @Code above symbols have low precedence, but not
  177. as low as white space between two objects.  Therefore, unless the
  178. entries in the array are very simple, it is safest to enclose each of
  179. them in braces.
  180. @PP
  181. Columns built with the @Code above symbol have their objects centred in
  182. the column.  Also available are @Code labove for left-justified columns,
  183. @Code cabove meaning the same as {@Code above}, @Code rabove for
  184. right-justified columns, and @Code mabove for alignment along column
  185. marks.  Each column should contain only one kind of @Code above symbol
  186. (although adventurous users might be able to get some mixtures to work), but
  187. different columns may differ.  For example,
  188. @ID @Code {
  189. "@R \"Chain rule:\"  labove  @R \"Product rule:\""
  190. "nextcol"
  191. "{df over dx ^= df over dy cdot dy over dx}"
  192. "mabove"
  193. "{dfg over dy ^= f ` dg over dx + g df over dx}"
  194. }
  195. has result
  196. @ID @Eq {
  197.    @R "Chain rule:" labove @R "Product rule:"
  198.    nextcol
  199.    {df over dx ^= df over dy cdot dy over dx}
  200.    mabove
  201.    {dfg over dy ^= f ` dg over dx + g df over dx}
  202. }
  203. As this last example shows, it is @Code nextcol and the various @Code
  204. above symbols that lay out the array; @Code matrix attaches the @Code
  205. atleft and @Code atright options and makes sure the result appears in
  206. the correct vertical position relative to the rest of the equation.  So
  207. the right parameter of @Code matrix may be any object.
  208. @PP
  209. Each of the Eq symbols that takes parameters also has a @Code gap
  210. option, which controls the amount of space inserted by the symbol:
  211. @IL
  212. @LI {
  213. @Code "x over y"
  214. |7ct
  215. @Eq { x over y }
  216. }
  217. @LI {
  218. 6c @Wide @Code "x over gap { 3p } y"
  219. |7ct
  220. @Eq { x over gap { 3p } y }
  221. }
  222. @EL
  223. Eq usually gets the spacing right without help.
  224. @End @Section
  225.