Category:N/t/roff: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 4:
The two compilers understand and parse the same language of /.ROFF/, but their outputs are '''not''' the same. Document output from the ''TROFF'' compiler is better-suited for typesetters: photo-typesetters, laser printers, etc.; whereas output from the ''NROFF'' compiler is better-suited for typewriter-like printers: line printers, daisy wheel printers, or glass teletypes. This holds, even if the both compilers get the exact same input verbatim; although all logical flow controls are executed in the same manner.
 
A typical ''/.ROFF/ source file'' for documents is a plaintext file with the extensions: <code>*.roff</code>, <code>*.me</code>, <code>*.ms</code>, <code>*.mm</code>, or <code>*.mom</code>. The extension depends on what macro package is used to set the pages of the document, although the /.ROFF/ compiler treats all of them the same way and associates no special meanings thither. Such a /.ROFF/ document contains the document's text itself (i.e. the writer's actual words) ''interspersed'' with some formatting requests that instruct the computer how to set the text on a page.
 
The complexity of those such requests, their subtleties, and how they intertwine is what makes up the basic /.ROFF/ formatting language. For more complex formatting work, the language offers logical constructs (if-else's), numerical registers (<code>.nr</code>), macro definitions with formal parameters (<code>.de</code>, akin to function definitions), and recursive macro calls. These features are what make the /.ROFF/ language Turing-complete as well, although tasks easy in most programming languages won't necessarily be easy in /.ROFF/. To quote Professor Brian W. Kernighan, a user of TROFF, in an email about this (November 23, 2017):
Anonymous user