home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / fweb140x.zip / fweb.info-2 (.txt) < prev    next >
GNU Info File  |  1996-02-27  |  51KB  |  1,044 lines

  1. This is Info file fweb.info, produced by Makeinfo-1.55 from the input
  2. file fweb.texinfo.
  3.    This file documents FWEB...
  4.    Copyright 1993 John A. Krommes
  5.    Permission is granted to make and distribute verbatim      copies of
  6. this manual provided the copyright notice and      this permission
  7. notice are preserved on all copies.
  8.    Permission is granted to process this file through TeX      and
  9. print the results, provided the printed document      carries a copying
  10. permission notice identical to this      one except for the removal of
  11. this paragraph (this      paragraph not being relevant to the printed
  12. manual).
  13.    Permission is granted to copy and distribute modified      versions
  14. of this manual under the conditions for      verbatim copying, provided
  15. also that the section      entitled "Copying" is included exactly as in
  16. the original, and provided      that the entire resulting derived work
  17. is distributed      under the terms of a permission notice identical to
  18. this      one.
  19.    Permission is granted to copy and distribute      translations of
  20. this manual into another language,      under the above conditions for
  21. modified versions,      except that this permission notice may be
  22. stated in a      translation approved by the author.
  23. File: fweb.info,  Node: -F_,  Next: -f,  Prev: -e,  Up: Options
  24. `-F':  Compare output files with old versions.
  25. ----------------------------------------------
  26.    When the `-F' option is in effect, FTANGLE writes its output to a
  27. temporary file (or files) instead of to its ultimate destination--e.g.,
  28. `test.c' and/or `test.f'.  After all output is written, the temporary
  29. files are compared with the old version of the files, if they exist.
  30. If the files are identical, the appropriate temporary file is deleted;
  31. otherwise, the temporary file is renamed, effectively overwriting the
  32. old version.  This feature avoids updating the time stamp on the file
  33. unnecessarily, so `make' files won't recompile the output unless it
  34. really has to.
  35.    (Note that with this option in effect, if one used the Unix utility
  36. `touch' to force processing of a group of files, but the WEB sources
  37. are never changed, the `make' file will continue to tangle the sources
  38. no matter how many times it is run, since FTANGLE will never update the
  39. time stamp on the files.)
  40.    The location of the temporary file as well as details of the renaming
  41. procedure are determined by the automatic configuration script during
  42. installation of the processors.  The script `./configure' first looks
  43. for the (non-ANSI) function `tempnam'.  If it finds it, it uses it to
  44. place the temporary file in the directory that FWEB would normally use
  45. for output in the absence of the `-F' option.  (That is usually the
  46. current directory.)  If `tempnam' is not available, the ANSI routine
  47. `tmpnam' is used.  That places the temporary file in a directory
  48. determined by the system.
  49.    To implement the renaming, the `rename' function is used.  This may
  50. fail if `tmpnam' placed the temporary file on a different device.  If
  51. so, an attempt is made to force the rename by using the |system|
  52. routine to issue a `mv' command.  Terminal output indicates the
  53. progress of the renaming.  An asterisk following an output file name
  54. indicates that `rename' did not succeed, but the `mv' command did.
  55. File: fweb.info,  Node: -f,  Next: -h,  Prev: -F_,  Up: Options
  56. `-f':  Turn off module references for identifiers.
  57. --------------------------------------------------
  58.    By default, FWEAVE gives certain entities such as function names a
  59. section-number subscript to indicate where that function was defined.
  60. The `-f' command turns off the subscripting operation.
  61.    The subscript operations are further controlled by the settings of
  62. the style-file parameters `mark_defined'.  *Note S_mark_defined::.
  63. File: fweb.info,  Node: -h,  Next: -I_,  Prev: -f,  Up: Options
  64. `-h':  Get help.
  65. ----------------
  66.    This just prints a message saying where further help is available.
  67. File: fweb.info,  Node: -I_,  Next: -i,  Prev: -h,  Up: Options
  68. `-I':  Append to search list for include files.
  69. -----------------------------------------------
  70.    The fundamental search list for include files is defined by the
  71. environment variable `FWEB_INCLUDES', which is a colon-delimited list
  72. such as
  73.      setenv FWEB_INCLUDES .:/usr/fweb:/other/stuff
  74.    The `-I' option appends to this list.
  75. File: fweb.info,  Node: -i,  Next: -i!,  Prev: -I_,  Up: Options
  76. `-i':  Don't print `@I' include files.
  77. --------------------------------------
  78.    If a web file is included via `@I' (*note ATI_::.), for example
  79.      @I formats.hweb
  80. then the `-i' option means to read and process the web file, but don't
  81. print its contents.  This option is often used for large files of macro
  82. definitions, formats, or typedef statements that must be included at the
  83. beginning of even very short web files; it clutters things up to print
  84. such header files all the time.
  85.    Note that files included via `@i' do not respond to `-i' or `-i!'.
  86. File: fweb.info,  Node: -i!,  Next: -L_,  Prev: -i,  Up: Options
  87. `-i!':  Don't read `@I' include files.
  88. --------------------------------------
  89.    If a web file is included via `@I', for example
  90.      @I formats.hweb
  91. then the `-i!' option means to ignore such files completely.  This
  92. option is seldom useful; the `-i' option (*note -i::.) is more often
  93. used.
  94. File: fweb.info,  Node: -L_,  Next: -l,  Prev: -i!,  Up: Options
  95. `-L':  Select global language.
  96. ------------------------------
  97.    To select a global language from the command line, say `-Ll', where
  98. l is one of `{c,c++,n,n9,r,r9,x}'.  *Note Languages::.
  99. File: fweb.info,  Node: -l,  Next: -m,  Prev: -L_,  Up: Options
  100. `-l':  Echo input line.
  101. -----------------------
  102.    The option `-l[mmm[:nnn]]' echoes the input line constructed by the
  103. input driver between lines mmm and nnn.  Missing nnn means echo to the
  104. end of file.  Missing mmm means echo from the beginning.
  105.    This option is useful as a debugging tool.  It is often used to
  106. verify that the input driver is inserting semicolons correctly.  For
  107. Fortran-77, it is also useful to verify that comments are being
  108. processed correctly.
  109. File: fweb.info,  Node: -m,  Next: -m4,  Prev: -l,  Up: Options
  110. `-m':  Define WEB macro.
  111. ------------------------
  112.    The command-line construction
  113.      -mA(x)=x
  114. defines the WEB macro `A' as though the definition
  115.      @m A(x) x
  116. had appeared at the beginning of the web file.
  117. File: fweb.info,  Node: -m4,  Next: -m;,  Prev: -m,  Up: Options
  118. `-m4':  Understand `m4' built-in commands.
  119. ------------------------------------------
  120.    This tells FWEAVE to properly format the reserved words of the `m4'
  121. preprocessor.  The use of this preprocessor is *not recommended*; use
  122. FWEB's built-in preprocessor instead.
  123. File: fweb.info,  Node: -m;,  Next: -n,  Prev: -m4,  Up: Options
  124. `-m;':  Append pseudo-semicolons.
  125. ---------------------------------
  126.    When `-m;' is in effect, the construction `@;' is appended
  127. automatically to all WEB macro definitions.
  128.    *This option is not recommended.*  Insert the `@;' by hand when
  129. necessary, as in
  130.      @m SET(x,y) x=1; y=2@;
  131. File: fweb.info,  Node: -n,  Next: -n9,  Prev: -m;,  Up: Options
  132. `-n':  Set global language to Fortran-77.
  133. -----------------------------------------
  134.    *Note Languages::, *Note Fortran::.
  135. File: fweb.info,  Node: -n9,  Next: -n;,  Prev: -n,  Up: Options
  136. `-n9':  Set global language to Fortran-90.
  137. ------------------------------------------
  138.    *Note Languages::, *Note Fortran::.
  139. File: fweb.info,  Node: -n;,  Next: -nb,  Prev: -n9,  Up: Options
  140. `-n;':  Supply automatic semicolons (Fortran).
  141. ----------------------------------------------
  142.    This is the default mode of operation in Fortran-77; the input driver
  143. automatically appends a semicolon to each logical line of source code.
  144. Since it's the default, you don't have to use it unless you wish to
  145. negate it.  *Note Negating options::.
  146. File: fweb.info,  Node: -nb,  Next: -np,  Prev: -n;,  Up: Options
  147. `-nb':  Number `if's and `do's (Fortran).
  148. -----------------------------------------
  149.    In the woven output, extra comments are added to help one correlate
  150. the block structure of the code.
  151. File: fweb.info,  Node: -np,  Next: -n\,  Prev: -nb,  Up: Options
  152. `-np':  Print semicolons (Fortran).
  153. -----------------------------------
  154.    Although the Fortran input driver automatically terminates logical
  155. lines with semicolons so that the innards of FWEAVE can process them
  156. correctly, the semicolons are by default not printed.  To make them be
  157. printed, use the `-np' option.
  158. File: fweb.info,  Node: -n\,  Next: -n&,  Prev: -np,  Up: Options
  159. `-n\':  Free-form syntax continued by backslash.
  160. ------------------------------------------------
  161.    In Fortran-90, this turns on free-form syntax and sets the
  162. continuation character to be the backslash.  For example,
  163.      -n9[-n\]
  164.      @
  165.      @a
  166.      program main;
  167.      x = \
  168.       y;
  169.      end;
  170.    In the tangled output the backslash is converted into Fortran-90's
  171. standard continuation character, the ampersand.
  172. File: fweb.info,  Node: -n&,  Next: -n/,  Prev: -n\,  Up: Options
  173. `-n&':  Free-form syntax continued by ampersand.
  174. ------------------------------------------------
  175.    In Fortran-90, this turns on free-form syntax and sets the
  176. continuation character to be the backslash.  For example,
  177.      -n9[-n\]
  178.      @
  179.      @a
  180.      program main;
  181.      x = &
  182.       y;
  183.      end;
  184. File: fweb.info,  Node: -n/,  Next: -n!,  Prev: -n&,  Up: Options
  185. `-n/':  Recognize short comments (Fortran).
  186. -------------------------------------------
  187.    The standard FWEB notation for a short comment is `// ...'.  However,
  188. in Fortran the `//' denotes concatenation by default.  To make it denote
  189. a short comment, use the `-n/' option.  For concatenation, use `\/'.
  190. File: fweb.info,  Node: -n!,  Next: -n),  Prev: -n/,  Up: Options
  191. `-n!':  Make `!' denote short comment (Fortran).
  192. ------------------------------------------------
  193. File: fweb.info,  Node: -n),  Next: -o,  Prev: -n!,  Up: Options
  194. `-n)':  Reverse array indices (Fortran)
  195. ---------------------------------------
  196.    This flag permits Fortran programmers to use C-style array indices.
  197. Conversions such as the following are made:
  198.      a(k)(i) => a(i,k)
  199.      a(k)(i,j) => a(i,j,k)
  200.      a(k)(j)(i) => a(i,j,k)
  201. This feature permits convenient definitions of macros to deal with
  202. multi-dimensional vectors.
  203. File: fweb.info,  Node: -o,  Next: -q,  Prev: -n),  Up: Options
  204. `-o':  Don't overload operators.
  205. --------------------------------
  206.    (To be finished.)
  207. File: fweb.info,  Node: -q,  Next: -P_,  Prev: -o,  Up: Options
  208. `-q':  Don't translate Ratfor.
  209. ------------------------------
  210.    *(Obsolete.)*
  211. File: fweb.info,  Node: -P_,  Next: -p,  Prev: -q,  Up: Options
  212. `-P':  Select TeX processor.
  213. ----------------------------
  214.    Say `-PT' or `-PL' to inform FWEAVE that its output will be
  215. processed by TeX or LaTeX, respectively.  If you always use LaTeX, it's
  216. easiest to put `+PL' into the `.fweb' initialization file.
  217. File: fweb.info,  Node: -p,  Next: -r,  Prev: -P_,  Up: Options
  218. `-p':  Buffer up a style-file entry.
  219. ------------------------------------
  220.    This option can be used in the `.fweb' initialization file to record
  221. style-file entries that are common to all runs.  This command buffers
  222. up the entries.  They are effectively placed at the beginning of the
  223. local style file, which is read after the command line is processed.
  224. *Note Style::.
  225. File: fweb.info,  Node: -r,  Next: -r9,  Prev: -p,  Up: Options
  226. `-r':  Set global language to Ratfor-77.
  227. ----------------------------------------
  228.    *Note Languages::, *Note Ratfor::.
  229. File: fweb.info,  Node: -r9,  Next: -rg,  Prev: -r,  Up: Options
  230. `-r9':  Set global language to Ratfor-90.
  231. -----------------------------------------
  232.    *Note Languages::, *Note Ratfor::.
  233. File: fweb.info,  Node: -rg,  Next: -rk,  Prev: -r9,  Up: Options
  234. `-rg':  Set `goto' parameters.
  235. ------------------------------
  236.    This obscure parameter is used for Ratfor (and really should be a
  237. style-file parameter).  Please see the manual.
  238. File: fweb.info,  Node: -rk,  Next: -rK_,  Prev: -rg,  Up: Options
  239. `-k':   Suppress comments about Ratfor translation.
  240. ---------------------------------------------------
  241.    By default, the Ratfor translator writes comments about what command
  242. it is translating.  The `-k' option suppresses those comments.
  243. Arguments to this command allows one to suppress comments about only
  244. particular commands; please see the reference guide.
  245. File: fweb.info,  Node: -rK_,  Next: -r;,  Prev: -rk,  Up: Options
  246. `-K':   Write comments about Ratfor translation.
  247. ------------------------------------------------
  248.    This is the negative of `-k'; it forces comments about particular
  249. Ratfor commands.
  250. File: fweb.info,  Node: -r;,  Next: -rb,  Prev: -rK_,  Up: Options
  251. `-r;':  Turn on auto-semi mode (Ratfor).
  252. ----------------------------------------
  253.    Please don't use this command.  Insert semicolons by hand in your
  254. Ratfor code.
  255. File: fweb.info,  Node: -rb,  Next: -r/,  Prev: -r;,  Up: Options
  256. `-rb':  Number `if's and `do's (Ratfor).
  257. ----------------------------------------
  258.    In the woven output, extra comments are added to help one correlate
  259. the block structure of the code.
  260. File: fweb.info,  Node: -r/,  Next: -r!,  Prev: -rb,  Up: Options
  261. `-r/':  Recognize short comments (Ratfor).
  262. ------------------------------------------
  263.    The standard FWEB notation for a short comment is `// ...'.  However,
  264. in Ratfor the `//' denotes concatenation by default.  To make it denote
  265. a short comment, use the `-r/' option.  For concatenation, use `\/'.
  266. File: fweb.info,  Node: -r!,  Next: -r),  Prev: -r/,  Up: Options
  267. `-r!':  Make `!' denote short comment (Ratfor).
  268. -----------------------------------------------
  269. File: fweb.info,  Node: -r),  Next: -s,  Prev: -r!,  Up: Options
  270. `-r)':  Reverse array indices (Ratfor)
  271. --------------------------------------
  272. File: fweb.info,  Node: -s,  Next: -T_,  Prev: -r),  Up: Options
  273. `-s':  Print statistics.
  274. ------------------------
  275.    `-s' prints statistics about memory usage at the end of the run.
  276.    `-sm' prints statistics about memory usage at the end of the run,
  277. just as does `-s'; it also prints information about dynamic memory
  278. allocations as they occur.  `-smnnn' displays allocations of nnn bytes
  279. or more; if nnn is missing, 10000 is assumed.
  280. File: fweb.info,  Node: -T_,  Next: -t,  Prev: -s,  Up: Options
  281. `-T':  Flag-setting commands for FTANGLE.
  282. -----------------------------------------
  283.    This is a family of commands that set flags appropriate only for
  284. FTANGLE.
  285. * Menu:
  286. * -TD::                Permit processing of deferred macro definitions.
  287. * -Tv::                Don't print header info at top of output.
  288. * -T%::                Don't retain trailing comments.
  289. File: fweb.info,  Node: -TD,  Next: -Tv,  Prev: -T_,  Up: -T_
  290. `-TD':  Permit processing of deferred macro definitions
  291. .......................................................
  292.    Deferred macro definitions are `@m' (or, equivalently, `@#define')
  293. commands that appear in the code part rather than the usual definition
  294. part.  These definitions are evaluated during the output (phase 2), and
  295. can cause confusion when used with the preprocessor commands, which are
  296. evaluated during the input (phase 1).  Because of this confusion,
  297. deferred macro definitions are prohibited by default.  To permit them,
  298. use the `-TD' option.
  299. File: fweb.info,  Node: -Tv,  Next: -T%,  Prev: -TD,  Up: -T_
  300. `-Tv': Don't print header info
  301. ..............................
  302.    By default, FTANGLE attempts to be helpful and prints some
  303. information about the command line, input and change files, etc. at the
  304. beginning of the output file.  This information can be deleted by means
  305. of the `-Tv' flag.  (This is done automatically when the `-F' flag is
  306. in effect, since the header information includes a time stamp that would
  307. defeat a successful file comparison.)
  308. File: fweb.info,  Node: -T%,  Prev: -Tv,  Up: -T_
  309. `-T%':  Don't retain trailing comments
  310. ......................................
  311.    Unless the `-v' option is used, comments are generally deleted by
  312. FTANGLE as it writes the output file.  However, in the TeX language
  313. such deletions can change the behavior of the output (by introducing
  314. extra spaces).  Therefore, for TeX comments that do not begin a line
  315. are always retained unless the `-T%' command is used.  This command has
  316. no effect for languages other than TeX.
  317. File: fweb.info,  Node: -t,  Next: -U_,  Prev: -T_,  Up: Options
  318. `-t':  Truncate identifiers.
  319. ----------------------------
  320.    The truncation option enables one to use a wider character set for
  321. identifiers than the language compiler will accept.  The standard
  322. example is vanilla-flavored Fortran, which doesn't allow the underscore.
  323. If one says ``-tn6{_}'', underscores will be removed from all
  324. identifiers, then the result will be truncated to length 6.  If the
  325. truncation procedure results in non-unique identifiers, these are
  326. listed.
  327. File: fweb.info,  Node: -U_,  Next: -u,  Prev: -t,  Up: Options
  328. `-U':  Convert reserved output tokens to lower case.
  329. ----------------------------------------------------
  330.    Particularly during RATFOR expansion, certain output tokens such as
  331. `DO' are produced in upper case.  The `-U' option forces such tokens to
  332. be produced in lower case.
  333. File: fweb.info,  Node: -u,  Next: -v,  Prev: -U_,  Up: Options
  334. `-u':  Undefine macro.
  335. ----------------------
  336.    `-uA' undefines the WEB macro previously defined on the command line
  337. (or in `.fweb') via `-m'.
  338.    *CAUTION*:  This command can also undefine built-in functions such
  339. as `$IF'.  Don't do that, since built-ins can use other built-ins
  340. behind the scenes; undefining one can cause very strange behavior.
  341. File: fweb.info,  Node: -v,  Next: -W_,  Prev: -u,  Up: Options
  342. `-v':  Make all comments verbatim.
  343. ----------------------------------
  344.    By default, comments are not passed to the tangled output.  With
  345. `-v', all comments are included verbatim in the tangled output.
  346. File: fweb.info,  Node: -W_,  Next: -w,  Prev: -v,  Up: Options
  347. `-W':  Flag-setting commands for FWEAVE.
  348. ----------------------------------------
  349.    This is a family of commands that set flags appropriate only for
  350. FWEAVE.  Commands such as `-W[' and `-Wf' can be combined as `-W[f'.
  351. * Menu:
  352. * -W[::                 Turn on processing of bracketed array indices.
  353. * -Wdflmvw::             Don't print various things in woven output.
  354. File: fweb.info,  Node: -W[,  Next: -Wdflmvw,  Prev: -W_,  Up: -W_
  355. `-W[':  Process bracketed array indices
  356. .......................................
  357. File: fweb.info,  Node: -Wdflmvw,  Prev: -W[,  Up: -W_
  358. `-Wdflmvw':  Don't print various things in woven output
  359. .......................................................
  360.    The printing of selected definition-part commands can be suppressed
  361. as follows:
  362.      -Wd --- outer definitions
  363.      -Wf --- format statements
  364.      -Wl --- limbo text definitions
  365.      -Wm --- WEB macro definitions
  366.      -Wv --- operator overloads
  367.      -Ww --- identifier overloads
  368. When these commands are used, associated cross-referencing is suppressed
  369. as well.
  370. File: fweb.info,  Node: -w,  Next: -x,  Prev: -W_,  Up: Options
  371. `-w':  Change name of macro package
  372. -----------------------------------
  373.    The command `-w' means "Don't print `\input fwebmac.sty' as the first
  374. line of the `.tex' output file."  The command `-wfname' means "Print
  375. `\input fname' as the first line."
  376. File: fweb.info,  Node: -x,  Next: -X_,  Prev: -w,  Up: Options
  377. `-x':  Reduce cross-reference information.
  378. ------------------------------------------
  379.    Cross-reference information (for FWEAVE) includes the table of
  380. contents ('c'), the index ('i'), and the module list ('m').  The
  381. command `-x' eliminates all of that information.  The command
  382. `-xletters' eliminates the piece of information corresponding to each
  383. letter in the list.  For example, `-xim' eliminates the index and the
  384. module list.
  385. File: fweb.info,  Node: -X_,  Next: -y,  Prev: -x,  Up: Options
  386. `-X':  Print selected cross-reference information.
  387. --------------------------------------------------
  388.    This command is the opposite of `-x'.  *Note -x::.
  389. File: fweb.info,  Node: -y,  Next: -Z_,  Prev: -X_,  Up: Options
  390. `-y':  Allocate dynamic memory.
  391. -------------------------------
  392.    This command changes the default size for a dynamically allocated
  393. memory buffer.  The buffers are indicated by a one- or two-character
  394. abbreviation such as "op".  The command `-yop200' allocates 200 units
  395. for the "op" buffer.
  396.    To query the default allocations, just say `-y'.
  397.    For a more detailed discussion of memory allocation and a menu of the
  398. various dynamic arrays, see *Note Memory allocation::.
  399. File: fweb.info,  Node: -Z_,  Next: -z,  Prev: -y,  Up: Options
  400. `-Z':  Display default style-file parameters.
  401. ---------------------------------------------
  402.    The command `-Zabc' prints to the screen the default contents of the
  403. style-file parameters beginning with "abc".  Just `-Z' prints
  404. everything.
  405. File: fweb.info,  Node: -z,  Next: -.,  Prev: -Z_,  Up: Options
  406. `-z':  Change name of style file.
  407. ---------------------------------
  408.    The command `-znew.sty' changes the default style-file name
  409. `fweb.sty' to `new.sty'.  The command `-z' means "Don't read any style
  410. file."
  411.    Normally the style file is read from the same directory in which the
  412. WEB file resides.  To force `fweb.sty' to be read from the current
  413. directory, say `-z.'.
  414. File: fweb.info,  Node: -.,  Next: -\,  Prev: -z,  Up: Options
  415. `-.':  Don't recognize dot constants.
  416. -------------------------------------
  417.    If this command is used, the processors will not understand that
  418. constructions such as `.LT.' are operators in Fortran or Ratfor.  This
  419. command is useful if one is trying to modernize the source code to deal
  420. with symbols such as `<' instead of `.LT.'.
  421. File: fweb.info,  Node: -\,  Next: -lp,  Prev: -.,  Up: Options
  422. `-\':  Explicitly escape continued strings.
  423. -------------------------------------------
  424.    (To be finished.)
  425. File: fweb.info,  Node: -lp,  Next: -colon,  Prev: -\,  Up: Options
  426. `-(':  Continue parenthesized strings with backslashes.
  427. -------------------------------------------------------
  428. File: fweb.info,  Node: -colon,  Next: ->,  Prev: -lp,  Up: Options
  429. `-:':  Set starting automatic statement number.
  430. -----------------------------------------------
  431.    Useful for Fortran and Ratfor.  Symbolic statement labels that are
  432. defined with the `#:0' macro command are incremented starting with the
  433. default of 90000.  To change this to 789, say `-:789'.
  434. File: fweb.info,  Node: ->,  Next: -=,  Prev: -colon,  Up: Options
  435. `->':  Redirect output.
  436. -----------------------
  437.    This changes the name of the output file.  If no name is given,
  438. output is redirected to the terminal.
  439. File: fweb.info,  Node: -=,  Next: -#,  Prev: ->,  Up: Options
  440. `-=':  Redirect output.
  441. -----------------------
  442.    Equivalent to `->'.
  443. File: fweb.info,  Node: -#,  Next: -plus,  Prev: -=,  Up: Options
  444. `-#':  Turn off comments about line and module numbers.
  445. -------------------------------------------------------
  446.    By default, tangled output includes comments about the line and
  447. module numbers corresponding to the current piece of code.  To
  448. eliminate this clutter, say `-#'.
  449.    In some cases, bugs in tangled output, particularly Fortran, can be
  450. eliminated by using `-#'.  (But please report the bug anyway; *Note
  451. Support::.)
  452. File: fweb.info,  Node: -plus,  Next: -/,  Prev: -#,  Up: Options
  453. `-+':  Don't interpret compound assignment operators.
  454. -----------------------------------------------------
  455.    Both Ratfor and Fortran attempt to translate the commands `++',
  456. `+=', `--', `-=', `*=', and `/=' into code that behaves as its C
  457. counterpart.  To turn this feature off, use `-+'.
  458. File: fweb.info,  Node: -/,  Next: -!,  Prev: -plus,  Up: Options
  459. `-/':  Recognize short comments (Fortran & Ratfor).
  460. ---------------------------------------------------
  461.    If this command is not used, the `//' construction will be
  462. interpreted as concatenation.
  463.    One way of invoking this option is with the global language command,
  464. such as `@n/'.  Another is to put the command into the initialization
  465. file `.fweb'.
  466. File: fweb.info,  Node: -!,  Next: Info options,  Prev: -/,  Up: Options
  467. `-!':  Make `!' denote short comment (Fortran & Ratfor).
  468. --------------------------------------------------------
  469. File: fweb.info,  Node: AT commands,  Next: Comments,  Prev: Starting,  Up: Top
  470. WEB COMMANDS
  471. ************
  472.    All WEB commands begin with the character `@'.  It is recommended
  473. that these begin in column 1 if possible.  This is required in some
  474. cases [e.g., the `@x', `@y', and `@z' in change files (*note Change
  475. files::.), or column-oriented Fortran processing].
  476.    Some of these control codes may be used anywhere; others begin a new
  477. part.  For a quick summary of the control-code mappings and to see which
  478. codes begin new parts, use the `-@' option.  *Note -AT::.
  479. * Menu:
  480. Debugging commands:
  481. * @0: AT0.     Turn off debugging.
  482. * @1: AT1.     Display irreducible scraps.
  483. * @2: AT2.     Display detailed scrap reductions.
  484. Literal control characters:
  485. * @@: ATAT.     Insert an '@'.
  486. * @|: AT|.      Vertical bar/optional line break.
  487. Beginning of section:
  488. * @ : ATspace.  Begin minor section.
  489. * @*: AT*.      Begin major section.
  490. Beginning of code part:
  491. * @<: AT<.      Begin module name.
  492. * @>: AT>.      End module name.
  493. * @A: ATA_.     Begin code part.
  494. * @a: ATa.      Begin code part and mark next identifier.
  495. Control codes b-z:
  496. * @b: ATb.      Insert breakpoint command.
  497. * @c: ATc.      Set language to C.
  498. * @c++: ATcpp.  Set language to C++.
  499. * @D: ATD_.     Define outer macro.
  500. * @d: ATd.      Define outer macro and mark it.
  501. * @f: ATf.      Format identifier or module name.
  502. * @I: ATI_.     Include a WEB file, but don't print it.
  503. * @i: ATi.      Include a WEB file.
  504. * @L: ATL_.     Set language.
  505. * @l: ATl.      Specify limbo text.
  506. * @M: ATM_.     Define a WEB macro.
  507. * @m: ATm.      Define a WEB macro and mark it.
  508. * @N: ATN_.     Turn on language-independent mode.
  509. * @n: ATn.      Set language to Fortran-77.
  510. * @n9:ATn9.     Set language to Fortran-90.
  511. * @O: ATO_.     Open new output file (global scope).
  512. * @o: ATo.      Open new output file (local scope).
  513. * @r: ATr.      Set language to Ratfor-77.
  514. * @r9: ATr9.    Set language to Ratfor-90.
  515. * @u: ATu.      Undefine an outer macro.
  516. * @v: ATv.      Overload an operator.
  517. * @W: ATW_.     Overload an identifier.
  518. * @x: ATx.      Terminate ignorable material.
  519. * @y: ATy.     End first part of change.
  520. * @z: ATz.      Begin ignorable material.
  521. Conversion to ASCII:
  522. * @': ATquote.     Convert single character to ASCII.
  523. * @": AT".         Convert string to ASCII.
  524. Forward referencing:
  525. * @[: AT[.         Mark next identifier as defined in this section.
  526. Comments:
  527. * @/*: AT/*.        Begin a long verbatim comment.
  528. * @//: AT//.        Begin a short verbatim comment.
  529. * @%: AT%.          Ignore everything to next newline.
  530. * @?: AT?.          Begin a compiler directive.
  531. * @(: ATlp.         Begin a meta-comment.
  532. * @): AT).          End a meta-comment.
  533. Special brace:
  534. * @{: ATlb.        Suppress default insertion of breakpoint command.
  535. Index entries:
  536. * @_: AT_.         Force an index entry to be underlined (marked as defined).
  537. * @-: AT-.         Delete index entry for following identifier.
  538. * @+: ATplus.      Force index entry for following identifier.
  539. * @^: AT^.         Make index entry in Roman type.
  540. * @.: ATdot.       Make index entry in typewriter type.
  541. * @9: AT9.         Make index entry in format controlled by `\9'.
  542. Control text:
  543. * @t: ATt.         Put control text into TeX \hbox.
  544. * @=: AT=.         Pass control text verbatim to the output.
  545. Spacing:
  546. * @comma: ATcomma. Insert a thin space.
  547. * @/: AT/.         Insert a line break.
  548. * @|: AT|_.        Insert optional line break in an expression.
  549. * @#: AT#.         Force line break with blank line.
  550. * @~: AT~.         Cancel a line break (tie adjacent lines together).
  551. * @&: AT&.         Join left and right items.
  552. Pseudo (invisible) operators:
  553. * @e: ATe.         Invisible expression.
  554. * @;: AT;.         Invisible semicolon.
  555. * @colon: ATcolon.     Invisible colon.
  556. Miscellaneous:
  557. * @!: AT!.         Inhibit expansion for next macro.
  558. File: fweb.info,  Node: AT0,  Next: AT1,  Prev: AT commands,  Up: AT commands
  559. Debugging commands
  560. ==================
  561.    Several commands provide localized versions of the `-1' and `-2'
  562. options related to debugging of pretty-printing.
  563. `@0':  Turn off debugging
  564. -------------------------
  565.    This cancels the effect of a previous `@1' or `@2'.  *Note AT1::,
  566. *Note AT2::.  The `@0' command should appear in a different section
  567. from the `@1' or `@2' commands.
  568. File: fweb.info,  Node: AT1,  Next: AT2,  Prev: AT0,  Up: AT commands
  569. `@1':  Display irreducible scraps
  570. ---------------------------------
  571. File: fweb.info,  Node: AT2,  Next: ATAT,  Prev: AT1,  Up: AT commands
  572. `@2':  Display detailed reductions of the scraps
  573. ------------------------------------------------
  574. File: fweb.info,  Node: ATAT,  Next: AT|,  Prev: AT2,  Up: AT commands
  575. Literal control characters
  576. ==========================
  577. `@@':  The character `@'.
  578. -------------------------
  579.    `@@' inserts the single character `@'.
  580.    Don't forget to double the `@' even inside strings.  For example,
  581.      puts("'@@' is represented by `@@@@'");
  582. File: fweb.info,  Node: AT|,  Next: ATspace,  Prev: ATAT,  Up: AT commands
  583. `@|':  Literal vertical bar, or optional line break.
  584. ----------------------------------------------------
  585.    In TeX mode, `@|' inserts a vertical bar.  This is useful inside
  586. LaTeX verbatim environments.  (A simple bar would signal a shift into
  587. code mode, which is probably not what you want.)
  588.    In code mode, `@|' inserts an optional line break in an expression.
  589. File: fweb.info,  Node: ATspace,  Next: AT*,  Prev: AT|,  Up: AT commands
  590. Beginning of section
  591. ====================
  592. `@ ':  Begin minor section.
  593. ---------------------------
  594.    `@ ' begins a new minor (unstarred) section.  For example,
  595.      @ This is an example of a minor section.  (No entry is made in the table
  596.      of contents.)
  597.      @a
  598.      main()
  599.      {}
  600. File: fweb.info,  Node: AT*,  Next: AT<,  Prev: ATspace,  Up: AT commands
  601. `@*', `@*n':  Begin major section.
  602. ----------------------------------
  603.    `@*' begins a new major (starred) section (of level 0).  The command
  604. must be followed by the name of the section (entry in the table of
  605. contents), followed by a period.
  606.    If `@*' is followed by a digit n, it begins a new major section of
  607. level n.  For example,
  608.      @* MAIN PROGRAM.  This begins a major section (of level 0).
  609.      @a
  610.      main()
  611.      {}
  612.      
  613.      @*1 Input routines.  Now follow some subroutines.
  614.      @a
  615.      get_input()
  616.      {}
  617. File: fweb.info,  Node: AT<,  Next: AT>,  Prev: AT*,  Up: AT commands
  618. Beginning of code part
  619. ======================
  620.    The code part is begun by the appearance of either `@a' or `@<
  621. Module name @>='.
  622. `@<':  Begin module name.
  623. -------------------------
  624.    `@<' begins a module name, which has the form `@< TeX text @>'.
  625. Module names inside WEB macro definitions begin with `@#', not `@<'.
  626. File: fweb.info,  Node: AT>,  Next: ATA_,  Prev: AT<,  Up: AT commands
  627. `@>':  End module name.
  628. -----------------------
  629.    `@>' ends a module name, of the form `@< TeX text @>'.
  630. File: fweb.info,  Node: ATA_,  Next: ATa,  Prev: AT>,  Up: AT commands
  631. `@A':  Begin code part of unnamed section.
  632. ------------------------------------------
  633.    `@A' begins the code part of an unnamed section.  For example,
  634.      @ In an unnamed section, the code part begins with `@a'.
  635.      @a
  636.      main()
  637.      {}
  638. File: fweb.info,  Node: ATa,  Next: ATb,  Prev: ATA_,  Up: AT commands
  639. `@a':  Begin code part of unnamed section, and mark.
  640. ----------------------------------------------------
  641.    `@a' begins the code part of an unnamed section (just as does `@A'),
  642. and in addition marks the next unreserved identifier it finds as
  643. defined in this section.  Precisely,
  644.      `@a' == `@A@['
  645. File: fweb.info,  Node: ATb,  Next: ATc,  Prev: ATa,  Up: AT commands
  646. Control codes b-z
  647. =================
  648. `@b':  Insert a breakpoint command.
  649. -----------------------------------
  650.    (To be finished.  Useful only for very intimate debugging of WEB
  651. codes.)
  652. File: fweb.info,  Node: ATc,  Next: ATcpp,  Prev: ATb,  Up: AT commands
  653. `@c':  Set language to C.
  654. -------------------------
  655.    *Note Languages::, *Note C::.
  656. File: fweb.info,  Node: ATcpp,  Next: ATD_,  Prev: ATc,  Up: AT commands
  657. `@c++':  Set language to C++.
  658. -----------------------------
  659.    *Note Languages::, *Note Cpp::.
  660. File: fweb.info,  Node: ATD_,  Next: ATd,  Prev: ATcpp,  Up: AT commands
  661. `@D':  Define outer macro.
  662. --------------------------
  663.    *This command begins the definition part.*
  664.    `@D' defines an outer macro.  For more discussion, *Note Outer
  665. macros::.  For example,
  666.      @D A 1
  667. File: fweb.info,  Node: ATd,  Next: ATf,  Prev: ATD_,  Up: AT commands
  668. `@d':  Define outer macro, and mark.
  669. ------------------------------------
  670.    *This command begins the definition part.*
  671.    `@d' defines an outer macro (just as `@D' does), and also marks the
  672. next identifiers as defined here.  It is equivalent to
  673.    `@d' == `@D@['
  674. File: fweb.info,  Node: ATf,  Next: ATi,  Prev: ATd,  Up: AT commands
  675. `@f':  Format identifier or module name.
  676. ----------------------------------------
  677.    *This command begins the definition part.*
  678.    The construction
  679.      @f identifier old_identifier
  680. makes FWEAVE treat identifier like old_identifier.  For example,
  681.      @f mytype int
  682. says to treat the variable `mytype' just as `int' is treated (e.g., as
  683. a reserved word in C or C++).
  684.    The old_identifier may be one of the following special names, which
  685. insert extra spaces according to the positions of the underscores and
  686. behave as the part of speech indicated by the base names.  These are
  687. useful for dealing with macro constructions.
  688.      $_BINOP_
  689.      $_COMMA_
  690.      $_EXPR
  691.      $_EXPR_
  692.      $EXPR_
  693.      $UNOP_
  694.    When the current language is TeX, the format command can be used to
  695. change a category code according to the format
  696.      @f `TeXchar new_cat_code
  697. File: fweb.info,  Node: ATi,  Next: ATI_,  Prev: ATf,  Up: AT commands
  698. `@i':  Include file (unconditional).
  699. ------------------------------------
  700.    If one says
  701.      @i test.hweb
  702. the file `test.hweb' is inserted at the present point of the web file.
  703. By default, the current directory is searched.  Files can be included
  704. from other directories by means of the `FWEB_INCLUDES' environment
  705. variable and/or the `-I' command-line option.  *Note Environment
  706. variables::, *Note -I_::.
  707. File: fweb.info,  Node: ATI_,  Next: ATL_,  Prev: ATi,  Up: AT commands
  708. `@I':  Include file (conditional).
  709. ----------------------------------
  710.    This commands behaves like `@i' if the command-line option `-i' is
  711. not used.  If it is used, then the contents of the included file is not
  712. printed in the woven output.  *Note -i::, *Note -i!::.
  713. File: fweb.info,  Node: ATL_,  Next: ATl,  Prev: ATI_,  Up: AT commands
  714. `@L':  Set language.
  715. --------------------
  716.    `@Ll' sets the language to l, where l is one of
  717. `{c,c++,n,n9,r,r9,x,v}'.  *Note Languages::.
  718. File: fweb.info,  Node: ATl,  Next: ATM_,  Prev: ATL_,  Up: AT commands
  719. `@l':  Specify limbo text.
  720. --------------------------
  721.    (This command begins the definition part.)
  722.    Limbo text is material that FWEAVE should output before the start of
  723. the first section.  For example,
  724.      @l "\\def\\A{abc}"
  725. Note that `\\' stands for a backslash.  In general, characters must be
  726. escaped just as in C (so that one can include things like newlines in
  727. the definitions).
  728.    Limbo text may also be typed directly into the limbo section; in that
  729. case, no escapes are necessary since one is typing ordinary TeX text.
  730. Sometime, however, the `@l' command is useful for pedagogical purposes,
  731. as the limbo material can then be defined near the point where the
  732. logical discussion is made.
  733. File: fweb.info,  Node: ATM_,  Next: ATm,  Prev: ATl,  Up: AT commands
  734. `@M':  Define WEB macro.
  735. ------------------------
  736.    *This command begins the definition part.*
  737.    For a detailed discussion of WEB macros, see *Note Macros::.
  738. File: fweb.info,  Node: ATm,  Next: ATN_,  Prev: ATM_,  Up: AT commands
  739. `@m':  Define WEB macro, and mark.
  740. ----------------------------------
  741.    *This command begins the definition part.*
  742.    For a detailed discussion of WEB macros, see *Note Macros::.
  743. File: fweb.info,  Node: ATN_,  Next: ATn,  Prev: ATm,  Up: AT commands
  744. `@N':  Turn on N mode
  745. ---------------------
  746.    *This command must appear before the code part.*
  747.    The N mode invokes language-independent behavior within the scope of
  748. a particular language.  The scoping rules are the same as for language
  749. changes; i.e., using `@N' within a given section produces
  750. language-independent behavior for that section and for any modules first
  751. referenced in that section.
  752.    Fundamentally, "language-independent" behavior essentially means a
  753. literal transcription of the input to the output.  For example, it
  754. inhibits blank compression by FTANGLE and tells FWEAVE to turn off
  755. "pretty-printing" (instead, the output is printed in typewriter type
  756. within a `\begin{verbatim}...\end{verbatim}' environment.
  757.    There are some subtleties with this mode (not to mention the
  758. likelihood of bugs):
  759.   1. WEB macros and built-in functions will normally be expanded even
  760.      in the N mode.  To inhibit expansion of a particular identifier,
  761.      place `@!' before the identifier.  For example,
  762.           @
  763.           @m A 1
  764.           @N
  765.           @a
  766.           @!A = A;
  767.      expands to `A = 1'.
  768.   2. Blank lines are significant.  The N mode is ended by the
  769.      appearance of the `@*' or `@ ' denoting the start of the next
  770.      section.  If that were preceded by one or more blank lines, those
  771.      would show up in both the tangled and woven output.  They might or
  772.      might not be significant in the tangled output, but they almost
  773.      certainly will look ugly in the woven output.  To avoid this, use
  774.      the command `@%%', which deletes the remainder of the current line
  775.      and all immediately following empty lines.  For example,
  776.           @
  777.           @N
  778.           @a
  779.           x;@%%
  780.           
  781.           
  782.           
  783.           @ Next section.
  784.   3. If the N mode is invoked from a compiler-like language such as
  785.      Fortran, cross-referencing of variables is done as usual.
  786.      However, if the language is VERBATIM (which turns on the N mode
  787.      automatically), no cross-referencing is done.  (Identifiers are
  788.      still recognized according to FWEB's rules.  Those rules as
  789.      currently implemented may be essentially meaningless for some
  790.      languages; in the future, provision may be made for generalizing
  791.      these rules by the user.)  To force an identifier to be placed
  792.      into the index, precede it by `@+'.
  793. File: fweb.info,  Node: ATn,  Next: ATn9,  Prev: ATN_,  Up: AT commands
  794. `@n':  Set language to Fortran-77.
  795. ----------------------------------
  796.    *Note Languages::.
  797. File: fweb.info,  Node: ATn9,  Next: ATO_,  Prev: ATn,  Up: AT commands
  798. `@n9':  Set language to Fortran-90.
  799. -----------------------------------
  800.    *Note Languages::.
  801. File: fweb.info,  Node: ATO_,  Next: ATo,  Prev: ATn9,  Up: AT commands
  802. `@O':  Open output file (global scope).
  803. ---------------------------------------
  804.    A statement of the form
  805.      @O newfile.c
  806. changes the name of the FTANGLE's output file.  This change remains in
  807. effect for the duration of the file, or until another `@O' is
  808. encountered.  (If that occurs, the previously open file is closed.)
  809.    This command is expanded during output, so it must appear in the
  810. code part.
  811. File: fweb.info,  Node: ATo,  Next: ATr,  Prev: ATO_,  Up: AT commands
  812. `@o':  Open output file (local scope).
  813. --------------------------------------
  814.    This behaves like `@O', except the new file name is in effect only
  815. for the current section.
  816. File: fweb.info,  Node: ATr,  Next: ATr9,  Prev: ATo,  Up: AT commands
  817. `@r':  Set language to Ratfor-77.
  818. ---------------------------------
  819.    *Note Languages::.
  820. File: fweb.info,  Node: ATr9,  Next: ATu,  Prev: ATr,  Up: AT commands
  821. `@r9':  Set language to Ratfor-90.
  822. ----------------------------------
  823.    *Note Languages::.
  824. File: fweb.info,  Node: ATu,  Next: ATv,  Prev: ATr9,  Up: AT commands
  825. `@u':  Undefine outer macro.
  826. ----------------------------
  827.    *This command begins the definition part.*
  828.    `@u' is the inverse of `@d'.  For example, in C it expands to
  829. `#undef'.
  830. File: fweb.info,  Node: ATv,  Next: ATW_,  Prev: ATu,  Up: AT commands
  831. `@v':  Overload operator.
  832. -------------------------
  833.    *This command begins the definition part.*
  834.    For a detailed discussion of overloading operators, see *Note
  835. Overloading::.
  836. File: fweb.info,  Node: ATW_,  Next: ATx,  Prev: ATv,  Up: AT commands
  837. `@W':  Overload identifier.
  838. ---------------------------
  839.    *This command begins the definition part.*
  840.    For a detailed discussion of overloading identifiers, see *Note
  841. Overloading::.
  842. File: fweb.info,  Node: ATx,  Next: ATy,  Prev: ATW_,  Up: AT commands
  843. `@x':  Terminate ignorable material, or begin material to be changed
  844. --------------------------------------------------------------------
  845.    Please see the discussion of the `@z' command. *Note ATz::.
  846. File: fweb.info,  Node: ATy,  Next: ATz,  Prev: ATx,  Up: AT commands
  847. `@y':  Begin change material
  848. ----------------------------
  849.    The `@y' command is permitted only in change files.  *Note Change
  850. files::.
  851. File: fweb.info,  Node: ATz,  Next: ATquote,  Prev: ATy,  Up: AT commands
  852. `@z':  Begin ignorable material, or terminate change
  853. ----------------------------------------------------
  854.    FWEB files may begin with the construction
  855.      @z
  856.      .
  857.      .
  858.      @x
  859. where the `@z' and `@x' must begin in column 1.  Material between the
  860. `@z' and `@x' is "pure commentary" and is ignored by both processors.
  861.    `@z' is also used in change files to end a change.  *Note Change
  862. files::.
  863. File: fweb.info,  Node: ATquote,  Next: AT",  Prev: ATz,  Up: AT commands
  864. Conversion to ASCII
  865. ===================
  866.    Several commands are useful for generating machine-independent code.
  867. For example, FWEB works internally with the ASCII character set, so
  868. uses these commands heavily to convert from the possibly non-ASCII
  869. native character set of the machine on which FWEB is running.
  870. `@'':  Convert character to ASCII.
  871. ----------------------------------
  872.    The construction `@'c'' converts `c' to its ASCII value.  In C and
  873. C++, it is converted to octal; for example, `@'A'' is output as `0101'.
  874. In Fortran and Ratfor, it is converted to decimal; the previous example
  875. would be output as `65'.
  876.    If the native character set of your machine is ASCII, the conversion
  877. will not be done unless the `-A' command-line option is used.  *Note
  878. -A_::.
  879. File: fweb.info,  Node: AT",  Next: AT[,  Prev: ATquote,  Up: AT commands
  880. `@"':  Convert string to ASCII.
  881. -------------------------------
  882.    The construction `@"abc"' converts the enclosed string to its ASCII
  883. representation.  For example, in C and C++ `@"abc"' will be output as
  884. `"\141\142\143"'.
  885.    In Fortran and Ratfor, no such simple mechanism exists in the
  886. language, so a function call is issued.  For example, the previous
  887. example would be output as `ASCIIstr('abc')'.  The user is responsible
  888. for defining the function `ASCIIstr'.  The name of this function can be
  889. changed by the style-file entry `ASCII_fcn'.  *Note ASCII_fcn::.
  890.    If the native character set of your machine is ASCII, the conversion
  891. will not be done unless the `-A' command-line option is used.  *Note
  892. -A_::.
  893. File: fweb.info,  Node: AT[,  Next: AT/*,  Prev: AT",  Up: AT commands
  894. Forward referencing
  895. ===================
  896. `@[':  Mark as defined.
  897. -----------------------
  898.    This command marks the next (non-reserved) identifier that appears
  899. after the `@[' as being defined in the current section.  It is usually
  900. issued automatically; for example, `@a' is equivalent to `@A@['.
  901. File: fweb.info,  Node: AT/*,  Next: AT//,  Prev: AT[,  Up: AT commands
  902. Comments
  903. ========
  904. `@/*':  Begin long verbatim comment.
  905. ------------------------------------
  906.    The following comment is copied to the tangled output.  If you desire
  907. all comments to be so copied, use `-v'.  *Note -v::.
  908. File: fweb.info,  Node: AT//,  Next: AT%,  Prev: AT/*,  Up: AT commands
  909. `@//':  Begin short verbatim comment.
  910. -------------------------------------
  911.    See the discussion of `@/*', above.
  912. File: fweb.info,  Node: AT%,  Next: AT?,  Prev: AT//,  Up: AT commands
  913. `@%':  Ignorable comment.
  914. -------------------------
  915.    If any line in a web source code contains the command `@%', all
  916. remaining material on that line (to and including the newline character)
  917. is ignored by the input driver and never processed at all.
  918.    A stronger form of this command is `@%%'.  This deletes the current
  919. line as well any empty lines that immediately follow.  This command is
  920. particularly useful when the N mode is in effect.  *Note ATN_::.
  921. File: fweb.info,  Node: AT?,  Next: ATlp,  Prev: AT%,  Up: AT commands
  922. `@?':  Begin compiler directive.
  923. --------------------------------
  924.    The remainder of the line is processed as a compiler directive.
  925. Optional material may be inserted automatically at the beginning of the
  926. tangled output line by means of the style-file option `cdir_start'.
  927. *Note Miscellaneous params::.
  928. File: fweb.info,  Node: ATlp,  Next: AT),  Prev: AT?,  Up: AT commands
  929. `@(':  Begin meta-comment.
  930. --------------------------
  931.    Material between `@(' and `@)' is treated in the N mode.  For
  932. example,
  933.      @(
  934.      Comment 1
  935.      Comment 2
  936.      @)
  937.    Style-file parameters allow optional material to be insert at the
  938. beginning and end of the meta-comment, and at the beginning of each line
  939. of output.  For more information, see the style-file parameters
  940. beginning with `meta' (*note Miscellaneous params::.).
  941. File: fweb.info,  Node: AT),  Next: ATlb,  Prev: ATlp,  Up: AT commands
  942. `@)':  End meta-comment.
  943. ------------------------
  944.    See the discussion of `@(', *Note ATlp::.
  945. File: fweb.info,  Node: ATlb,  Next: AT_,  Prev: AT),  Up: AT commands
  946. Special brace
  947. =============
  948. `@{':  Suppress insertion of breakpoint command.
  949. ------------------------------------------------
  950.    This is for detailed debugging of FWEB codes.  It inserts a left
  951. brace and suppresses the insertion of a breakpoint command.  *Note
  952. ATb::.
  953. File: fweb.info,  Node: AT_,  Next: AT-,  Prev: ATlb,  Up: AT commands
  954. Index entries
  955. =============
  956. `@_':  Force index entry to be underlined.
  957. ------------------------------------------
  958.    This command applies to the next identifier that appears after the
  959. `@_'.  The index entry for that identifier will be underlined.
  960.    This command is usually issued automatically.  For example, the index
  961. entries for the variables `i' and `j' in the C statement `int i,j;'
  962. will be underlined.
  963. File: fweb.info,  Node: AT-,  Next: ATplus,  Prev: AT_,  Up: AT commands
  964. `@-':  Delete index entry.
  965. --------------------------
  966.    This command applies to the next identifier that appears after the
  967. `@-'; it prevents the index entry associated with that identifier from
  968. being underlined.  This might be useful when the N mode is in effect.
  969. File: fweb.info,  Node: ATplus,  Next: AT^,  Prev: AT-,  Up: AT commands
  970. `@+':  Force index entry.
  971. -------------------------
  972.    This command applies to the next identifier that appears after the
  973. `@+'; it forces an index entry for that identifier. It is particularly
  974. useful when the language is VERBATIM, since cross-referencing is turned
  975. off in that case.
  976. File: fweb.info,  Node: AT^,  Next: ATdot,  Prev: ATplus,  Up: AT commands
  977. `@^':  Make index entry (Roman type).
  978. -------------------------------------
  979.    To insert one's own index entry in Roman type, say  `@^My entry@>'.
  980. File: fweb.info,  Node: ATdot,  Next: AT9,  Prev: AT^,  Up: AT commands
  981. `@.':  Make index entry (typewriter type).
  982. ------------------------------------------
  983.    To insert one's own index entry in typewriter type, say  `@^My
  984. entry@>'.
  985. File: fweb.info,  Node: AT9,  Next: ATt,  Prev: ATdot,  Up: AT commands
  986. `@9':  Make index entry (\9 format).
  987. ------------------------------------
  988.    The construction `@9text@>' is used to create an index entry in a
  989. format defined by the user.  It is associated with the macro `\9', which
  990. would be called during TeX's processing of the index as `\9{text}'.
  991. The user must define `\9' according to the format
  992.              \def\9#1{...}
  993. File: fweb.info,  Node: ATt,  Next: AT=,  Prev: AT9,  Up: AT commands
  994. Control text
  995. ============
  996. `@t':  Put control text into a TeX \hbox.
  997. -----------------------------------------
  998.    Control text is material terminated by `@>'; it must be all on one
  999. line and must not contain any `@'s.  When FWEAVE sees the command
  1000. `@tcontroltext@>', it packages the control text into an `\hbox' and
  1001. ships it to the output.  This command is ignored by FTANGLE.
  1002. File: fweb.info,  Node: AT=,  Next: ATcomma,  Prev: ATt,  Up: AT commands
  1003. `@=':  Pass control text verbatim to the output.
  1004. ------------------------------------------------
  1005.    For FTANGLE, the command `@=controltext@>' sends the control text to
  1006. the output exactly as input.  (`Control text' is defined in the
  1007. discussion of the `@t' command, *Note ATt::.) FWEAVE highlights the
  1008. control text by drawing a box around it.
  1009. File: fweb.info,  Node: ATcomma,  Next: AT/,  Prev: AT=,  Up: AT commands
  1010. Spacing
  1011. =======
  1012.    The spacing commands are used to refine FWEAVE's pretty-printed
  1013. output.  Generally it's not necessary to bother with these until you're
  1014. putting the final touches on a code.
  1015. `@,':  Insert a thin space.
  1016. ---------------------------
  1017.    Extra spacings are sometimes necessary when working with unusual
  1018. macro constructions.  (Need an example here.)
  1019. File: fweb.info,  Node: AT/,  Next: AT|_,  Prev: ATcomma,  Up: AT commands
  1020. `@/':  Force a line break.
  1021. --------------------------
  1022.    For example,
  1023.      int@/
  1024.        i,@/
  1025.        j,@/
  1026.        k;
  1027. File: fweb.info,  Node: AT|_,  Next: AT#,  Prev: AT/,  Up: AT commands
  1028. `@|':  Literal vertical bar, or optional line break.
  1029. ----------------------------------------------------
  1030.    In TeX mode, `@|' inserts a vertical bar.  Here's a LaTeX example:
  1031.      \begin{verbatim}
  1032.        The constructions @|x@| and |x| are very different.
  1033.      \end{verbatim}
  1034. You might wish to try this out to see what FWEAVE produces.
  1035.    In code mode, `@|' inserts an optional line break in an expression.
  1036. File: fweb.info,  Node: AT#,  Next: AT~,  Prev: AT|_,  Up: AT commands
  1037. `@#':  Blank line.
  1038. ------------------
  1039.    `@#' forces a line break with some extra vertical white space.  Note
  1040. that blank lines in the source are significant, so this command should
  1041. seldom be necessary.
  1042.    if `@#' is immediately followed by a letter, it is assumed that a
  1043. preprocessor command is beginning.  *Note Preprocessing::.
  1044.