diff options
Diffstat (limited to 'doc/groff.html.node/Deferring-Output.html')
-rw-r--r-- | doc/groff.html.node/Deferring-Output.html | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/doc/groff.html.node/Deferring-Output.html b/doc/groff.html.node/Deferring-Output.html new file mode 100644 index 0000000..81ab360 --- /dev/null +++ b/doc/groff.html.node/Deferring-Output.html @@ -0,0 +1,106 @@ +<!DOCTYPE html> +<html> +<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ --> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<!-- This manual documents GNU troff version 1.23.0. + +Copyright © 1994-2023 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +copy of the license is included in the section entitled "GNU Free +Documentation License". --> +<title>Deferring Output (The GNU Troff Manual)</title> + +<meta name="description" content="Deferring Output (The GNU Troff Manual)"> +<meta name="keywords" content="Deferring Output (The GNU Troff Manual)"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta name="viewport" content="width=device-width,initial-scale=1"> + +<link href="index.html" rel="start" title="Top"> +<link href="Request-Index.html" rel="index" title="Request Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference"> +<link href="Traps.html" rel="next" title="Traps"> +<link href="Drawing-Geometric-Objects.html" rel="prev" title="Drawing Geometric Objects"> + + +</head> + +<body lang="en"> +<div class="section-level-extent" id="Deferring-Output"> +<div class="nav-panel"> +<p> +Next: <a href="Traps.html" accesskey="n" rel="next">Traps</a>, Previous: <a href="Drawing-Geometric-Objects.html" accesskey="p" rel="prev">Drawing Geometric Objects</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<h3 class="section" id="Deferring-Output-1">5.27 Deferring Output</h3> +<a class="index-entry-id" id="index-deferred-output"></a> + +<a class="index-entry-id" id="index-environment"></a> +<a class="index-entry-id" id="index-diversion"></a> +<a class="index-entry-id" id="index-trap"></a> +<p>A few <code class="code">roff</code> language elements are generally not used in simple +documents, but arise as page layouts become more sophisticated and +demanding. <em class="dfn">Environments</em> collect formatting parameters like line +length and typeface. A <em class="dfn">diversion</em> stores formatted output for +later use. A <em class="dfn">trap</em> is a condition on the input or output, tested +automatically by the formatter, that is associated with a macro, causing +it to be called when that condition is fulfilled. +</p> +<p>Footnote support often exercises all three of the foregoing features. A +simple implementation might work as follows. A pair of macros is +defined: one starts a footnote and the other ends it. The author calls +the first macro where a footnote marker is desired. The macro +establishes a diversion so that the footnote text is collected at the +place in the body text where its corresponding marker appears. An +environment is created for the footnote so that it is set at a smaller +typeface. The footnote text is formatted in the diversion using that +environment, but it does not yet appear in the output. The document +author calls the footnote end macro, which returns to the previous +environment and ends the diversion. Later, after much more body text in +the document, a trap, set a small distance above the page bottom, is +sprung. The macro called by the trap draws a line across the page and +emits the stored diversion. Thus, the footnote is rendered. +</p> +<p>Diversions and traps make the text formatting process non-linear. Let +us imagine a set of text lines or paragraphs labelled ‘<samp class="samp">A</samp>’, +‘<samp class="samp">B</samp>’, and so on. If we set up a trap that produces text ‘<samp class="samp">T</samp>’ +(as a page footer, say), and we also use a diversion to store the +formatted text ‘<samp class="samp">D</samp>’, then a document with input text in the order +‘<samp class="samp">A B C D E F</samp>’ might render as ‘<samp class="samp">A B C E T F</samp>’. The diversion +‘<samp class="samp">D</samp>’ will never be output if we do not call for it. +</p> +<p>Environments of themselves are not a source of non-linearity in document +formatting: environment switches have immediate effect. One could +always write a macro to change as many formatting parameters as desired +with a single convenient call. But because diversions can be nested and +macros called by traps that are sprung by other trap-called macros, they +may be called upon in varying contexts. For example, consider a page +header that is always to be set in Helvetica. A document that uses +Times for most of its body text, but Courier for displayed code +examples, poses a challenge if a page break occurs in the middle of a +code display; if the header trap assumes that the “previous font” is +always Times, the rest of the example will be formatted in the wrong +typeface. One could carefully save all formatting parameters upon +entering the trap and restore them upon leaving it, but this is verbose, +error-prone, and not future-proof as the <code class="code">groff</code> language develops. +Environments save us considerable effort. +</p> + +</div> +<hr> +<div class="nav-panel"> +<p> +Next: <a href="Traps.html">Traps</a>, Previous: <a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |