home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume6 / lbl / doc / lbl.doc < prev    next >
Text File  |  1986-11-30  |  11KB  |  464 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.           LBL - Symbolic Labels in Text Documents
  11.  
  12.  
  13.  
  14.  
  15.  
  16. 1.  Introduction
  17.  
  18.      _l_b_l is a pre-processor for _t_r_o_f_f and _n_r_o_f_f which allows
  19. Sections,  Figures,  Tables,  etc.,  to  be  referred  to by
  20. symbolic names rather than  by  absolute  number.   It  will
  21. handle forward references as well as backward ones.
  22.  
  23.      Uses of  a  label  in  the  text  are  indicated  by  a
  24. delimiter  character (default '@', but resettable), followed
  25. by a _t_y_p_e name (e.g. "TABLE", "EQN", etc.), followed by  the
  26. label itself (e.g. "Profits-1983").  Each such occurrence is
  27. replaced  by  a  reference  number;  the  default  style  of
  28. numbering  is  a sequence of period-separated arabic numbers
  29. (e.g. 2.4.1)  but  this  is  resettable.   Finally,  another
  30. delimiter is required to close the reference (cf. the use of
  31. delimiters in _e_q_n for in-line equations).
  32.  
  33. Examples:
  34.  
  35.         For full details refer to Table @TABLE Profits-1983@.
  36.         As we saw in Chapter @chap intro@, ...
  37.         Figure @fig wing-profile@ shows the airflow patterns ...
  38.  
  39.  
  40.      Labels may be defined at any point in  the  text.   The
  41. definition looks like a _t_r_o_f_f macro, and the definition line
  42. is retained in the original text.   By  default,  the  macro
  43. used  is  ".L=",  but  this can be reset.  The macro takes 3
  44. arguments: a type-name, a level-number, and a label-name.
  45.  
  46.      The type-name corresponds to  that  used  to  signal  a
  47. label  occurrence  in  the text.  There is no restriction on
  48. the choice of name; any sequence of non-blank characters may
  49. be used.  Upper- and lower-case letters _a_r_e distinguished.
  50.  
  51.      The  level-number  corresponds  to   the   header-level
  52. numbers  used  by  the .NH macro in _m_s, the .sh macro in _m_e,
  53. etc.  The index at the given level is incremented by 1,  and
  54. all higher indexes set to 0.  Initially, all indexes are set
  55. to 0 by default, but other starting values  may  be  chosen.
  56. There is an implementation-defined restriction on the number
  57. of levels of index (currently 20);  it  is  not  anticipated
  58. that this will lead to problems.
  59.  
  60.      The label may be any sequence of non-blank  characters;
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                            - 2 -
  71.  
  72.  
  73. the   same  label  may  be  used  in  more  than  one  type.
  74. Furthermore, the special label-name ``*''  can  be  used  to
  75. increment  the  appropriate level-counter without defining a
  76. label at all; this is useful, for example, when all  tables,
  77. figures,  etc.,  in  a section take their initial index from
  78. the section number: two ways of doing this would be:
  79.  
  80. a.
  81.     .L= section 1 this-section
  82.     .L= last table 0
  83.     .L= last figure 0
  84.     ...
  85.     ... refer to table @section this-section@.@table profits@ ...
  86.     ... see figure @section this-section@.@figure structure@ ...
  87.     ...
  88.     .L= table 1 profits
  89.     ...
  90.     .L= figure 1 structure
  91.     ...
  92.  
  93. (see section 3 for the use of
  94. ``.L= last ...'')
  95.  
  96. b.
  97.     .L= section 1 this-section
  98.     .L= table 1 *
  99.     .L= figure 1 *
  100.     ...
  101.     ... refer to table @table profits@ ...
  102.     ... see figure @figure structure@ ...
  103.     ...
  104.     .L= table 2 profits
  105.     ...
  106.     .L= figure 2 structure
  107.     ...
  108.  
  109. It is largely a matter of taste which technique is used; the
  110. former  is more long-winded, but avoids the need to remember
  111. to keep the tables  and  figures  in  step  every  time  the
  112. section is updated.  Yet a third possibility (similar to the
  113. first) would be:
  114.  
  115. c.
  116.     .L= section 1 this-section
  117.     .ds Sc "@section this-section@
  118.     .L= last table 0
  119.     ...
  120.     ... refer to table .@table profits@
  121.     etc.
  122.  
  123. making use of the string-definition facility within _n_r_o_f_f.
  124.  
  125.      It is important to be  aware  that  all  processing  on
  126. labels  is done before _t_r_o_f_f processes the text; attempts to
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                            - 3 -
  137.  
  138.  
  139. build label-references by  using  macros  or  _t_r_o_f_f  strings
  140. registers will almost certainly not work as expected.
  141.  
  142. 2.  Command Line Options
  143.  
  144.      Options to _l_b_l are set in the command line,  which  has
  145. the form
  146.  
  147.         lbl [ -d_d_e_l_i_m ] [ -m_m_a_c_r_o ] [ -l ] [ -s ]
  148.  
  149.  
  150. -d   _d_e_l_i_m  is  the  character  used  to   delimit   in-line
  151.      occurrences of label references (default ``@'');
  152.  
  153. -m   _m_a_c_r_o is the 2-character name of a  _t_r_o_f_f  macro  which
  154.      introduces label definitions, etc. (default ``L='');
  155.  
  156. -l   causes a listing of label-definitions to be written  to
  157.      the  standard error stream.  Each label-type is listed,
  158.      together with its print format, followed by a line  for
  159.      each  label  of that type, showing label-name, file and
  160.      line where it is defined, and value;
  161.  
  162. -s   causes the generation of the _t_r_o_f_f  input  file  to  be
  163.      suppressed; setting -_s automatically also sets -_l.
  164.  
  165. 3.  Control directives
  166.  
  167.      In addition to defining labels, the .L= macro  (or  its
  168. substitute)  can  be used for several other purposes.  These
  169. are all indicated by commands of the form
  170.  
  171.         .L= _c_o_m_m_a_n_d _a_r_g_u_m_e_n_t ...
  172.  
  173. where the _c_o_m_m_a_n_ds are reserved words which may not be  used
  174. as  type-names.   These  commands  allow  control  over  the
  175. initialisation of label values, the print format of  labels,
  176. and thelabel reference delimiter.
  177.  
  178. .L= delimiter off
  179.      turns off interpretation  of  the  delimiter  character
  180.      altogether;  subsequent  text is copied literally until
  181.      another _d_e_l_i_m_i_t_e_r command is encountered;
  182.  
  183. .L= delimiter _c_h_a_r_a_c_t_e_r
  184.      resets the delimiter in subsequent text  to  the  given
  185.      character;
  186.  
  187. .L= format _t_y_p_e_n_a_m_e _s_t_r_i_n_g
  188.      sets the print format for labels of the  given  type  -
  189.      see section 3.1;
  190.  
  191. .L= last _t_y_p_e_n_a_m_e _c_o_u_n_t_1 _c_o_u_n_t_2 ...
  192.      resets the counters for _t_y_p_e_n_a_m_e  as  though  the  last
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                            - 4 -
  203.  
  204.  
  205.      label  generated  had  been  _c_o_u_n_t_1._c_o_u_n_t_2... (with all
  206.      omitted counts taken as 0).
  207.  
  208. 3.1.  Print formats
  209.  
  210.      The default print format for a label is as  a  sequence
  211. of  period-separated  arabic  numerals.  However, it is also
  212. possible  to  specify  alphabetic  or  roman  labels,  or  a
  213. mixture,  and  to have separators other than a period.  This
  214. is governed by the format given in a ``.LE format'' command.
  215.  
  216.      Such a format contains escape sequences (flagged  by  a
  217. ``%'' character) and literal text.  The text is copied until
  218. an escape  sequence  is  encountered;  such  a  sequence  is
  219. replaced by the index for the next level of the label value,
  220. printed in one of the following formats:
  221.  
  222. %1   Arabic  numerals   (without   non-significant   leading
  223.      zeros);
  224.  
  225. %0   As %1, but offset by 1 so that the first value  printed
  226.      will be 0 rather than 1;
  227.  
  228. %a   Lower-case alphabetics, starting  at  ``a'';  ``z''  is
  229.      followed by ``aa'', etc.;
  230.  
  231. %A   Upper-case alphabetics;
  232.  
  233. %i   Lower-case roman numerals (with some  odd  choices  for
  234.      large  numbers,  consistent  with  the  roman  numerals
  235.      printed by _t_r_o_f_f).
  236.  
  237. %I   Upper-case roman numerals.
  238.  
  239. A ``%'' followed  by  any  other  character  (in  particular
  240. another ``%'') prints as that character.
  241.  
  242. 4.  Limits
  243.  
  244.      _L_b_l imposes  no  limit  on  the  size  of  text  to  be
  245. processed,  but  (like  _r_e_f_e_r)  needs  to act on a text as a
  246. whole, rather than processing individual files.   The  limit
  247. on  the  number  of  levels of header is unlikely to prove a
  248. problem.  The number of labels which may be used is  limited
  249. only by the amount of memory available to a process; even on
  250. a small machine it is possible to handle a few hundred label
  251. definitions.
  252.  
  253. 5.  Further Examples
  254.  
  255.      The copying of the definition macros makes it  possible
  256. to use them as _t_r_o_f_f macros, as in the following example:
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                            - 5 -
  269.  
  270.  
  271.  
  272.         .de L=
  273.         .ie '\\$1'sec' .NH \\$2
  274.         .el .ie '\\$1'table' .if !'\\$3'*' \{
  275.         .DS C
  276.         Table '\\$3' about here
  277.         .DE
  278.         \}
  279.         .el .if '\\$1'fig' .if !'\\$3'*' \{
  280.         .DS C
  281.         Figure '\\$3' about here
  282.         .DE
  283.         \}
  284.         ..
  285.         .nr LL 5i
  286.         .ND
  287.         .TL
  288.         Example of LBL
  289.         .L= sec 1 intro
  290.         Introduction
  291.         .L= table 1 *
  292.         .PP
  293.         We begin with a small table (Table @table opening@).
  294.         .L= table 2 opening
  295.         and consider things in more detail in Section
  296.         @sec cont@.
  297.         .L= sec 1 cont
  298.         Continuation
  299.         .L= table 1 *
  300.         .PP
  301.         In this continuation we refer back to Section
  302.         @sec intro@, which contained
  303.         Table @table opening@, and present more detailed
  304.         information in Table
  305.         @table detail@.
  306.         .L= table 2 detail
  307.         .L= sec 2 subcont
  308.         Sub-continuation
  309.         .PP
  310.         In which we further refine things, as shown in
  311.         Table @table mega-detail@ below.
  312.         .L= table 2 mega-detail
  313.  
  314. In the above, the ``.L= sec'' macros automatically  generate
  315. the numbered headings by expanding to the _m_s ``.NH'' macros,
  316. while the  ``table''  definitions  cause  the  insertion  of
  317. figures such as
  318.  
  319.                  Table 'detail' about here
  320.  
  321. The above example thus produces the following:
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                            - 6 -
  335.  
  336.  
  337.  
  338.                           Example of LBL
  339.  
  340.  
  341.  
  342.  
  343.  
  344.         _1.  _I_n_t_r_o_d_u_c_t_i_o_n
  345.  
  346.              We begin with a small table (Table 1.1).
  347.  
  348.  
  349.                     Table 'opening' about here
  350.  
  351.          and consider things in more detail in Section 2.
  352.  
  353.         _2.  _C_o_n_t_i_n_u_a_t_i_o_n
  354.  
  355.              In this continuation we refer back to Section
  356.         1,  which  contained  Table  1.1, and present more
  357.         detailed information in Table 2.1.
  358.  
  359.  
  360.                     Table 'detail' about here
  361.  
  362.  
  363.  
  364.         _2._1.  _S_u_b-_c_o_n_t_i_n_u_a_t_i_o_n
  365.  
  366.              In which we further refine things,  as  shown
  367.         in Table 2.2 below.
  368.  
  369.  
  370.                   Table 'mega-detail' about here
  371.  
  372.  
  373.      The alphabetic formats may be useful for such things as
  374. appendices, e.g.
  375.  
  376.         .L= format appendix %A
  377.         .L= appendix 1 trade-marks
  378.         .SH
  379.         Appendix @appendix trade-marks@:
  380.         List of Registered Trade Marks
  381.         .LP
  382.         (For the addresses of the proprietors see
  383.         @appendix props@).
  384.           ...
  385.         .L= appendix 1 props
  386.  
  387. which will generate
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                            - 7 -
  401.  
  402.  
  403.  
  404.         _A_p_p_e_n_d_i_x _A: _L_i_s_t _o_f _R_e_g_i_s_t_e_r_e_d _T_r_a_d_e _M_a_r_k_s
  405.  
  406.         (For the addresses of the proprietors see appendix B).
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463. echo shar: "274 control characters may be missing from 'lbl.doc'"
  464.