diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:44:05 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:44:05 +0000 |
commit | d318611dd6f23fcfedd50e9b9e24620b102ba96a (patch) | |
tree | 8b9eef82ca40fdd5a8deeabf07572074c236095d /doc/groff.html | |
parent | Initial commit. (diff) | |
download | groff-d318611dd6f23fcfedd50e9b9e24620b102ba96a.tar.xz groff-d318611dd6f23fcfedd50e9b9e24620b102ba96a.zip |
Adding upstream version 1.23.0.upstream/1.23.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/groff.html')
-rw-r--r-- | doc/groff.html | 24945 |
1 files changed, 24945 insertions, 0 deletions
diff --git a/doc/groff.html b/doc/groff.html new file mode 100644 index 0000000..e085b9e --- /dev/null +++ b/doc/groff.html @@ -0,0 +1,24945 @@ +<!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>The GNU Troff Manual</title> + +<meta name="description" content="The GNU Troff Manual"> +<meta name="keywords" content="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="#Top" rel="start" title="Top"> +<link href="#Request-Index" rel="index" title="Request Index"> +<link href="#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="dir.html#Top" rel="up" title="(dir)"> +<link href="#Introduction" rel="next" title="Introduction"> +<link href="dir.html#Top" rel="prev" title="(dir)"> +<style type="text/css"> +<!-- +a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em} +a.summary-letter-printindex {text-decoration: none} +div.center {text-align:center} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +kbd.key {font-style: normal} +p.flushright-paragraph {text-align:right} +pre.display-preformatted {font-family: inherit} +span.r {font-family: initial; font-weight: normal; font-style: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} +span.w-nolinebreak-text {white-space: nowrap} +span:hover a.copiable-link {visibility: visible} +strong.def-name {font-family: monospace; font-weight: bold; font-size: larger} +td.printindex-index-entry {vertical-align: top} +td.printindex-index-section {vertical-align: top} +th.entries-header-printindex {text-align:left} +th.sections-header-printindex {text-align:left} +ul.mark-bullet {list-style-type: disc} +ul.toc-numbered-mark {list-style: none} +--> +</style> + + +</head> + +<body lang="en"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="top-level-extent" id="Top"> +<div class="nav-panel"> +<p> +Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h1 class="top" id="GNU-troff">GNU <code class="code">troff</code></h1> + + +<p>This manual documents GNU <code class="code">troff</code> version 1.23.0. +</p> +<p>Copyright © 1994–2023 Free Software Foundation, Inc. +</p> +<blockquote class="quotation"> +<p>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”. +</p></blockquote> + + + + + +<div class="element-contents" id="SEC_Contents"> +<h2 class="contents-heading">Table of Contents</h2> + +<div class="contents"> + +<ul class="toc-numbered-mark"> + <li><a id="toc-Introduction-1" href="#Introduction">1 Introduction</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Background-1" href="#Background">1.1 Background</a></li> + <li><a id="toc-What-Is-groff_003f-1" href="#What-Is-groff_003f">1.2 What Is <code class="code">groff</code>?</a></li> + <li><a id="toc-groff-Capabilities-1" href="#groff-Capabilities">1.3 <code class="code">groff</code> Capabilities</a></li> + <li><a id="toc-Macro-Packages-1" href="#Macro-Package-Intro">1.4 Macro Packages</a></li> + <li><a id="toc-Preprocessors" href="#Preprocessor-Intro">1.5 Preprocessors</a></li> + <li><a id="toc-Output-Devices" href="#Output-Device-Intro">1.6 Output Devices</a></li> + <li><a id="toc-Installation-1" href="#Installation">1.7 Installation</a></li> + <li><a id="toc-Conventions-Used-in-This-Manual-1" href="#Conventions-Used-in-This-Manual">1.8 Conventions Used in This Manual</a></li> + <li><a id="toc-Credits-1" href="#Credits">1.9 Credits</a></li> + </ul></li> + <li><a id="toc-Invoking-groff-1" href="#Invoking-groff">2 Invoking <code class="code">groff</code></a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Options" href="#Groff-Options">2.1 Options</a></li> + <li><a id="toc-Environment-1" href="#Environment">2.2 Environment</a></li> + <li><a id="toc-Macro-Directories-1" href="#Macro-Directories">2.3 Macro Directories</a></li> + <li><a id="toc-Font-Directories-1" href="#Font-Directories">2.4 Font Directories</a></li> + <li><a id="toc-Paper-Format-1" href="#Paper-Format">2.5 Paper Format</a></li> + <li><a id="toc-Invocation-Examples-1" href="#Invocation-Examples">2.6 Invocation Examples</a></li> + </ul></li> + <li><a id="toc-Tutorial-for-Macro-Users-1" href="#Tutorial-for-Macro-Users">3 Tutorial for Macro Users</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Basics-1" href="#Basics">3.1 Basics</a></li> + <li><a id="toc-Common-Features-1" href="#Common-Features">3.2 Common Features</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Paragraphs-1" href="#Paragraphs">3.2.1 Paragraphs</a></li> + <li><a id="toc-Sections-and-Chapters-1" href="#Sections-and-Chapters">3.2.2 Sections and Chapters</a></li> + <li><a id="toc-Headers-and-Footers-1" href="#Headers-and-Footers">3.2.3 Headers and Footers</a></li> + <li><a id="toc-Page-Layout-1" href="#Page-Layout-Adjustment">3.2.4 Page Layout</a></li> + <li><a id="toc-Displays-and-Keeps-1" href="#Displays-and-Keeps">3.2.5 Displays and Keeps</a></li> + <li><a id="toc-Footnotes-and-Endnotes-1" href="#Footnotes-and-Endnotes">3.2.6 Footnotes and Endnotes</a></li> + <li><a id="toc-Table-of-Contents-1" href="#Table-of-Contents">3.2.7 Table of Contents</a></li> + <li><a id="toc-Indexing-1" href="#Indexing">3.2.8 Indexing</a></li> + <li><a id="toc-Document-Formats-1" href="#Document-Formats">3.2.9 Document Formats</a></li> + <li><a id="toc-Columnation-1" href="#Columnation">3.2.10 Columnation</a></li> + <li><a id="toc-Font-and-Size-Changes-1" href="#Font-and-Size-Changes">3.2.11 Font and Size Changes</a></li> + <li><a id="toc-Predefined-Text-1" href="#Predefined-Text">3.2.12 Predefined Text</a></li> + <li><a id="toc-Preprocessor-Support-1" href="#Preprocessor-Support">3.2.13 Preprocessor Support</a></li> + <li><a id="toc-Configuration-and-Customization-1" href="#Configuration-and-Customization">3.2.14 Configuration and Customization</a></li> + </ul></li> + </ul></li> + <li><a id="toc-Macro-Packages-2" href="#Major-Macro-Packages">4 Macro Packages</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-man-1" href="#man">4.1 <samp class="file">man</samp></a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Optional-man-extensions-1" href="#Optional-man-extensions">4.1.1 Optional <samp class="file">man</samp> extensions</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Custom-headers-and-footers" href="#Custom-headers-and-footers">Custom headers and footers</a></li> + <li><a id="toc-Ultrix_002dspecific-man-macros" href="#Ultrix_002dspecific-man-macros">Ultrix-specific man macros</a></li> + <li><a id="toc-Simple-example" href="#Simple-example">Simple example</a></li> + </ul></li> + </ul></li> + <li><a id="toc-mdoc-1" href="#mdoc">4.2 <samp class="file">mdoc</samp></a></li> + <li><a id="toc-me-1" href="#me">4.3 <samp class="file">me</samp></a></li> + <li><a id="toc-mm-1" href="#mm">4.4 <samp class="file">mm</samp></a></li> + <li><a id="toc-mom-1" href="#mom">4.5 <samp class="file">mom</samp></a></li> + <li><a id="toc-ms-1" href="#ms">4.6 <samp class="file">ms</samp></a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Introduction-2" href="#ms-Introduction">4.6.1 Introduction</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Basic-information" href="#ms-basic-information">4.6.1.1 Basic information</a></li> + </ul></li> + <li><a id="toc-Document-Structure" href="#ms-Document-Structure">4.6.2 Document Structure</a></li> + <li><a id="toc-Document-Control-Settings" href="#ms-Document-Control-Settings">4.6.3 Document Control Settings</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Margin-settings" href="#Margin-settings">Margin settings</a></li> + <li><a id="toc-Titles-_0028headers_002c-footers_0029" href="#Titles-_0028headers_002c-footers_0029">Titles (headers, footers)</a></li> + <li><a id="toc-Text-settings" href="#Text-settings">Text settings</a></li> + <li><a id="toc-Paragraph-settings" href="#Paragraph-settings">Paragraph settings</a></li> + <li><a id="toc-Heading-settings" href="#Heading-settings">Heading settings</a></li> + <li><a id="toc-Footnote-settings" href="#Footnote-settings">Footnote settings</a></li> + <li><a id="toc-Display-settings" href="#Display-settings">Display settings</a></li> + <li><a id="toc-Other-settings" href="#Other-settings">Other settings</a></li> + </ul></li> + <li><a id="toc-Document-Description-Macros" href="#ms-Document-Description-Macros">4.6.4 Document Description Macros</a></li> + <li><a id="toc-Body-Text" href="#ms-Body-Text">4.6.5 Body Text</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Text-settings-1" href="#Text-settings-in-ms">4.6.5.1 Text settings</a></li> + <li><a id="toc-Typographical-symbols" href="#Typographical-symbols-in-ms">4.6.5.2 Typographical symbols</a></li> + <li><a id="toc-Paragraphs-2" href="#Paragraphs-in-ms">4.6.5.3 Paragraphs</a></li> + <li><a id="toc-Headings" href="#Headings-in-ms">4.6.5.4 Headings</a></li> + <li><a id="toc-Typeface-and-decoration-1" href="#Typeface-and-decoration">4.6.5.5 Typeface and decoration</a></li> + <li><a id="toc-Lists" href="#Lists-in-ms">4.6.5.6 Lists</a></li> + <li><a id="toc-Indented-regions" href="#Indented-regions-in-ms">4.6.5.7 Indented regions</a></li> + <li><a id="toc-Keeps_002c-boxed-keeps_002c-and-displays" href="#ms-keeps-and-displays">4.6.5.8 Keeps, boxed keeps, and displays</a></li> + <li><a id="toc-Tables_002c-figures_002c-equations_002c-and-references" href="#ms-Insertions">4.6.5.9 Tables, figures, equations, and references</a></li> + <li><a id="toc-Footnotes" href="#ms-Footnotes">4.6.5.10 Footnotes</a></li> + <li><a id="toc-Language-and-localization" href="#ms-language-and-localization">4.6.5.11 Language and localization</a></li> + </ul></li> + <li><a id="toc-Page-layout" href="#ms-Page-Layout">4.6.6 Page layout</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Headers-and-footers" href="#ms-Headers-and-Footers">4.6.6.1 Headers and footers</a></li> + <li><a id="toc-Tab-stops" href="#Tab-Stops-in-ms">4.6.6.2 Tab stops</a></li> + <li><a id="toc-Margins" href="#ms-Margins">4.6.6.3 Margins</a></li> + <li><a id="toc-Multiple-columns" href="#ms-Multiple-Columns">4.6.6.4 Multiple columns</a></li> + <li><a id="toc-Creating-a-table-of-contents" href="#ms-TOC">4.6.6.5 Creating a table of contents</a></li> + </ul></li> + <li><a id="toc-Differences-from-AT_0026T-ms-1" href="#Differences-from-AT_0026T-ms">4.6.7 Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Unix-Version-7-ms-macros-not-implemented-by-groff-ms" href="#Missing-Unix-Version-7-ms-Macros">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li> + </ul></li> + <li><a id="toc-Legacy-Features" href="#ms-Legacy-Features">4.6.8 Legacy Features</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-AT_0026T-accent-mark-strings" href="#AT_0026T-accent-mark-strings">AT&T accent mark strings</a></li> + <li><a id="toc-Berkeley-accent-mark-and-glyph-strings" href="#Berkeley-accent-mark-and-glyph-strings">Berkeley accent mark and glyph strings</a></li> + </ul></li> + <li><a id="toc-Naming-Conventions" href="#ms-Naming-Conventions">4.6.9 Naming Conventions</a></li> + </ul></li> + </ul></li> + <li><a id="toc-GNU-troff-Reference-1" href="#GNU-troff-Reference">5 GNU <code class="code">troff</code> Reference</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Text-1" href="#Text">5.1 Text</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Filling-1" href="#Filling">5.1.1 Filling</a></li> + <li><a id="toc-Sentences-1" href="#Sentences">5.1.2 Sentences</a></li> + <li><a id="toc-Hyphenation-1" href="#Hyphenation">5.1.3 Hyphenation</a></li> + <li><a id="toc-Breaking-1" href="#Breaking">5.1.4 Breaking</a></li> + <li><a id="toc-Adjustment-1" href="#Adjustment">5.1.5 Adjustment</a></li> + <li><a id="toc-Tabs-and-Leaders-1" href="#Tabs-and-Leaders">5.1.6 Tabs and Leaders</a></li> + <li><a id="toc-Requests-and-Macros-1" href="#Requests-and-Macros">5.1.7 Requests and Macros</a></li> + <li><a id="toc-Macro-Packages-3" href="#Macro-Packages">5.1.8 Macro Packages</a></li> + <li><a id="toc-Input-Encodings-1" href="#Input-Encodings">5.1.9 Input Encodings</a></li> + <li><a id="toc-Input-Conventions-1" href="#Input-Conventions">5.1.10 Input Conventions</a></li> + </ul></li> + <li><a id="toc-Page-Geometry-1" href="#Page-Geometry">5.2 Page Geometry</a></li> + <li><a id="toc-Measurements-1" href="#Measurements">5.3 Measurements</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Motion-Quanta-1" href="#Motion-Quanta">5.3.1 Motion Quanta</a></li> + <li><a id="toc-Default-Units-1" href="#Default-Units">5.3.2 Default Units</a></li> + </ul></li> + <li><a id="toc-Numeric-Expressions-1" href="#Numeric-Expressions">5.4 Numeric Expressions</a></li> + <li><a id="toc-Identifiers-1" href="#Identifiers">5.5 Identifiers</a></li> + <li><a id="toc-Formatter-Instructions-1" href="#Formatter-Instructions">5.6 Formatter Instructions</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Control-Characters-1" href="#Control-Characters">5.6.1 Control Characters</a></li> + <li><a id="toc-Invoking-Requests-1" href="#Invoking-Requests">5.6.2 Invoking Requests</a></li> + <li><a id="toc-Calling-Macros-1" href="#Calling-Macros">5.6.3 Calling Macros</a></li> + <li><a id="toc-Using-Escape-Sequences-1" href="#Using-Escape-Sequences">5.6.4 Using Escape Sequences</a></li> + <li><a id="toc-Delimiters-1" href="#Delimiters">5.6.5 Delimiters</a></li> + </ul></li> + <li><a id="toc-Comments-1" href="#Comments">5.7 Comments</a></li> + <li><a id="toc-Registers-1" href="#Registers">5.8 Registers</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Setting-Registers-1" href="#Setting-Registers">5.8.1 Setting Registers</a></li> + <li><a id="toc-Interpolating-Registers-1" href="#Interpolating-Registers">5.8.2 Interpolating Registers</a></li> + <li><a id="toc-Auto_002dincrement-1" href="#Auto_002dincrement">5.8.3 Auto-increment</a></li> + <li><a id="toc-Assigning-Register-Formats-1" href="#Assigning-Register-Formats">5.8.4 Assigning Register Formats</a></li> + <li><a id="toc-Built_002din-Registers-1" href="#Built_002din-Registers">5.8.5 Built-in Registers</a></li> + </ul></li> + <li><a id="toc-Manipulating-Filling-and-Adjustment-1" href="#Manipulating-Filling-and-Adjustment">5.9 Manipulating Filling and Adjustment</a></li> + <li><a id="toc-Manipulating-Hyphenation-1" href="#Manipulating-Hyphenation">5.10 Manipulating Hyphenation</a></li> + <li><a id="toc-Manipulating-Spacing-1" href="#Manipulating-Spacing">5.11 Manipulating Spacing</a></li> + <li><a id="toc-Tabs-and-Fields-1" href="#Tabs-and-Fields">5.12 Tabs and Fields</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Leaders-1" href="#Leaders">5.12.1 Leaders</a></li> + <li><a id="toc-Fields-1" href="#Fields">5.12.2 Fields</a></li> + </ul></li> + <li><a id="toc-Character-Translations-1" href="#Character-Translations">5.13 Character Translations</a></li> + <li><a id="toc-troff-and-nroff-Modes-1" href="#troff-and-nroff-Modes">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li> + <li><a id="toc-Line-Layout-1" href="#Line-Layout">5.15 Line Layout</a></li> + <li><a id="toc-Line-Continuation-1" href="#Line-Continuation">5.16 Line Continuation</a></li> + <li><a id="toc-Page-Layout-2" href="#Page-Layout">5.17 Page Layout</a></li> + <li><a id="toc-Page-Control-1" href="#Page-Control">5.18 Page Control</a></li> + <li><a id="toc-Using-Fonts-1" href="#Using-Fonts">5.19 Using Fonts</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Selecting-Fonts-1" href="#Selecting-Fonts">5.19.1 Selecting Fonts</a></li> + <li><a id="toc-Font-Families-1" href="#Font-Families">5.19.2 Font Families</a></li> + <li><a id="toc-Font-Positions-1" href="#Font-Positions">5.19.3 Font Positions</a></li> + <li><a id="toc-Using-Symbols-1" href="#Using-Symbols">5.19.4 Using Symbols</a></li> + <li><a id="toc-Character-Classes-1" href="#Character-Classes">5.19.5 Character Classes</a></li> + <li><a id="toc-Special-Fonts-1" href="#Special-Fonts">5.19.6 Special Fonts</a></li> + <li><a id="toc-Artificial-Fonts-1" href="#Artificial-Fonts">5.19.7 Artificial Fonts</a></li> + <li><a id="toc-Ligatures-and-Kerning-1" href="#Ligatures-and-Kerning">5.19.8 Ligatures and Kerning</a></li> + <li><a id="toc-Italic-Corrections-1" href="#Italic-Corrections">5.19.9 Italic Corrections</a></li> + <li><a id="toc-Dummy-Characters-1" href="#Dummy-Characters">5.19.10 Dummy Characters</a></li> + </ul></li> + <li><a id="toc-Manipulating-Type-Size-and-Vertical-Spacing-1" href="#Manipulating-Type-Size-and-Vertical-Spacing">5.20 Manipulating Type Size and Vertical Spacing</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Changing-the-Type-Size-1" href="#Changing-the-Type-Size">5.20.1 Changing the Type Size</a></li> + <li><a id="toc-Changing-the-Vertical-Spacing-1" href="#Changing-the-Vertical-Spacing">5.20.2 Changing the Vertical Spacing</a></li> + <li><a id="toc-Using-Fractional-Type-Sizes-1" href="#Using-Fractional-Type-Sizes">5.20.3 Using Fractional Type Sizes</a></li> + </ul></li> + <li><a id="toc-Colors-1" href="#Colors">5.21 Colors</a></li> + <li><a id="toc-Strings-1" href="#Strings">5.22 Strings</a></li> + <li><a id="toc-Conditionals-and-Loops-1" href="#Conditionals-and-Loops">5.23 Conditionals and Loops</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Operators-in-Conditionals-1" href="#Operators-in-Conditionals">5.23.1 Operators in Conditionals</a></li> + <li><a id="toc-if_002dthen-1" href="#if_002dthen">5.23.2 if-then</a></li> + <li><a id="toc-if_002delse-1" href="#if_002delse">5.23.3 if-else</a></li> + <li><a id="toc-Conditional-Blocks-1" href="#Conditional-Blocks">5.23.4 Conditional Blocks</a></li> + <li><a id="toc-while-1" href="#while">5.23.5 while</a></li> + </ul></li> + <li><a id="toc-Writing-Macros-1" href="#Writing-Macros">5.24 Writing Macros</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Parameters-1" href="#Parameters">5.24.1 Parameters</a></li> + <li><a id="toc-Copy-Mode-1" href="#Copy-Mode">5.24.2 Copy Mode</a></li> + </ul></li> + <li><a id="toc-Page-Motions-1" href="#Page-Motions">5.25 Page Motions</a></li> + <li><a id="toc-Drawing-Geometric-Objects-1" href="#Drawing-Geometric-Objects">5.26 Drawing Geometric Objects</a></li> + <li><a id="toc-Deferring-Output-1" href="#Deferring-Output">5.27 Deferring Output</a></li> + <li><a id="toc-Traps-1" href="#Traps">5.28 Traps</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Vertical-Position-Traps-1" href="#Vertical-Position-Traps">5.28.1 Vertical Position Traps</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Page-Location-Traps-1" href="#Page-Location-Traps">5.28.1.1 Page Location Traps</a></li> + <li><a id="toc-The-Implicit-Page-Trap-1" href="#The-Implicit-Page-Trap">5.28.1.2 The Implicit Page Trap</a></li> + <li><a id="toc-Diversion-Traps-1" href="#Diversion-Traps">5.28.1.3 Diversion Traps</a></li> + </ul></li> + <li><a id="toc-Input-Line-Traps-1" href="#Input-Line-Traps">5.28.2 Input Line Traps</a></li> + <li><a id="toc-Blank-Line-Traps-1" href="#Blank-Line-Traps">5.28.3 Blank Line Traps</a></li> + <li><a id="toc-Leading-Space-Traps-1" href="#Leading-Space-Traps">5.28.4 Leading Space Traps</a></li> + <li><a id="toc-End_002dof_002dinput-Traps-1" href="#End_002dof_002dinput-Traps">5.28.5 End-of-input Traps</a></li> + </ul></li> + <li><a id="toc-Diversions-1" href="#Diversions">5.29 Diversions</a></li> + <li><a id="toc-Punning-Names-1" href="#Punning-Names">5.30 Punning Names</a></li> + <li><a id="toc-Environments-1" href="#Environments">5.31 Environments</a></li> + <li><a id="toc-Suppressing-Output-1" href="#Suppressing-Output">5.32 Suppressing Output</a></li> + <li><a id="toc-I_002fO-1" href="#I_002fO">5.33 I/O</a></li> + <li><a id="toc-Postprocessor-Access-1" href="#Postprocessor-Access">5.34 Postprocessor Access</a></li> + <li><a id="toc-Miscellaneous-1" href="#Miscellaneous">5.35 Miscellaneous</a></li> + <li><a id="toc-gtroff-Internals" href="#Gtroff-Internals">5.36 <code class="code">gtroff</code> Internals</a></li> + <li><a id="toc-Debugging-1" href="#Debugging">5.37 Debugging</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Warnings-1" href="#Warnings">5.37.1 Warnings</a></li> + </ul></li> + <li><a id="toc-Implementation-Differences-1" href="#Implementation-Differences">5.38 Implementation Differences</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Safer-Mode-1" href="#Safer-Mode">5.38.1 Safer Mode</a></li> + <li><a id="toc-Compatibility-Mode-1" href="#Compatibility-Mode">5.38.2 Compatibility Mode</a></li> + <li><a id="toc-Other-Differences-1" href="#Other-Differences">5.38.3 Other Differences</a></li> + </ul></li> + </ul></li> + <li><a id="toc-File-Formats-1" href="#File-Formats">6 File Formats</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-gtroff-Output-1" href="#gtroff-Output">6.1 <code class="code">gtroff</code> Output</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Language-Concepts-1" href="#Language-Concepts">6.1.1 Language Concepts</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Separation-1" href="#Separation">6.1.1.1 Separation</a></li> + <li><a id="toc-Argument-Units-1" href="#Argument-Units">6.1.1.2 Argument Units</a></li> + <li><a id="toc-Document-Parts-1" href="#Document-Parts">6.1.1.3 Document Parts</a></li> + </ul></li> + <li><a id="toc-Command-Reference-1" href="#Command-Reference">6.1.2 Command Reference</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-Comment-Command-1" href="#Comment-Command">6.1.2.1 Comment Command</a></li> + <li><a id="toc-Simple-Commands-1" href="#Simple-Commands">6.1.2.2 Simple Commands</a></li> + <li><a id="toc-Graphics-Commands-1" href="#Graphics-Commands">6.1.2.3 Graphics Commands</a></li> + <li><a id="toc-Device-Control-Commands-1" href="#Device-Control-Commands">6.1.2.4 Device Control Commands</a></li> + <li><a id="toc-Obsolete-Command-1" href="#Obsolete-Command">6.1.2.5 Obsolete Command</a></li> + </ul></li> + <li><a id="toc-Intermediate-Output-Examples-1" href="#Intermediate-Output-Examples">6.1.3 Intermediate Output Examples</a></li> + <li><a id="toc-Output-Language-Compatibility-1" href="#Output-Language-Compatibility">6.1.4 Output Language Compatibility</a></li> + </ul></li> + <li><a id="toc-Device-and-Font-Description-Files-1" href="#Device-and-Font-Description-Files">6.2 Device and Font Description Files</a> + <ul class="toc-numbered-mark"> + <li><a id="toc-DESC-File-Format-1" href="#DESC-File-Format">6.2.1 <samp class="file">DESC</samp> File Format</a></li> + <li><a id="toc-Font-Description-File-Format-1" href="#Font-Description-File-Format">6.2.2 Font Description File Format</a></li> + </ul></li> + </ul></li> + <li><a id="toc-Copying-This-Manual-1" href="#Copying-This-Manual">Appendix A Copying This Manual</a></li> + <li><a id="toc-Request-Index-1" href="#Request-Index" rel="index">Appendix B Request Index</a></li> + <li><a id="toc-Escape-Sequence-Index-1" href="#Escape-Sequence-Index" rel="index">Appendix C Escape Sequence Index</a></li> + <li><a id="toc-Operator-Index-1" href="#Operator-Index" rel="index">Appendix D Operator Index</a></li> + <li><a id="toc-Register-Index-1" href="#Register-Index" rel="index">Appendix E Register Index</a></li> + <li><a id="toc-Macro-Index-1" href="#Macro-Index" rel="index">Appendix F Macro Index</a></li> + <li><a id="toc-String-Index-1" href="#String-Index" rel="index">Appendix G String Index</a></li> + <li><a id="toc-File-Keyword-Index-1" href="#File-Keyword-Index" rel="index">Appendix H File Keyword Index</a></li> + <li><a id="toc-Program-and-File-Index-1" href="#Program-and-File-Index" rel="index">Appendix I Program and File Index</a></li> + <li><a id="toc-Concept-Index-1" href="#Concept-Index" rel="index">Appendix J Concept Index</a></li> +</ul> +</div> +</div> +<hr> +<div class="chapter-level-extent" id="Introduction"> +<div class="nav-panel"> +<p> +Next: <a href="#Invoking-groff" accesskey="n" rel="next">Invoking <code class="code">groff</code></a>, Previous: <a href="#Top" accesskey="p" rel="prev">GNU <code class="code">troff</code></a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="Introduction-1">1 Introduction</h2> +<a class="index-entry-id" id="index-introduction"></a> + +<p>GNU <code class="code">roff</code> (or <code class="code">groff</code>) is a programming system for +typesetting documents. It is highly flexible and has been used +extensively for over thirty years. +</p> + + + +<ul class="mini-toc"> +<li><a href="#Background" accesskey="1">Background</a></li> +<li><a href="#What-Is-groff_003f" accesskey="2">What Is <code class="code">groff</code>?</a></li> +<li><a href="#groff-Capabilities" accesskey="3"><code class="code">groff</code> Capabilities</a></li> +<li><a href="#Macro-Package-Intro" accesskey="4">Macro Packages</a></li> +<li><a href="#Preprocessor-Intro" accesskey="5">Preprocessors</a></li> +<li><a href="#Output-Device-Intro" accesskey="6">Output Devices</a></li> +<li><a href="#Installation" accesskey="7">Installation</a></li> +<li><a href="#Conventions-Used-in-This-Manual" accesskey="8">Conventions Used in This Manual</a></li> +<li><a href="#Credits" accesskey="9">Credits</a></li> +</ul> +<hr> +<div class="section-level-extent" id="Background"> +<div class="nav-panel"> +<p> +Next: <a href="#What-Is-groff_003f" accesskey="n" rel="next">What Is <code class="code">groff</code>?</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Background-1">1.1 Background</h3> +<a class="index-entry-id" id="index-background"></a> + +<p>M. Douglas McIlroy, formerly of AT&T Bell Laboratories and present at +the creation of the Unix operating system, offers an authoritative +historical summary. +</p> +<blockquote class="quotation"> +<p>The prime reason for Unix was the desire of Ken [Thompson], Dennis +[Ritchie], and Joe Ossanna to have a pleasant environment for software +development. The fig leaf that got the nod from … +management was that an early use would be to develop a “stand-alone” +word-processing system for use in typing pools and secretarial offices. +Perhaps they had in mind “dedicated”, as distinct from +“stand-alone”; that’s what eventuated in various cases, most notably +in the legal/patent department and in the AT&T CEO’s office. +</p> +<p>Both those systems were targets of opportunity, not foreseen from the +start. When Unix was up and running on the PDP-11, Joe got wind of +the legal department having installed a commercial word processor. +He went to pitch Unix as an alternative and clinched a trial by +promising to make <code class="code">roff</code> able to number lines by tomorrow in order +to fulfill a patent-office requirement that the commercial system did +not support. +</p> +<p>Modems were installed so legal-department secretaries could try the +Research machine. They liked it and Joe’s superb customer service. +Soon the legal department got a system of their own. Joe went on to +create <code class="code">nroff</code> and <code class="code">troff</code>. Document preparation became a +widespread use of Unix, but no stand-alone word-processing system was +ever undertaken. +</p></blockquote> + +<p>A history relating <code class="code">groff</code> to its predecessors <code class="code">roff</code>, +<code class="code">nroff</code>, and <code class="code">troff</code> is available in the <cite class="cite">roff<span class="r">(7)</span></cite> +man page. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="What-Is-groff_003f"> +<div class="nav-panel"> +<p> +Next: <a href="#groff-Capabilities" accesskey="n" rel="next"><code class="code">groff</code> Capabilities</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="What-Is-groff_003f-1">1.2 What Is <code class="code">groff</code>?</h3> +<a class="index-entry-id" id="index-what-is-groff_003f"></a> +<a class="index-entry-id" id="index-groff_002d_002d_002dwhat-is-it_003f"></a> + +<p><code class="code">groff</code> (GNU <code class="code">roff</code>) is a typesetting system that reads plain +text input files that include formatting commands to produce output in +PostScript, PDF, HTML, DVI, or other formats, or for display to a +terminal. Formatting commands can be low-level typesetting primitives, +macros from a supplied package, or user-defined macros. All three +approaches can be combined. +</p> +<p>A reimplementation and extension of the typesetter from <abbr class="acronym">AT&T</abbr> +Unix, <code class="code">groff</code> is present on most <abbr class="acronym">POSIX</abbr> systems owing to +its long association with Unix manuals (including man pages). It and +its predecessor are notable for their production of several best-selling +software engineering texts. <code class="code">groff</code> is capable of producing +typographically sophisticated documents while consuming minimal system +resources. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="groff-Capabilities"> +<div class="nav-panel"> +<p> +Next: <a href="#Macro-Package-Intro" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#What-Is-groff_003f" accesskey="p" rel="prev">What Is <code class="code">groff</code>?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="groff-Capabilities-1">1.3 <code class="code">groff</code> Capabilities</h3> +<a class="index-entry-id" id="index-groff-capabilities"></a> +<a class="index-entry-id" id="index-capabilities-of-groff"></a> + +<p>GNU <code class="code">troff</code> is a typesetting document formatter; it provides a wide +range of low-level text and page operations within the framework of a +programming language. These operations compose to generate footnotes, +tables of contents, mathematical equations, diagrams, multi-column text, +and other elements of typeset works. Here is a survey of formatter +features; all are under precise user control. +</p> +<ul class="itemize mark-bullet"> +<li>text filling, breaking, alignment to the left or right margin; centering + +</li><li>adjustment of inter-word space size to justify text, and of +inter-sentence space size to suit local style conventions + +</li><li>automatic and manual determination of hyphenation break points + +</li><li>pagination + +</li><li>selection of any font available to the output device + +</li><li>adjustment of type size and vertical spacing (or “leading”) + +</li><li>configuration of line length and indentation amounts; columnation + +</li><li>drawing of geometric primitives (lines, arcs, polygons, circles, +…) + +</li><li>setup of stroke and fill colors (where supported by the output +device) + +</li><li>embedding of hyperlinks, images, document metadata, and other inclusions +(where supported by the output device) +</li></ul> + + + +<hr> +</div> +<div class="section-level-extent" id="Macro-Package-Intro"> +<div class="nav-panel"> +<p> +Next: <a href="#Preprocessor-Intro" accesskey="n" rel="next">Preprocessors</a>, Previous: <a href="#groff-Capabilities" accesskey="p" rel="prev"><code class="code">groff</code> Capabilities</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Macro-Packages-1">1.4 Macro Packages</h3> +<a class="index-entry-id" id="index-macro-package_002c-introduction"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-introduction"></a> + +<p>Elemental typesetting functions can be be challenging to use directly +with complex documents. A <em class="dfn">macro</em> facility specifies how certain +routine operations, such as starting paragraphs, or printing headers and +footers, should be performed in terms of those low-level instructions. +Macros can be specific to one document or collected together into a +<em class="dfn">macro package</em> for use by many. Several macro packages available; +the most widely used are provided with <code class="code">groff</code>. They are +<samp class="file">man</samp>, <samp class="file">mdoc</samp>, <samp class="file">me</samp>, <samp class="file">mm</samp>, <samp class="file">mom</samp>, and +<samp class="file">ms</samp>. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Preprocessor-Intro"> +<div class="nav-panel"> +<p> +Next: <a href="#Output-Device-Intro" accesskey="n" rel="next">Output Devices</a>, Previous: <a href="#Macro-Package-Intro" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Preprocessors">1.5 Preprocessors</h3> +<a class="index-entry-id" id="index-preprocessors"></a> + +<p>An alternative approach to complexity management, particularly when +constructing tables, setting mathematics, or drawing diagrams, lies in +preprocessing. A <em class="dfn">preprocessor</em> employs a domian-specific language +to ease the generation of tables, equations, and so forth in terms that +are convenient for human entry. Each preprocessor reads a document and +translates the parts of it that apply to it into GNU <code class="code">troff</code> input. +Command-line options to <code class="command">groff</code> tell it which preprocessors to +use. +</p> +<p><code class="code">groff</code> provides preprocessors for laying out tables +(<code class="command">gtbl</code>), typesetting equations (<code class="command">geqn</code>), drawing +diagrams (<code class="command">gpic</code> and <code class="command">ggrn</code>), inserting bibliographic +references (<code class="command">grefer</code>), and drawing chemical structures +(<code class="command">gchem</code>). An associated program that is useful when dealing +with preprocessors is <code class="command">gsoelim</code>.<a class="footnote" id="DOCF1" href="#FOOT1"><sup>1</sup></a> +</p> +<p><code class="code">groff</code> also supports <code class="code">grap</code>, a preprocessor for drawing +graphs. A free implementation of it can be obtained separately. +</p> +<p>Unique to <code class="code">groff</code> is the <code class="code">preconv</code> preprocessor that enables +<code class="code">groff</code> to handle documents in a variety of input encodings. +</p> +<p>Other preprocessors exist, but no free implementations +are known. An example is <code class="command">ideal</code>, which draws diagrams using a +mathematical constraint language. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Output-Device-Intro"> +<div class="nav-panel"> +<p> +Next: <a href="#Installation" accesskey="n" rel="next">Installation</a>, Previous: <a href="#Preprocessor-Intro" accesskey="p" rel="prev">Preprocessors</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Output-Devices">1.6 Output Devices</h3> +<a class="index-entry-id" id="index-postprocessors"></a> +<a class="index-entry-id" id="index-output-devices"></a> +<a class="index-entry-id" id="index-devices-for-output"></a> + +<p>GNU <code class="code">troff</code>’s output is in a device-independent page description +language, which is then read by an <em class="dfn">output driver</em> that translates +this language into a file format or byte stream that a piece of +(possibly emulated) hardware understands. <code class="code">groff</code> features output +drivers for PostScript devices, terminal emulators (and other simple +typewriter-like machines), X11 (for previewing), TeX DVI, HP +LaserJet 4/PCL5 and Canon LBP printers (which use <abbr class="acronym">CaPSL</abbr>), +<abbr class="acronym">HTML</abbr>, <abbr class="acronym">XHTML</abbr>, and <abbr class="acronym">PDF</abbr>. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Installation"> +<div class="nav-panel"> +<p> +Next: <a href="#Conventions-Used-in-This-Manual" accesskey="n" rel="next">Conventions Used in This Manual</a>, Previous: <a href="#Output-Device-Intro" accesskey="p" rel="prev">Output Devices</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Installation-1">1.7 Installation</h3> +<a class="index-entry-id" id="index-installation"></a> + +<p>Locate installation instructions in the files <samp class="file">INSTALL</samp>, +<samp class="file">INSTALL.extra</samp>, and <samp class="file">INSTALL.REPO</samp> in the <code class="code">groff</code> source +distribution. Being a GNU project, <code class="code">groff</code> supports the familiar +‘<samp class="samp">./configure && make</samp>’ command sequence. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Conventions-Used-in-This-Manual"> +<div class="nav-panel"> +<p> +Next: <a href="#Credits" accesskey="n" rel="next">Credits</a>, Previous: <a href="#Installation" accesskey="p" rel="prev">Installation</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Conventions-Used-in-This-Manual-1">1.8 Conventions Used in This Manual</h3> + +<p>We apply the term “groff” to the language documented here, the GNU +implementation of the overall system, the project that develops that +system, and the command of that name. In the first sense, <code class="code">groff</code> +is an extended dialect of the <code class="code">roff</code> language, for which many +similar implementations exist. +</p> +<p>The <code class="code">roff</code> language features several major categories for which +many items are predefined. Presentations of these items feature the +form in which the item is most commonly used on the left, and, aligned +to the right margin, the name of the category in brackets. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bexample_005d"><span class="category-def">Register: </span><span><strong class="def-name">\n[example]</strong><a class="copiable-link" href='#index-_005cn_005bexample_005d'> ¶</a></span></dt> +<dd><p>The register ‘<samp class="samp">example</samp>’ is one that that <code class="code">groff</code> <em class="emph">doesn’t</em> +predefine. You can create it yourself, though; see <a class="ref" href="#Setting-Registers">Setting Registers</a>. +</p></dd></dl> + +<p>To make this document useful as a reference and not merely amiable +bedtime reading, we tend to present these syntax items in exhaustive +detail when they arise. References to topics discussed later in the +text are frequent; skip material you don’t understand yet. +</p> +<p>We use Texinfo’s “result” (⇒) and error→ notations to +present output written to the standard output and standard error +streams, respectively. Diagnostic messages from the GNU <code class="code">troff</code> +formatter and other programs are examples of the latter, but the +formatter can also be directed to write user-specified messages to the +standard error stream. The notation then serves to identify the +output stream and does not necessarily mean that an error has +occurred.<a class="footnote" id="DOCF2" href="#FOOT2"><sup>2</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ echo "Twelve o'clock and" | groff -Tascii | sed '/^$/d' + ⇒ Twelve o'clock and +$ echo '.tm all is well.' | groff > /dev/null + error→ all is well. +</pre></div></div> + +<p>Sometimes we use ⇒ somewhat abstractly to represent formatted +text that you will need to use a PostScript or PDF viewer program (or a +printer) to observe. While arguably an abuse of notation, we think this +preferable to requiring the reader to understand the syntax of these +page description languages. +</p> +<p>We also present diagnostic messages in an abbreviated form, often +omitting the name of the program issuing them, the input file name, and +line number or other positional information when such data do not serve +to illuminate the topic under discussion. +</p> +<p>Most examples are of <code class="code">roff</code> language input that would be placed in +a text file. Occasionally, we start an example with a ‘<samp class="samp">$</samp>’ +character to indicate a shell prompt, as seen above. +</p> +<p>You are encouraged to try the examples yourself, and to alter them to +better learn <code class="code">groff</code>’s behavior. Our examples frequently need to +direct the formatter to set a line length (with ‘<samp class="samp">.ll</samp>’) that will +fit within the page margins of this manual. We mention this so that you +know why it is there before we discuss the <code class="code">ll</code> request +formally.<a class="footnote" id="DOCF3" href="#FOOT3"><sup>3</sup></a> +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Credits"> +<div class="nav-panel"> +<p> +Previous: <a href="#Conventions-Used-in-This-Manual" accesskey="p" rel="prev">Conventions Used in This Manual</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Credits-1">1.9 Credits</h3> +<a class="index-entry-id" id="index-credits"></a> + +<p>We adapted portions of this manual from existing documents. James +Clark’s man pages were an essential resource; we have updated them in +parallel with the development of this manual. We based the tutorial for +macro users on Eric Allman’s introduction to his <samp class="file">me</samp> macro package +(which we also provide, little altered from 4.4BSD). Larry Kollar +contributed much of the material on the <samp class="file">ms</samp> macro package. +</p> + + +<hr> +</div> +</div> +<div class="chapter-level-extent" id="Invoking-groff"> +<div class="nav-panel"> +<p> +Next: <a href="#Tutorial-for-Macro-Users" accesskey="n" rel="next">Tutorial for Macro Users</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="Invoking-groff-1">2 Invoking <code class="code">groff</code></h2> +<a class="index-entry-id" id="index-invoking-groff"></a> +<a class="index-entry-id" id="index-groff-invocation"></a> + +<p>This chapter focuses on how to invoke the <code class="code">groff</code> front end. This +front end takes care of the details of constructing the pipeline among +the preprocessors, <code class="code">gtroff</code> and the postprocessor. +</p> +<p>It has become a tradition that GNU programs get the prefix ‘<samp class="samp">g</samp>’ to +distinguish them from their original counterparts provided by the host +(see <a class="pxref" href="#Environment">Environment</a>). Thus, for example, <code class="code">geqn</code> is GNU +<code class="code">eqn</code>. On operating systems like GNU/Linux or the Hurd, which +don’t contain proprietary versions of <code class="code">troff</code>, and on +MS-DOS/MS-Windows, where <code class="code">troff</code> and associated programs are not +available at all, this prefix is omitted since GNU <code class="code">troff</code> is the +only incarnation of <code class="code">troff</code> used. Exception: ‘<samp class="samp">groff</samp>’ is never +replaced by ‘<samp class="samp">roff</samp>’. +</p> +<p>In this document, we consequently say ‘<samp class="samp">gtroff</samp>’ when talking about +the GNU <code class="code">troff</code> program. All other implementations of <code class="code">troff</code> are called <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>, which is the common origin of almost all <code class="code">troff</code> +implementations<a class="footnote" id="DOCF4" href="#FOOT4"><sup>4</sup></a> (with more or less compatible changes). Similarly, we say +‘<samp class="samp">gpic</samp>’, ‘<samp class="samp">geqn</samp>’, and so on. +</p> + + + +<ul class="mini-toc"> +<li><a href="#Groff-Options" accesskey="1">Options</a></li> +<li><a href="#Environment" accesskey="2">Environment</a></li> +<li><a href="#Macro-Directories" accesskey="3">Macro Directories</a></li> +<li><a href="#Font-Directories" accesskey="4">Font Directories</a></li> +<li><a href="#Paper-Format" accesskey="5">Paper Format</a></li> +<li><a href="#Invocation-Examples" accesskey="6">Invocation Examples</a></li> +</ul> +<hr> +<div class="section-level-extent" id="Groff-Options"> +<div class="nav-panel"> +<p> +Next: <a href="#Environment" accesskey="n" rel="next">Environment</a>, Previous: <a href="#Invoking-groff" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Options">2.1 Options</h3> +<a class="index-entry-id" id="index-options"></a> + +<a class="index-entry-id" id="index-groff"></a> +<a class="index-entry-id" id="index-gtroff"></a> +<a class="index-entry-id" id="index-gpic"></a> +<a class="index-entry-id" id="index-geqn"></a> +<a class="index-entry-id" id="index-ggrn"></a> +<a class="index-entry-id" id="index-grap"></a> +<a class="index-entry-id" id="index-gtbl"></a> +<a class="index-entry-id" id="index-gchem"></a> +<a class="index-entry-id" id="index-grefer"></a> +<a class="index-entry-id" id="index-gsoelim"></a> +<a class="index-entry-id" id="index-preconv"></a> +<p><code class="code">groff</code> normally runs the <code class="code">gtroff</code> program and a +postprocessor appropriate for the selected device. The default device +is ‘<samp class="samp">ps</samp>’ (but it can be changed when <code class="code">groff</code> is configured and +built). It can optionally preprocess with any of <code class="code">gpic</code>, +<code class="code">geqn</code>, <code class="code">gtbl</code>, <code class="code">ggrn</code>, <code class="code">grap</code>, <code class="code">gchem</code>, +<code class="code">grefer</code>, <code class="code">gsoelim</code>, or <code class="code">preconv</code>. +</p> +<p>This section documents only options to the <code class="code">groff</code> front end. Many +of the arguments to <code class="code">groff</code> are passed on to <code class="code">gtroff</code>; +therefore, those are also included. Arguments to preprocessors and +output drivers can be found in the man pages <cite class="cite">gpic<span class="r">(1)</span></cite>, +<cite class="cite">geqn<span class="r">(1)</span></cite>, <cite class="cite">gtbl<span class="r">(1)</span></cite>, <cite class="cite">ggrn<span class="r">(1)</span></cite>, +<cite class="cite">grefer<span class="r">(1)</span></cite>, <cite class="cite">gchem<span class="r">(1)</span></cite>, <cite class="cite">gsoelim<span class="r">(1)</span></cite>, +<cite class="cite">preconv<span class="r">(1)</span></cite>, <cite class="cite">grotty<span class="r">(1)</span></cite>, <cite class="cite">grops<span class="r">(1)</span></cite>, +<cite class="cite">gropdf<span class="r">(1)</span></cite>, <cite class="cite">grohtml<span class="r">(1)</span></cite>, <cite class="cite">grodvi<span class="r">(1)</span></cite>, +<cite class="cite">grolj4<span class="r">(1)</span></cite>, <cite class="cite">grolbp<span class="r">(1)</span></cite>, and <cite class="cite">gxditview<span class="r">(1)</span></cite>. +</p> +<p>The command-line format for <code class="code">groff</code> is: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d<var class="var">cs</var> ] [ -D<var class="var">arg</var> ] + [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ] [ -I<var class="var">dir</var> ] [ -K<var class="var">arg</var> ] + [ -L<var class="var">arg</var> ] [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ] + [ -o<var class="var">list</var> ] [ -P<var class="var">arg</var> ] [ -r<var class="var">cn</var> ] [ -T<var class="var">dev</var> ] + [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ] [ <var class="var">files</var>… ] +</pre></div></div> + +<p>The command-line format for <code class="code">gtroff</code> is as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">gtroff [ -abcivzCERU ] [ -d<var class="var">cs</var> ] [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ] + [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ] [ -o<var class="var">list</var> ] + [ -r<var class="var">cn</var> ] [ -T<var class="var">name</var> ] [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ] + [ <var class="var">files</var>… ] +</pre></div></div> + +<p>Obviously, many of the options to <code class="code">groff</code> are actually passed on to +<code class="code">gtroff</code>. +</p> +<p>Options without an argument can be grouped behind a +single <samp class="option">-</samp>. A filename of <samp class="file">-</samp> denotes the +standard input. Whitespace is permitted between an option and its +argument. +</p> +<p>The <code class="code">grog</code> command can be used to guess the correct <code class="code">groff</code> +command to format a file. See its man page <cite class="cite">grog<span class="r">(1)</span></cite>; type +‘<samp class="samp">man grog</samp>’ at the command line to view it. +</p> +<p><code class="command">groff</code>’s command-line options are as follows. +</p> +<a class="index-entry-id" id="index-command_002dline-options"></a> +<dl class="table"> +<dt id='index-plain-text-approximation-output-register-_0028_002eA_0029'><span>‘<samp class="samp">-a</samp>’<a class="copiable-link" href='#index-plain-text-approximation-output-register-_0028_002eA_0029'> ¶</a></span></dt> +<dd><p>Generate a plain text approximation of the typeset output. The +read-only register <code class="code">.A</code> is set to 1. See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>. This option produces a sort of abstract preview of the +formatted output. +</p> +<ul class="itemize mark-bullet"> +<li>Page breaks are marked by a phrase in angle brackets; for example, +‘<samp class="samp"><beginning of page></samp>’. + +</li><li>Lines are broken where they would be in the formatted output. + +</li><li>A horizontal motion of any size is represented as one space. Adjacent +horizontal motions are not combined. Inter-sentence space nodes (those +arising from the second argument to the <code class="code">ss</code> request) are not +represented. + +</li><li>Vertical motions are not represented. + +</li><li>Special characters are rendered in angle brackets; for example, the +default soft hyphen character appears as ‘<samp class="samp"><hy></samp>’. +</li></ul> + +<p>The above description should not be considered a specification; the +details of <samp class="option">-a</samp> output are subject to change. +</p> +</dd> +<dt>‘<samp class="samp">-b</samp>’</dt> +<dd><p>Write a backtrace reporting the state of <code class="command">gtroff</code>’s input parser +to the standard error stream with each diagnostic message. The line +numbers given in the backtrace might not always be correct, because +<code class="command">gtroff</code>’s idea of line numbers can be confused by requests that +append to +macros. +</p> +</dd> +<dt>‘<samp class="samp">-c</samp>’</dt> +<dd><p>Start with color output disabled. +</p> +</dd> +<dt>‘<samp class="samp">-C</samp>’</dt> +<dd><p>Enable AT&T <code class="command">troff</code> compatibility mode; implies <samp class="option">-c</samp>. +See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>, for the list of incompatibilities +between <code class="command">groff</code> and <abbr class="acronym">AT&T</abbr> <code class="command">troff</code>. +</p> +</dd> +<dt>‘<samp class="samp">-d<var class="var">c</var><var class="var">text</var></samp>’</dt> +<dt>‘<samp class="samp">-d<var class="var">string</var>=<var class="var">text</var></samp>’</dt> +<dd><p>Define <code class="code">roff</code> string <var class="var">c</var> or <var class="var">string</var> as <var class="var">t</var> or +<var class="var">text</var>. <var class="var">c</var> must be one character; <var class="var">string</var> can be +of arbitrary length. Such string assignments happen before any macro +file is loaded, including the startup file. Due to <code class="code">getopt_long</code> +limitations, <var class="var">c</var> cannot be, and <var class="var">string</var> cannot contain, an +equals sign, even though that is a valid character in a <code class="code">roff</code> +identifier. +</p> +</dd> +<dt>‘<samp class="samp">-D<var class="var">enc</var></samp>’</dt> +<dd><p>Set fallback input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>; +implies <samp class="option">-k</samp>. +</p> +</dd> +<dt>‘<samp class="samp">-e</samp>’</dt> +<dd><p>Run <code class="command">geqn</code> preprocessor. +</p> +</dd> +<dt>‘<samp class="samp">-E</samp>’</dt> +<dd><p>Inhibit <code class="command">gtroff</code> error messages. This option does <em class="emph">not</em> +suppress messages sent to the standard error stream by documents or +macro packages using <code class="code">tm</code> or related requests. +</p> +</dd> +<dt>‘<samp class="samp">-f<var class="var">fam</var></samp>’</dt> +<dd><p>Use <var class="var">fam</var> as the default font family. See <a class="xref" href="#Font-Families">Font Families</a>. +</p> +</dd> +<dt>‘<samp class="samp">-F<var class="var">dir</var></samp>’</dt> +<dd><p>Search in directory <samp class="file"><var class="var">dir</var></samp> for the selected output device’s +directory of device and font description files. See the description of +<code class="env">GROFF_FONT_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the default search +locations and ordering. +</p> +</dd> +<dt>‘<samp class="samp">-g</samp>’</dt> +<dd><p>Run <code class="command">ggrn</code> preprocessor. +</p> +</dd> +<dt>‘<samp class="samp">-G</samp>’</dt> +<dd><p>Run <code class="command">grap</code> preprocessor; implies <samp class="option">-p</samp>. +</p> +</dd> +<dt>‘<samp class="samp">-h</samp>’</dt> +<dd><p>Display a usage message and exit. +</p> +</dd> +<dt>‘<samp class="samp">-i</samp>’</dt> +<dd><p>Read the standard input after all the named input files have been +processed. +</p> +</dd> +<dt>‘<samp class="samp">-I<var class="var">dir</var></samp>’</dt> +<dd><p>Search the directory <var class="var">dir</var> for files named in several contexts; +implies <samp class="option">-g</samp> and <samp class="option">-s</samp>. +</p> +<ul class="itemize mark-bullet"> +<li><code class="command">gsoelim</code> replaces <code class="code">so</code> requests with the contents of their +file name arguments. + +</li><li><code class="command">gtroff</code> searches for files named as operands in its command +line and as arguments to <code class="code">psbb</code>, <code class="code">so</code>, and <code class="code">soquiet</code> +requests. + +</li><li>Output drivers may search for files; for instance, <code class="command">grops</code> looks +for files named in ‘<samp class="samp">\X'ps: import <span class="r">…</span>'</samp>’, ‘<samp class="samp">\X'ps: file +<span class="r">…</span>'</samp>’, and ‘<samp class="samp">\X'pdf: pdfpic <span class="r">…</span>'</samp>’ device control +escape sequences. +</li></ul> + +<p>This option may be specified more than once; the directories are +searched in the order specified. If you want to search the current +directory before others, add ‘<samp class="samp">-I .</samp>’ at the desired place. The +current working directory is otherwise searched last. <samp class="option">-I</samp> works +similarly to, and is named for, the “include” option of Unix C +compilers. +</p> +<p><samp class="option">-I</samp> options are passed to <code class="command">gsoelim</code>, <code class="command">gtroff</code>, +and output drivers; with the flag letter changed to <samp class="option">-M</samp>, they +are also passed to <code class="command">ggrn</code>. +</p> +</dd> +<dt>‘<samp class="samp">-j</samp>’</dt> +<dd><p>Run <code class="command">gchem</code> preprocessor. Implies <samp class="option">-p</samp>. +</p> +</dd> +<dt>‘<samp class="samp">-k</samp>’</dt> +<dd><p>Run <code class="command">preconv</code> preprocessor. Refer to its man page for its +behavior if neither of <code class="command">groff</code>’s <samp class="option">-K</samp> or <samp class="option">-D</samp> +options is also specified. +</p> +</dd> +<dt>‘<samp class="samp">-K<var class="var">enc</var></samp>’</dt> +<dd><p>Set input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>; implies +<samp class="option">-k</samp>. +</p> +</dd> +<dt>‘<samp class="samp">-l</samp>’</dt> +<dd><p>Send the output to a spooler for printing. The <code class="code">print</code> directive +in the device description file specifies the default command to be used; +see <a class="ref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>. +See options <samp class="option">-L</samp> and <samp class="option">-X</samp>. +</p> +</dd> +<dt>‘<samp class="samp">-L<var class="var">arg</var></samp>’</dt> +<dd><p>Pass <var class="var">arg</var> to the print spooler program. If multiple <var class="var">arg</var>s are +required, pass each with a separate <samp class="option">-L</samp> option. <code class="command">groff</code> +does not prefix an option dash to <var class="var">arg</var> before passing it to the +spooler program. +</p> +</dd> +<dt>‘<samp class="samp">-m<var class="var">name</var></samp>’</dt> +<dd><p>Process the file <samp class="file"><var class="var">name</var>.tmac</samp> prior to any input files. +If not found, <samp class="file">tmac.<var class="var">name</var></samp> is attempted. <var class="var">name</var> +(in both arrangements) is presumed to be a macro file; see the +description of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the +default search locations and ordering. This option and its argument are +also passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>. +</p> +</dd> +<dt>‘<samp class="samp">-M<var class="var">dir</var></samp>’</dt> +<dd><p>Search directory <samp class="file"><var class="var">dir</var></samp> for macro files; see the description +of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the default +search locations and ordering. This option and its argument are also +passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>. +</p> +</dd> +<dt>‘<samp class="samp">-n<var class="var">num</var></samp>’</dt> +<dd><p>Number the first page <var class="var">num</var>. +</p> +</dd> +<dt>‘<samp class="samp">-N</samp>’</dt> +<dd><p>Prohibit newlines between <code class="code">eqn</code> delimiters: pass <samp class="option">-N</samp> to +<code class="command">geqn</code>. +</p> +</dd> +<dt id='index-print-current-page-register-_0028_002eP_0029'><span>‘<samp class="samp">-o<var class="var">list</var></samp>’<a class="copiable-link" href='#index-print-current-page-register-_0028_002eP_0029'> ¶</a></span></dt> +<dd><p>Output only pages in <var class="var">list</var>, which is a comma-separated list of page +ranges; ‘<samp class="samp"><var class="var">n</var></samp>’ means page <var class="var">n</var>, ‘<samp class="samp"><var class="var">m</var>-<var class="var">n</var></samp>’ +means every page between <var class="var">m</var> and <var class="var">n</var>, ‘<samp class="samp">-<var class="var">n</var></samp>’ means +every page up to <var class="var">n</var>, ‘<samp class="samp"><var class="var">n</var>-</samp>’ means every page from +<var class="var">n</var> on. <code class="command">gtroff</code> stops processing and exits after +formatting the last page enumerated in <var class="var">list</var>. +</p> +</dd> +<dt>‘<samp class="samp">-p</samp>’</dt> +<dd><p>Run <code class="command">gpic</code> preprocessor. +</p> +</dd> +<dt>‘<samp class="samp">-P<var class="var">arg</var></samp>’</dt> +<dd><p>Pass <var class="var">arg</var> to the postprocessor. If multiple <var class="var">arg</var>s are +required, pass each with a separate <samp class="option">-P</samp> option. <code class="command">groff</code> +does not prefix an option dash to <var class="var">arg</var> before passing it to the +postprocessor. +</p> +</dd> +<dt>‘<samp class="samp">-r<var class="var">c</var><var class="var">numeric-expression</var></samp>’</dt> +<dt>‘<samp class="samp">-r<var class="var">register</var>=<var class="var">expr</var></samp>’</dt> +<dd><p>Set <code class="code">roff</code> register <var class="var">c</var> or <var class="var">register</var> to the value +<var class="var">numeric-expression</var> (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>). +<var class="var">c</var> must be one character; <var class="var">register</var> can be of arbitrary +length. Such register assignments happen before any macro file is +loaded, including the startup file. Due to <code class="code">getopt_long</code> +limitations, <var class="var">c</var> cannot be, and <var class="var">register</var> cannot contain, +an equals sign, even though that is a valid character in a <code class="code">roff</code> +identifier. +</p> +</dd> +<dt>‘<samp class="samp">-R</samp>’</dt> +<dd><p>Run <code class="command">grefer</code> preprocessor. No mechanism is provided for passing +arguments to <code class="command">grefer</code> because most <code class="command">grefer</code> options have +equivalent language elements that can be specified within the document. +</p> +<a class="index-entry-id" id="index-troffrc"></a> +<a class="index-entry-id" id="index-troffrc_002dend"></a> +<p><code class="command">gtroff</code> also accepts a <samp class="option">-R</samp> option, which is not +accessible via <code class="command">groff</code>. This option prevents the loading of the +<samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp> files. +</p> +</dd> +<dt>‘<samp class="samp">-s</samp>’</dt> +<dd><p>Run <code class="command">gsoelim</code> preprocessor. +</p> +</dd> +<dt id='index-open-request_002c-and-safer-mode'><span>‘<samp class="samp">-S</samp>’<a class="copiable-link" href='#index-open-request_002c-and-safer-mode'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-opena-request_002c-and-safer-mode"></a> +<a class="index-entry-id" id="index-pso-request_002c-and-safer-mode"></a> +<a class="index-entry-id" id="index-sy-request_002c-and-safer-mode"></a> +<a class="index-entry-id" id="index-pi-request_002c-and-safer-mode"></a> +<a class="index-entry-id" id="index-safer-mode"></a> +<a class="index-entry-id" id="index-mode_002c-safer"></a> +<p>Operate in “safer” mode; see <samp class="option">-U</samp> below for its opposite. For +security reasons, safer mode is enabled by default. +</p> +</dd> +<dt>‘<samp class="samp">-t</samp>’</dt> +<dd><p>Run <code class="command">gtbl</code> preprocessor. +</p> +</dd> +<dt>‘<samp class="samp">-T<var class="var">dev</var></samp>’</dt> +<dd><p>Direct <code class="command">gtroff</code> to format the input for the output device +<var class="var">dev</var>. <code class="command">groff</code> then calls an output driver to convert +<code class="command">gtroff</code>’s output to a form appropriate for <var class="var">dev</var>. The +following output devices are available. +</p> +<dl class="table"> +<dt><code class="code">ps</code></dt> +<dd><p>For PostScript printers and previewers. +</p> +</dd> +<dt><code class="code">pdf</code></dt> +<dd><p>For <abbr class="acronym">PDF</abbr> viewers or printers. +</p> +</dd> +<dt><code class="code">dvi</code></dt> +<dd><p>For TeX DVI format. +</p> +</dd> +<dt><code class="code">X75</code></dt> +<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer. +</p> +</dd> +<dt><code class="code">X75-12</code></dt> +<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the +document. +</p> +</dd> +<dt><code class="code">X100</code></dt> +<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer. +</p> +</dd> +<dt><code class="code">X100-12</code></dt> +<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the +document. +</p> +</dd> +<dt id='index-encoding_002c-output_002c-ASCII'><span><code class="code">ascii</code><a class="copiable-link" href='#index-encoding_002c-output_002c-ASCII'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-encoding_002c-output_002c-ISO-646"></a> +<a class="index-entry-id" id="index-ASCII-output-encoding"></a> +<a class="index-entry-id" id="index-ISO-646-output-encoding"></a> +<a class="index-entry-id" id="index-output-encoding_002c-ASCII"></a> +<a class="index-entry-id" id="index-output-encoding_002c-ISO-646"></a> +<p>For typewriter-like devices using the (7-bit) <abbr class="acronym">ASCII</abbr> +(ISO 646) character set. +</p> +</dd> +<dt id='index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"></a> +<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding"></a> +<a class="index-entry-id" id="index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a> +<p>For typewriter-like devices that support the <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> +(ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) character set. +</p> +</dd> +<dt id='index-encoding_002c-output_002c-UTF_002d8'><span><code class="code">utf8</code><a class="copiable-link" href='#index-encoding_002c-output_002c-UTF_002d8'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-UTF_002d8-output-encoding"></a> +<a class="index-entry-id" id="index-output-encoding_002c-UTF_002d8"></a> +<p>For typewriter-like devices that use the Unicode (ISO 10646) +character set with <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> encoding. +</p> +</dd> +<dt id='index-encoding_002c-output_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-output_002c-EBCDIC'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EBCDIC-output-encoding"></a> +<a class="index-entry-id" id="index-output-encoding_002c-EBCDIC"></a> +<a class="index-entry-id" id="index-encoding_002c-output_002c-code-page-1047"></a> +<a class="index-entry-id" id="index-code-page-1047-output-encoding"></a> +<a class="index-entry-id" id="index-output-encoding_002c-code-page-1047"></a> +<a class="index-entry-id" id="index-IBM-code-page-1047-output-encoding"></a> +<a class="index-entry-id" id="index-CCSID-1047-output-encoding-_0028EBCDIC_0029"></a> +<p>For typewriter-like devices that use the <abbr class="acronym">EBCDIC</abbr> encoding IBM +code page 1047. +</p> +</dd> +<dt><code class="code">lj4</code></dt> +<dd><p>For HP LaserJet4-compatible (or other PCL5-compatible) printers. +</p> +</dd> +<dt><code class="code">lbp</code></dt> +<dd><p>For Canon <abbr class="acronym">CaPSL</abbr> printers (<span class="w-nolinebreak-text">LBP-4</span><!-- /@w --> and <span class="w-nolinebreak-text">LBP-8</span><!-- /@w --> series laser +printers). +</p> +<a class="index-entry-id" id="index-pre_002dgrohtml"></a> +<a class="index-entry-id" id="index-post_002dgrohtml"></a> +<a class="index-entry-id" id="index-grohtml_002c-the-program"></a> +</dd> +<dt><code class="code">html</code></dt> +<dt><code class="code">xhtml</code></dt> +<dd><p>To produce <abbr class="acronym">HTML</abbr> and <abbr class="acronym">XHTML</abbr> output, respectively. +This driver consists of two parts, a preprocessor +(<code class="command">pre-grohtml</code>) and a postprocessor (<code class="command">post-grohtml</code>). +</p></dd> +</dl> + +<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029"></a> +<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029"></a> +<p>The predefined GNU <code class="code">troff</code> string <code class="code">.T</code> contains the name of +the output device; the read-only register <code class="code">.T</code> is set to 1 if +this option is used (which is always true if <code class="command">groff</code> is used to +call GNU <code class="command">troff</code>). See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>. +</p> +<p>The postprocessor to be used for a device is specified by the +<code class="code">postpro</code> command in the device description file. (See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.) This can be overridden with the +<samp class="option">-X</samp> option. +</p> +</dd> +<dt id='index-mode_002c-unsafe'><span>‘<samp class="samp">-U</samp>’<a class="copiable-link" href='#index-mode_002c-unsafe'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-unsafe-mode"></a> +<p>Operate in <em class="dfn">unsafe mode</em>, which enables the <code class="code">open</code>, +<code class="code">opena</code>, <code class="code">pi</code>, <code class="code">pso</code>, and <code class="code">sy</code> requests. These +requests are disabled by default because they allow an untrusted input +document to write to arbitrary file names and run arbitrary commands. +This option also adds the current directory to the macro package search +path; see the <samp class="option">-m</samp> option above. <samp class="option">-U</samp> is passed to +<code class="command">gpic</code> and <code class="command">gtroff</code>. +</p> +</dd> +<dt>‘<samp class="samp">-v</samp>’</dt> +<dd><p>Write version information for <code class="command">groff</code> and all programs run by it +to the standard output stream; that is, the given command line is +processed in the usual way, passing <samp class="option">-v</samp> to the formatter and any +pre- or postprocessors invoked. +</p> +</dd> +<dt>‘<samp class="samp">-V</samp>’</dt> +<dd><p>Output the pipeline that would be run by <code class="command">groff</code> +(as a wrapper program) to the standard output stream, but do not execute +it. If given more than once, the pipeline is both written to the +standard error stream and run. +</p> +</dd> +<dt>‘<samp class="samp">-w<var class="var">category</var></samp>’</dt> +<dd><p>Enable warnings in <var class="var">category</var>. Categories are listed in +<a class="ref" href="#Warnings">Warnings</a>. +</p> +</dd> +<dt>‘<samp class="samp">-W<var class="var">category</var></samp>’</dt> +<dd><p>Inhibit warnings in <var class="var">category</var>. Categories are listed in +<a class="ref" href="#Warnings">Warnings</a>. +</p> +</dd> +<dt>‘<samp class="samp">-X</samp>’</dt> +<dd><p>Use <code class="command">gxditview</code> instead of the usual postprocessor to (pre)view +a document on an X11 display. Combining this option with +<samp class="option">-Tps</samp> uses the font metrics of the PostScript device, whereas +the <samp class="option">-TX75</samp> and <samp class="option">-TX100</samp> options use the metrics of X11 +fonts. +</p> +</dd> +<dt>‘<samp class="samp">-z</samp>’</dt> +<dd><p>Suppress formatted output from <code class="command">gtroff</code>. +</p> +</dd> +<dt>‘<samp class="samp">-Z</samp>’</dt> +<dd><p>Disable postprocessing. <code class="command">gtroff</code> output will appear on the +standard output stream (unless suppressed with <samp class="option">-z</samp>; see +<a class="ref" href="#gtroff-Output"><code class="code">gtroff</code> Output</a> for a description of this format. +</p></dd> +</dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Environment"> +<div class="nav-panel"> +<p> +Next: <a href="#Macro-Directories" accesskey="n" rel="next">Macro Directories</a>, Previous: <a href="#Groff-Options" accesskey="p" rel="prev">Options</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Environment-1">2.2 Environment</h3> +<a class="index-entry-id" id="index-environment-variables"></a> +<a class="index-entry-id" id="index-variables-in-environment"></a> + +<p>There are also several environment variables (of the operating system, +not within <code class="code">gtroff</code>) that can modify the behavior of <code class="code">groff</code>. +</p> +<dl class="table"> +<dt id='index-GROFF_005fBIN_005fPATH_002c-environment-variable'><span><code class="code">GROFF_BIN_PATH</code><a class="copiable-link" href='#index-GROFF_005fBIN_005fPATH_002c-environment-variable'> ¶</a></span></dt> +<dd><p>This search path, followed by <code class="code">PATH</code>, is used for commands executed +by <code class="code">groff</code>. +</p> +</dd> +<dt id='index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'><span><code class="code">GROFF_COMMAND_PREFIX</code><a class="copiable-link" href='#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-command-prefix"></a> +<a class="index-entry-id" id="index-prefix_002c-for-commands"></a> +<p>If this is set to <var class="var">X</var>, then <code class="command">groff</code> runs +<code class="command"><var class="var">X</var>troff</code> instead of <code class="command">gtroff</code>. This also applies +to <code class="command">tbl</code>, <code class="command">pic</code>, <code class="command">eqn</code>, <code class="command">grn</code>, +<code class="command">chem</code>, <code class="command">refer</code>, and <code class="command">soelim</code>. It does not +apply to <code class="command">grops</code>, <code class="command">grodvi</code>, <code class="command">grotty</code>, +<code class="command">pre-grohtml</code>, <code class="command">post-grohtml</code>, <code class="command">preconv</code>, +<code class="command">grolj4</code>, <code class="command">gropdf</code>, and <code class="command">gxditview</code>. +</p> +<p>The default command prefix is determined during the installation +process. If a non-GNU <code class="code">troff</code> system is found, prefix ‘<samp class="samp">g</samp>’ is +used, none otherwise. +</p> +</dd> +<dt id='index-GROFF_005fENCODING_002c-environment-variable'><span><code class="code">GROFF_ENCODING</code><a class="copiable-link" href='#index-GROFF_005fENCODING_002c-environment-variable'> ¶</a></span></dt> +<dd><p>The value of this variable is passed to the <code class="code">preconv</code> +preprocessor’s <samp class="option">-e</samp> option to select the character encoding of +input files. This variable’s existence implies the <code class="code">groff</code> option +<samp class="option">-k</samp>. If set but empty, <code class="code">groff</code> calls <code class="code">preconv</code> +without an <samp class="option">-e</samp> option. <code class="code">groff</code>’s <samp class="option">-K</samp> option +overrides <code class="env">GROFF_ENCODING</code>. See the <cite class="cite">preconv<span class="r">(7)</span></cite> man page; +type ‘<samp class="samp">man preconv</samp>’ at the command line to view it. +</p> +</dd> +<dt id='index-GROFF_005fFONT_005fPATH_002c-environment-variable'><span><code class="code">GROFF_FONT_PATH</code><a class="copiable-link" href='#index-GROFF_005fFONT_005fPATH_002c-environment-variable'> ¶</a></span></dt> +<dd><p>A list of directories in which to seek the selected output device’s +directory of device and font description files. GNU <code class="code">troff</code> +will search directories given as arguments to any specified <samp class="option">-F</samp> +options before these, and a built-in list of directories after them. +See <a class="xref" href="#Font-Directories">Font Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or +<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages. +</p> +</dd> +<dt id='index-GROFF_005fTMAC_005fPATH_002c-environment-variable'><span><code class="code">GROFF_TMAC_PATH</code><a class="copiable-link" href='#index-GROFF_005fTMAC_005fPATH_002c-environment-variable'> ¶</a></span></dt> +<dd><p>A list of directories in which to seek macro files. GNU <code class="code">troff</code> +will search directories given as arguments to any specified <samp class="option">-M</samp> +options before these, and a built-in list of directories after them. +See <a class="xref" href="#Macro-Directories">Macro Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or +<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages. +</p> +</dd> +<dt id='index-GROFF_005fTMPDIR_002c-environment-variable'><span><code class="code">GROFF_TMPDIR</code><a class="copiable-link" href='#index-GROFF_005fTMPDIR_002c-environment-variable'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TMPDIR_002c-environment-variable"></a> +<p>The directory in which <code class="code">groff</code> creates temporary files. If this is +not set and <code class="env">TMPDIR</code> is set, temporary files are created in that +directory. Otherwise temporary files are created in a system-dependent +default directory (on Unix and GNU/Linux systems, this is usually +<samp class="file">/tmp</samp>). <code class="code">grops</code>, <code class="code">grefer</code>, <code class="code">pre-grohtml</code>, and +<code class="code">post-grohtml</code> can create temporary files in this directory. +</p> +</dd> +<dt id='index-GROFF_005fTYPESETTER_002c-environment-variable'><span><code class="code">GROFF_TYPESETTER</code><a class="copiable-link" href='#index-GROFF_005fTYPESETTER_002c-environment-variable'> ¶</a></span></dt> +<dd><p>Sets the default output device. If empty or not set, a build-time +default (often <code class="code">ps</code>) is used. The <samp class="option">-T<var class="var">dev</var></samp> option +overrides <code class="env">GROFF_TYPESETTER</code>. +</p> +</dd> +<dt id='index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'><span><code class="code">SOURCE_DATE_EPOCH</code><a class="copiable-link" href='#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'> ¶</a></span></dt> +<dd><p>A timestamp (expressed as seconds since the Unix epoch) to use as the +output creation timestamp in place of the current time. The time is +converted to human-readable form using <cite class="cite">localtime<span class="r">(3)</span></cite> when the +formatter starts up and stored in registers usable by documents and +macro packages (see <a class="pxref" href="#Built_002din-Registers">Built-in Registers</a>). +</p> +</dd> +<dt id='index-TZ_002c-environment-variable'><span><code class="code">TZ</code><a class="copiable-link" href='#index-TZ_002c-environment-variable'> ¶</a></span></dt> +<dd><p>The time zone to use when converting the current time (or value of +<code class="env">SOURCE_DATE_EPOCH</code>) to human-readable form; see +<cite class="cite">tzset<span class="r">(3)</span></cite>. +</p></dd> +</dl> + +<p>MS-DOS and MS-Windows ports of <code class="code">groff</code> use semicolons, rather than +colons, to separate the directories in the lists described above. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Macro-Directories"> +<div class="nav-panel"> +<p> +Next: <a href="#Font-Directories" accesskey="n" rel="next">Font Directories</a>, Previous: <a href="#Environment" accesskey="p" rel="prev">Environment</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Macro-Directories-1">2.3 Macro Directories</h3> +<a class="index-entry-id" id="index-macro-directories"></a> +<a class="index-entry-id" id="index-directories-for-macros"></a> +<a class="index-entry-id" id="index-searching-macros"></a> +<a class="index-entry-id" id="index-macros_002c-searching"></a> + +<p>A macro file must have a name in the form <code class="code"><var class="var">name</var>.tmac</code> or +<code class="code">tmac.<var class="var">name</var></code> and be placed in a <em class="dfn">tmac directory</em> to be +found by the <samp class="option">-m<var class="var">name</var></samp> command-line option.<a class="footnote" id="DOCF5" href="#FOOT5"><sup>5</sup></a> +<a class="index-entry-id" id="index-tmac_002c-directory"></a> +<a class="index-entry-id" id="index-directory_002c-for-tmac-files"></a> +<a class="index-entry-id" id="index-tmac_002c-path"></a> +<a class="index-entry-id" id="index-path_002c-for-tmac-files"></a> +<a class="index-entry-id" id="index-locating-macro-files"></a> +<a class="index-entry-id" id="index-macro-file-search-path"></a> +<a class="index-entry-id" id="index-file_002c-macro_002c-search-path"></a> +<a class="index-entry-id" id="index-locating-macro-packages"></a> +<a class="index-entry-id" id="index-macro-package-search-path"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-search-path"></a> +Together, these directories constitute the <em class="dfn">tmac path</em>. Each +directory is searched in the following order until the desired macro +file is found or the list is exhausted. +</p> +<ul class="itemize mark-bullet"> +<li>Directories specified with GNU <code class="code">troff</code>’s or <code class="code">groff</code>’s +<samp class="option">-M</samp> command-line option. + +</li><li><a class="index-entry-id" id="index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"></a> +Directories listed in the <code class="env">GROFF_TMAC_PATH</code> environment variable. + +</li><li><a class="index-entry-id" id="index-safer-mode-1"></a> +<a class="index-entry-id" id="index-mode_002c-safer-1"></a> +<a class="index-entry-id" id="index-unsafe-mode-1"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-1"></a> +<a class="index-entry-id" id="index-current-directory"></a> +<a class="index-entry-id" id="index-directory_002c-current"></a> +The current working directory (only if in unsafe mode using the +<samp class="option">-U</samp> command-line option). + +</li><li><a class="index-entry-id" id="index-home-directory"></a> +<a class="index-entry-id" id="index-directory_002c-home"></a> +The user’s home directory, <code class="env">HOME</code>. + +</li><li><a class="index-entry-id" id="index-site_002dlocal-directory"></a> +<a class="index-entry-id" id="index-directory_002c-site_002dlocal"></a> +<a class="index-entry-id" id="index-platform_002dspecific-directory"></a> +<a class="index-entry-id" id="index-directory_002c-platform_002dspecific"></a> +A platform-dependent directory, a site-local (platform-independent) +directory, and the main <i class="slanted">tmac</i> directory. The locations +corresponding to your installation are listed in section “Environment” +of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured, they are as +follows. + +<div class="example"> +<div class="group"><pre class="example-preformatted">/usr/local/lib/groff/site-tmac +/usr/local/share/groff/site-tmac +/usr/local/share/groff/1.23.0/tmac +</pre></div></div> + +<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and +that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to +fine-tune these locations during the source configuration process. +</p></li></ul> + + + +<hr> +</div> +<div class="section-level-extent" id="Font-Directories"> +<div class="nav-panel"> +<p> +Next: <a href="#Paper-Format" accesskey="n" rel="next">Paper Format</a>, Previous: <a href="#Macro-Directories" accesskey="p" rel="prev">Macro Directories</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Font-Directories-1">2.4 Font Directories</h3> +<a class="index-entry-id" id="index-font-directories"></a> +<a class="index-entry-id" id="index-directories-for-fonts"></a> +<a class="index-entry-id" id="index-searching-fonts"></a> +<a class="index-entry-id" id="index-fonts_002c-searching"></a> + +<p><code class="code">groff</code> enforces few restrictions on how font description files are +named. For its family/style mechanism to work (see <a class="pxref" href="#Font-Families">Font Families</a>), +the names of fonts within a family should start with the family name, +followed by the style. For example, the Times family uses ‘<samp class="samp">T</samp>’ for +the family name and ‘<samp class="samp">R</samp>’, ‘<samp class="samp">B</samp>’, ‘<samp class="samp">I</samp>’, and ‘<samp class="samp">BI</samp>’ to +indicate the styles ‘roman’, ‘bold’, ‘italic’, and ‘bold italic’, +respectively. Thus the final font names are ‘<samp class="samp">TR</samp>’, ‘<samp class="samp">TB</samp>’, +‘<samp class="samp">TI</samp>’, and ‘<samp class="samp">TBI</samp>’. +</p> +<a class="index-entry-id" id="index-font-path"></a> +<a class="index-entry-id" id="index-path_002c-for-font-files"></a> +<p>Font description files are kept in <em class="dfn">font directories</em>, which +together constitute the <em class="dfn">font path</em>. The search procedure +always appends the directory <code class="code">dev</code><var class="var">name</var>, where <var class="var">name</var> is +the name of the output device. Assuming TeX DVI output, and +<samp class="file">/foo/bar</samp> as a font directory, the font description files for +<code class="command">grodvi</code> must be in <samp class="file">/foo/bar/devdvi</samp>. +Each directory in the font path is searched in the following order until +the desired font description file is found or the list is exhausted. +</p> +<ul class="itemize mark-bullet"> +<li>Directories specified with GNU <code class="code">troff</code>’s or <code class="code">groff</code>’s +<samp class="option">-f</samp> command-line option. All output drivers (and some +preprocessors) support this option as well, because they require +information about the glyphs to be rendered in the document. + +</li><li><a class="index-entry-id" id="index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"></a> +Directories listed in the <code class="env">GROFF_FONT_PATH</code> environment variable. + +</li><li><a class="index-entry-id" id="index-site_002dlocal-directory-1"></a> +<a class="index-entry-id" id="index-directory_002c-site_002dlocal-1"></a> +A site-local directory and the main font description directory. +The locations corresponding to your installation are listed in section +“Environment” of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured, +they are as follows. + +<div class="example"> +<div class="group"><pre class="example-preformatted">/usr/local/share/groff/site-font +/usr/local/share/groff/1.23.0/font +</pre></div></div> + +<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and +that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to +fine-tune these locations during the source configuration process. +</p></li></ul> + + + +<hr> +</div> +<div class="section-level-extent" id="Paper-Format"> +<div class="nav-panel"> +<p> +Next: <a href="#Invocation-Examples" accesskey="n" rel="next">Invocation Examples</a>, Previous: <a href="#Font-Directories" accesskey="p" rel="prev">Font Directories</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Paper-Format-1">2.5 Paper Format</h3> +<a class="index-entry-id" id="index-paper-format"></a> +<a class="index-entry-id" id="index-format_002c-paper"></a> +<a class="index-entry-id" id="index-paper-size"></a> +<a class="index-entry-id" id="index-size_002c-paper"></a> +<a class="index-entry-id" id="index-landscape-page-orientation"></a> +<a class="index-entry-id" id="index-orientation_002c-landscape"></a> +<a class="index-entry-id" id="index-page-orientation_002c-landscape"></a> + +<p>In <code class="code">groff</code>, the page dimensions for the formatter GNU <code class="code">troff</code> +and for output devices are handled separately. See <a class="xref" href="#Page-Layout">Page Layout</a>, for +vertical manipulation of the page size, and See <a class="xref" href="#Line-Layout">Line Layout</a>, for +horizontal changes. +<a class="index-entry-id" id="index-papersize_002etmac"></a> +<a class="index-entry-id" id="index-troffrc-1"></a> +The <samp class="file">papersize</samp> macro package, normally loaded by <samp class="file">troffrc</samp> at +startup, provides an interface for configuring page dimensions by +convenient names, like ‘<samp class="samp">letter</samp>’ or ‘<samp class="samp">a4</samp>’; see +<cite class="cite">groff_tmac<span class="r">(5)</span></cite>. The default used by the formatter depends on +its build configuration, but is usually one of the foregoing, as +geographically appropriate. +</p> +<p>It is up to each macro package to respect the page dimensions configured +in this way. +</p> +<p>For each output device, the size of the output medium can be set in its +<samp class="file">DESC</samp> file. Most output drivers also recognize a command-line +option <samp class="option">-p</samp> to override the default dimensions and an option +<samp class="option">-l</samp> to use landscape orientation. See <a class="xref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>, for +a description of the <code class="code">papersize</code> keyword, which takes an argument +of the same form as <samp class="option">-p</samp>. The output driver’s man page, such as +<cite class="cite">grops<span class="r">(1)</span></cite>, may also be helpful. +</p> +<p><code class="code">groff</code> uses the command-line option <samp class="option">-P</samp> to pass options to +postprocessors; for example, use the following for PostScript output on +A4 paper in landscape orientation. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps +</pre></div></div> + + + +<hr> +</div> +<div class="section-level-extent" id="Invocation-Examples"> +<div class="nav-panel"> +<p> +Previous: <a href="#Paper-Format" accesskey="p" rel="prev">Paper Format</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Invocation-Examples-1">2.6 Invocation Examples</h3> +<a class="index-entry-id" id="index-invocation-examples"></a> +<a class="index-entry-id" id="index-examples-of-invocation"></a> + +<p><code class="code">roff</code> systems are best known for formatting man pages. Once a +<code class="command">man</code> librarian program has located a man page, it may execute +a <code class="code">groff</code> command much like the following. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -t -man -Tutf8 /usr/share/man/man1/groff.1 +</pre></div></div> + +<p>The librarian will also pipe the output through a pager, which might not +interpret the SGR terminal escape sequences <code class="command">groff</code> emits for +boldface, underlining, or italics; see the <cite class="cite">grotty<span class="r">(1)</span></cite> man page +for a discussion. +</p> +<p>To process a <code class="code">roff</code> input file using the preprocessors +<code class="command">gtbl</code> and <code class="command">gpic</code> and the <samp class="file">me</samp> macro package in the +way to which AT&T <code class="code">troff</code> users were accustomed, one would type (or +script) a pipeline. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty +</pre></div></div> + +<p>Using <code class="command">groff</code>, this pipe can be shortened to an equivalent +command. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -p -t -me -T utf8 foo.me +</pre></div></div> + +<p>An even easier way to do this is to use <code class="command">grog</code> to guess the +preprocessor and macro options and execute the result by using the +command substitution feature of the shell. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$(grog -Tutf8 foo.me) +</pre></div></div> + +<p>Each command-line option to a postprocessor must be specified with any +required leading dashes ‘<samp class="samp">-</samp>’ +because <code class="command">groff</code> passes the arguments as-is to the postprocessor; +this permits arbitrary arguments to be transmitted. For example, to +pass a title to the <code class="command">gxditview</code> postprocessor, +the shell commands +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -X -P -title -P 'trial run' mydoc.t +</pre></div></div> + +<p>and +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -X -Z mydoc.t | gxditview -title 'trial run' - +</pre></div></div> + +<p>are equivalent. +</p> + + + +<hr> +</div> +</div> +<div class="chapter-level-extent" id="Tutorial-for-Macro-Users"> +<div class="nav-panel"> +<p> +Next: <a href="#Major-Macro-Packages" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#Invoking-groff" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="Tutorial-for-Macro-Users-1">3 Tutorial for Macro Users</h2> +<a class="index-entry-id" id="index-tutorial-for-macro-users"></a> +<a class="index-entry-id" id="index-macros_002c-tutorial-for-users"></a> +<a class="index-entry-id" id="index-user_0027s-tutorial-for-macros"></a> +<a class="index-entry-id" id="index-user_0027s-macro-tutorial"></a> + +<p>Most users of the <code class="code">roff</code> language employ a macro package to format +their documents. Successful macro packages ease the composition +process; their users need not have mastered the full formatting +language, nor understand features like diversions, traps, and +environments. This chapter aims to familiarize you with basic concepts +and mechanisms common to many macro packages (like “displays”). If +you prefer a meticulous and comprehensive presentation, try <a class="ref" href="#GNU-troff-Reference">GNU <code class="code">troff</code> Reference</a> instead. +</p> + + + +<ul class="mini-toc"> +<li><a href="#Basics" accesskey="1">Basics</a></li> +<li><a href="#Common-Features" accesskey="2">Common Features</a></li> +</ul> +<hr> +<div class="section-level-extent" id="Basics"> +<div class="nav-panel"> +<p> +Next: <a href="#Common-Features" accesskey="n" rel="next">Common Features</a>, Previous: <a href="#Tutorial-for-Macro-Users" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="#Tutorial-for-Macro-Users" accesskey="u" rel="up">Tutorial for Macro Users</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Basics-1">3.1 Basics</h3> +<a class="index-entry-id" id="index-basics-of-macro-package-usage"></a> +<a class="index-entry-id" id="index-macro-package-usage_002c-basics-of"></a> + +<p>Let us first survey some basic concepts necessary to use a macro package +fruitfully.<a class="footnote" id="DOCF6" href="#FOOT6"><sup>6</sup></a> +References are made throughout to more detailed information. +</p> +<p>GNU <code class="code">troff</code> reads an input file prepared by the user and outputs a +formatted document suitable for publication or framing. The input +consists of text, or words to be printed, and embedded commands +(<i class="slanted">requests</i> and <i class="slanted">escape sequences</i>), which tell GNU +<code class="code">troff</code> how to format the output. See <a class="xref" href="#Formatter-Instructions">Formatter Instructions</a>. +</p> +<p>The word <i class="slanted">argument</i> is used in this chapter to mean a word or +number that appears on the same line as a request, and which modifies +the meaning of that request. For example, the request +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.sp +</pre></div></div> + +<p>spaces one line, but +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.sp 4 +</pre></div></div> + +<p>spaces four lines. The number 4 is an argument to the <code class="code">sp</code> +request, which says to space four lines instead of one. Arguments are +separated from the request and from each other by spaces (<em class="emph">not</em> +tabs). See <a class="xref" href="#Invoking-Requests">Invoking Requests</a>. +</p> +<p>The primary function of GNU <code class="code">troff</code> is to collect words from input +lines, fill output lines with those words, adjust the line to the +right-hand margin by widening spaces, and output the result. For +example, the input: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Now is the time +for all good men +to come to the aid +of their party. +Four score and seven +years ago, etc. +</pre></div></div> + +<p>is read, packed onto output lines, and justified to produce: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ Now is the time for all good men to come to the aid of + ⇒ their party. Four score and seven years ago, etc. +</pre></div></div> + +<p>Sometimes a new output line should be started even though the current +line is not yet full—for example, at the end of a paragraph. To do +this it is possible to force a <i class="slanted">break</i>, starting a new output +line. Some requests cause a break automatically, as do (normally) blank +input lines and input lines beginning with a space or tab. +</p> +<p>Not all input lines are <i class="slanted">text lines</i>—words to be formatted. +Some are <i class="slanted">control lines</i> that tell a macro package (or GNU +<code class="code">troff</code> directly) how to format the text. Control lines start with +a dot (‘<samp class="samp">.</samp>’) or an apostrophe (‘<samp class="samp">'</samp>’) as the first character, and +can be followed by a <i class="slanted">macro call</i>. +</p> +<p>The formatter also does more complex things, such as automatically +numbering pages, skipping over page boundaries, putting footnotes in the +correct place, and so forth. +</p> +<p>Here are a few hints for preparing text for input to GNU <code class="code">troff</code>. +</p> +<ul class="itemize mark-bullet"> +<li>First, keep the input lines short. Short input lines are easier to +edit, and GNU <code class="code">troff</code> packs words onto longer lines anyhow. + +</li><li>In keeping with this, it is helpful to begin a new line after every +comma or phrase, since common corrections are to add or delete sentences +or phrases. + +</li><li>End each sentence with two spaces—or better, start each sentence on a +new line. GNU <code class="code">troff</code> recognizes characters that usually end a +sentence, and inserts inter-sentence space accordingly. + +</li><li>Do not hyphenate words at the end of lines—GNU <code class="code">troff</code> is smart +enough to hyphenate words as needed, but is not smart enough to take +hyphens out and join a word back together. Also, words such as +“mother-in-law” should not be broken over a line, since then a space +can occur where not wanted, such as “<span class="w-nolinebreak-text">mother-</span> in<!-- /@w -->-law”. +</li></ul> + +<p>We offer further advice in <a class="ref" href="#Input-Conventions">Input Conventions</a>. +</p> +<a class="index-entry-id" id="index-vertical-spacing-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-spacing_002c-vertical-_0028introduction_0029"></a> +<p>GNU <code class="code">troff</code> permits alteration of the distance between lines of +text. This is termed <i class="slanted">vertical spacing</i> and is expressed in the +same units as the type size—the point. The default is 10-point type +on 12-point spacing. To get <i class="slanted">double-spaced</i> text you would set +the vertical spacing to 24 points. Some, but not all, macro packages +expose a macro or register to configure the vertical spacing. +</p> +<p>A number of requests allow you to change the way the output is arranged +on the page, sometimes called the <i class="slanted">layout</i> of the output page. +Most macro packages don’t supply macros for performing these (at least +not without performing other actions besides), as they are such basic +operations. The macro packages for writing man pages, <samp class="file">man</samp> and +<samp class="file">mdoc</samp>, don’t encourage explicit use of these requests at all. +</p> +<a class="index-entry-id" id="index-spacing-_0028introduction_0029"></a> +<p>The request ‘<samp class="samp">.sp <var class="var">N</var></samp>’<!-- /@w --> leaves <var class="var">N</var> lines of blank +space. <var class="var">N</var> can be omitted (skipping a single line) or can +be of the form <var class="var">N</var>i (for <var class="var">N</var> inches) or <var class="var">N</var>c (for +<var class="var">N</var> centimeters). For example, the input: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.sp 1.5i +My thoughts on the subject +.sp +</pre></div></div> + +<p>leaves one and a half inches of space, followed by the line “My +thoughts on the subject”, followed by a single blank line (more +measurement units are available; see <a class="ref" href="#Measurements">Measurements</a>). +</p> +<p>If you seek precision in spacing, be advised when using a macro package +that it might not honor <code class="code">sp</code> requests as you expect; it can use a +formatter feature called <i class="slanted">no-space mode</i> to prevent excess space +from accumulating. Macro packages typically offer registers to control +spacing between paragraphs, before section headings, and around displays +(discussed below); use these facilities preferentially. +See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>. +</p> +<a class="index-entry-id" id="index-centering-lines-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-lines_002c-centering-_0028introduction_0029"></a> +<p>Text lines can be centered by using the <code class="code">ce</code> request. The line +after <code class="code">ce</code> is centered (horizontally) on the page. To center more +than one line, use ‘<samp class="samp">.ce <var class="var">N</var></samp>’<!-- /@w --> (where <var class="var">N</var> is the number +of lines to center), followed by the <var class="var">N</var> lines. To center many +lines without counting them, type: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ce 1000 +lines to center +.ce 0 +</pre></div></div> + +<p>The ‘<samp class="samp">.ce 0</samp>’<!-- /@w --> request tells GNU <code class="code">troff</code> to center zero more +lines, in other words, stop centering. +</p> +<a class="index-entry-id" id="index-right_002daligning-lines-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-lines_002c-right_002daligning-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-right_002djustifying-lines-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-lines_002c-right_002djustifying-_0028introduction_0029"></a> +<p>GNU <code class="code">troff</code> also offers the <code class="code">rj</code> request for right-aligning +text. It works analogously to <code class="code">ce</code> and is convenient for setting +epigraphs. +</p> +<a class="index-entry-id" id="index-page-break-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-break_002c-page-_0028introduction_0029"></a> +<p>The <code class="code">bp</code> request starts a new page; this necessarily implies an +ordinary (line) break. +</p> +<a class="index-entry-id" id="index-break-_0028introduction_0029"></a> +<a class="index-entry-id" id="index-line-break-_0028introduction_0029"></a> +<p>All of these requests cause a break; that is, they always start a new +line. To start a new line without performing any other action, use +<code class="code">br</code>. If you invoke them with the apostrophe ‘<samp class="samp">'</samp>’, the +<i class="slanted">no-break control character</i>, the (initial) break they normally +perform is suppressed. ‘<samp class="samp">'br</samp>’ does nothing. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Common-Features"> +<div class="nav-panel"> +<p> +Previous: <a href="#Basics" accesskey="p" rel="prev">Basics</a>, Up: <a href="#Tutorial-for-Macro-Users" accesskey="u" rel="up">Tutorial for Macro Users</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Common-Features-1">3.2 Common Features</h3> +<a class="index-entry-id" id="index-common-features"></a> +<a class="index-entry-id" id="index-features_002c-common"></a> + +<p>GNU <code class="code">troff</code> provides low-level operations for formatting a +document. Many routine operations are undertaken in nearly all +documents that require a series of such primitive operations to be +performed. These common tasks are grouped into <i class="slanted">macros</i>, which +are then collected into a <i class="slanted">macro package</i>. +</p> +<p>Macro packages come in two varieties: “major” or “full-service” +ones that manage page layout, and “minor” or “auxiliary” ones that +do not, instead fulfilling narrow, specific tasks. Find a list in the +<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page. Type ‘<samp class="samp">man groff_tmac</samp>’ at the +command line to view it. +</p> +<p>We survey several capabilities of full-service macro package below. +Each package employs its own macros to exercise them. For details, +consult its man page or, for <samp class="file">ms</samp>, see <a class="ref" href="#ms"><samp class="file">ms</samp></a>. +</p> + + +<ul class="mini-toc"> +<li><a href="#Paragraphs" accesskey="1">Paragraphs</a></li> +<li><a href="#Sections-and-Chapters" accesskey="2">Sections and Chapters</a></li> +<li><a href="#Headers-and-Footers" accesskey="3">Headers and Footers</a></li> +<li><a href="#Page-Layout-Adjustment" accesskey="4">Page Layout</a></li> +<li><a href="#Displays-and-Keeps" accesskey="5">Displays and Keeps</a></li> +<li><a href="#Footnotes-and-Endnotes" accesskey="6">Footnotes and Endnotes</a></li> +<li><a href="#Table-of-Contents" accesskey="7">Table of Contents</a></li> +<li><a href="#Indexing" accesskey="8">Indexing</a></li> +<li><a href="#Document-Formats" accesskey="9">Document Formats</a></li> +<li><a href="#Columnation">Columnation</a></li> +<li><a href="#Font-and-Size-Changes">Font and Size Changes</a></li> +<li><a href="#Predefined-Text">Predefined Text</a></li> +<li><a href="#Preprocessor-Support">Preprocessor Support</a></li> +<li><a href="#Configuration-and-Customization">Configuration and Customization</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Paragraphs"> +<div class="nav-panel"> +<p> +Next: <a href="#Sections-and-Chapters" accesskey="n" rel="next">Sections and Chapters</a>, Previous: <a href="#Common-Features" accesskey="p" rel="prev">Common Features</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Paragraphs-1">3.2.1 Paragraphs</h4> +<a class="index-entry-id" id="index-paragraphs"></a> + +<p>Paragraphs can be separated and indented in various ways. Some start +with a blank line and have a first-line indentation, like most of the +ones in this manual. Block paragraphs omit the indentation. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ Some men look at constitutions with sanctimonious + ⇒ reverence, and deem them like the ark of the + ⇒ covenant, too sacred to be touched. +</pre></div></div> + +<a class="index-entry-id" id="index-tags_002c-paragraph"></a> +<a class="index-entry-id" id="index-tagged-paragraphs"></a> +<a class="index-entry-id" id="index-lists"></a> +<p>We also frequently encounter <i class="slanted">tagged</i> paragraphs, which begin +with a tag or label at the left margin and indent the remaining text. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ one This is the first paragraph. Notice how the + ⇒ first line of the resulting paragraph lines + ⇒ up with the other lines in the paragraph. +</pre></div></div> + +<p>If the tag is too wide for the indentation, the line is broken. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ longlabel + ⇒ The label does not align with the subsequent + ⇒ lines, but they align with each other. +</pre></div></div> + +<p>A variation of the tagged paragraph is the itemized or enumerated +paragraph, which might use punctuation or a digit for a tag, +respectively. These are frequently used to construct lists. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ o This list item starts with a bullet. When + ⇒ producing output for a device using the ASCII + ⇒ character set, an 'o' is formatted instead. +</pre></div></div> + +<p>Often, use of the same macro without a tag continues such a discussion. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ -xyz This option is recognized but ignored. + ⇒ + ⇒ It had a security hole that we don't discuss. +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="Sections-and-Chapters"> +<div class="nav-panel"> +<p> +Next: <a href="#Headers-and-Footers" accesskey="n" rel="next">Headers and Footers</a>, Previous: <a href="#Paragraphs" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Sections-and-Chapters-1">3.2.2 Sections and Chapters</h4> + +<p>The simplest kind of section heading is unnumbered, set in a bold or +italic style, and occupies a line by itself. Others possess +automatically numbered multi-level headings and/or different typeface +styles or sizes at different levels. More sophisticated macro packages +supply macros for designating chapters and appendices. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Headers-and-Footers"> +<div class="nav-panel"> +<p> +Next: <a href="#Page-Layout-Adjustment" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="#Sections-and-Chapters" accesskey="p" rel="prev">Sections and Chapters</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Headers-and-Footers-1">3.2.3 Headers and Footers</h4> + +<p><i class="slanted">Headers</i> and <i class="slanted">footers</i> occupy the top and bottom of +each page, respectively, and contain data like the page number and the +article or chapter title. Their appearance is not affected by the +running text. Some packages allow for different titles on even- and +odd-numbered pages (for printed, bound material). +</p> +<p>Headers and footers are together called <i class="slanted">titles</i>, and comprise +three parts: left-aligned, centered, and right-aligned. A ‘<samp class="samp">%</samp>’ +character appearing anywhere in a title is automatically replaced by the +page number. See <a class="xref" href="#Page-Layout">Page Layout</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Page-Layout-Adjustment"> +<div class="nav-panel"> +<p> +Next: <a href="#Displays-and-Keeps" accesskey="n" rel="next">Displays and Keeps</a>, Previous: <a href="#Headers-and-Footers" accesskey="p" rel="prev">Headers and Footers</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Page-Layout-1">3.2.4 Page Layout</h4> + +<p>Most macro packages let the user specify the size of the page margins. +The top and bottom margins are typically handled differently than the +left and right margins; the latter two are derived from the +<i class="slanted">page offset</i>, <i class="slanted">indentation</i>, and <i class="slanted">line length</i>. +See <a class="xref" href="#Line-Layout">Line Layout</a>. Commonly, packages support registers to tune these +values. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Displays-and-Keeps"> +<div class="nav-panel"> +<p> +Next: <a href="#Footnotes-and-Endnotes" accesskey="n" rel="next">Footnotes and Endnotes</a>, Previous: <a href="#Page-Layout-Adjustment" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Displays-and-Keeps-1">3.2.5 Displays and Keeps</h4> +<a class="index-entry-id" id="index-displays"></a> + +<p><i class="slanted">Displays</i> are sections of text set off from the surrounding +material (typically paragraphs), often differing in indentation, and/or +spacing. Tables, block quotations, and figures are displayed. +Equations and code examples, when not much shorter than an output line, +often are. Lists may or may not be. Packages for setting man pages +support example displays but not keeps. +</p> +<a class="index-entry-id" id="index-keeps-_0028introduction_0029"></a> +<p>A <i class="slanted">keep</i> is a group of output lines, often a display, that is +formatted on a single page if possible; it causes a page break to happen +early so as to not interrupt the kept material. +</p> +<a class="index-entry-id" id="index-keep_002c-floating"></a> +<a class="index-entry-id" id="index-floating-keep"></a> +<p><i class="slanted">Floating keeps</i> can move, or “float”, relative to the text +around them in the input. They are useful for displays that are +captioned and referred to by name, as with “See figure 3”. +Depending on the package, a floating keep appears at the bottom of the +current page if it fits, and at the top of the next otherwise. +Alternatively, floating keeps might be deferred to the end of a section. +Using a floating keep can avoid the large vertical spaces that may +precede a tall keep of the ordinary sort when it won’t fit on the page. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Footnotes-and-Endnotes"> +<div class="nav-panel"> +<p> +Next: <a href="#Table-of-Contents" accesskey="n" rel="next">Table of Contents</a>, Previous: <a href="#Displays-and-Keeps" accesskey="p" rel="prev">Displays and Keeps</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Footnotes-and-Endnotes-1">3.2.6 Footnotes and Endnotes</h4> +<a class="index-entry-id" id="index-footnotes"></a> +<a class="index-entry-id" id="index-endnotes"></a> + +<p><i class="slanted">Footnotes</i> and <i class="slanted">endnotes</i> are forms of delayed +formatting. They are recorded at their points of relevance in +the input, but not formatted there. Instead, a <i class="slanted">mark</i> cues the +reader to check the “foot”, or bottom, of the current page, or in the +case of endnotes, an annotation list later in the document. Macro +packages that support these features also supply a means of +automatically numbering either type of annotation. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Table-of-Contents"> +<div class="nav-panel"> +<p> +Next: <a href="#Indexing" accesskey="n" rel="next">Indexing</a>, Previous: <a href="#Footnotes-and-Endnotes" accesskey="p" rel="prev">Footnotes and Endnotes</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Table-of-Contents-1">3.2.7 Table of Contents</h4> +<a class="index-entry-id" id="index-table-of-contents"></a> +<a class="index-entry-id" id="index-contents_002c-table-of"></a> + +<p>A package may handle a <i class="slanted">table of contents</i> by directing section +heading macros to save section heading text and the page number where it +occurs for use in a later <i class="slanted">entry</i> for a table of contents. It +writes the collected entries at the end of the document, once all are +known, upon request. A row of dots (a <i class="slanted">leader</i>) bridges the +text on the left with its location on the right. Other collections +might work in this manner, providing lists of figures or tables. +</p> +<p>A table of contents is often found at the end of a GNU <code class="code">troff</code> +document because the formatter processes the document in a single pass. +The <code class="command">gropdf</code> output driver supports a PDF feature that relocates +pages at the time the document is rendered; see the <cite class="cite">gropdf<span class="r">(1)</span></cite> +man page. Type ‘<samp class="samp">man gropdf</samp>’ at the command line to view it. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Indexing"> +<div class="nav-panel"> +<p> +Next: <a href="#Document-Formats" accesskey="n" rel="next">Document Formats</a>, Previous: <a href="#Table-of-Contents" accesskey="p" rel="prev">Table of Contents</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Indexing-1">3.2.8 Indexing</h4> +<a class="index-entry-id" id="index-index_002c-in-macro-package"></a> + +<a class="index-entry-id" id="index-makeindex"></a> +<p>An index is similar to a table of contents, in that entry labels and +locations must be collected, but poses a greater challenge because it +needs to be sorted before it is output. Here, processing the document +in multiple passes is inescapable, and tools like the <code class="code">makeindex</code> +program are necessary. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Document-Formats"> +<div class="nav-panel"> +<p> +Next: <a href="#Columnation" accesskey="n" rel="next">Columnation</a>, Previous: <a href="#Indexing" accesskey="p" rel="prev">Indexing</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Document-Formats-1">3.2.9 Document Formats</h4> +<a class="index-entry-id" id="index-document-formats"></a> + +<p>Some macro packages supply stock configurations of certain documents, +like business letters and memoranda. These often also have provision +for a <i class="slanted">cover sheet</i>, which may be rigid in its format. With +these features, it is even more important to use the package’s macros in +preference to the formatter requests presented earlier, where possible. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Columnation"> +<div class="nav-panel"> +<p> +Next: <a href="#Font-and-Size-Changes" accesskey="n" rel="next">Font and Size Changes</a>, Previous: <a href="#Document-Formats" accesskey="p" rel="prev">Document Formats</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Columnation-1">3.2.10 Columnation</h4> + +<p>Macro packages apart from <samp class="file">man</samp> and <samp class="file">mdoc</samp> for man page +formatting offer a facility for setting multiple columns on the page. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Font-and-Size-Changes"> +<div class="nav-panel"> +<p> +Next: <a href="#Predefined-Text" accesskey="n" rel="next">Predefined Text</a>, Previous: <a href="#Columnation" accesskey="p" rel="prev">Columnation</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Font-and-Size-Changes-1">3.2.11 Font and Size Changes</h4> + +<p>The formatter’s requests and escape sequences for setting the typeface +and size are not always intuitive, so all macro packages provide macros +to make these operations simpler. They also make it more convenient to +change typefaces in the middle of a word and can handle italic +corrections automatically. See <a class="xref" href="#Italic-Corrections">Italic Corrections</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Predefined-Text"> +<div class="nav-panel"> +<p> +Next: <a href="#Preprocessor-Support" accesskey="n" rel="next">Preprocessor Support</a>, Previous: <a href="#Font-and-Size-Changes" accesskey="p" rel="prev">Font and Size Changes</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Predefined-Text-1">3.2.12 Predefined Text</h4> + +<p>Most macro packages supply predefined strings to set prepared text like +the date, or to perform operations like super- and subscripting. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Preprocessor-Support"> +<div class="nav-panel"> +<p> +Next: <a href="#Configuration-and-Customization" accesskey="n" rel="next">Configuration and Customization</a>, Previous: <a href="#Predefined-Text" accesskey="p" rel="prev">Predefined Text</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Preprocessor-Support-1">3.2.13 Preprocessor Support</h4> + +<p>All macro packages provide support for various preprocessors and may +extend their functionality by defining macros to set their contents in +displays. Examples include <code class="code">TS</code> and <code class="code">TE</code> for <code class="command">gtbl</code>, +<code class="code">EQ</code> and <code class="code">EN</code> for <code class="command">geqn</code>, and <code class="code">PS</code> and <code class="code">PE</code> +for <code class="command">gpic</code>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Configuration-and-Customization"> +<div class="nav-panel"> +<p> +Previous: <a href="#Preprocessor-Support" accesskey="p" rel="prev">Preprocessor Support</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Configuration-and-Customization-1">3.2.14 Configuration and Customization</h4> + +<p>Packages provide means of customizing many of the details of how the +package behaves. These range from setting the default type size to +changing the appearance of section headers. +</p> + + + + +<hr> +</div> +</div> +</div> +<div class="chapter-level-extent" id="Major-Macro-Packages"> +<div class="nav-panel"> +<p> +Next: <a href="#GNU-troff-Reference" accesskey="n" rel="next">GNU <code class="code">troff</code> Reference</a>, Previous: <a href="#Tutorial-for-Macro-Users" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="Macro-Packages-2">4 Macro Packages</h2> +<a class="index-entry-id" id="index-major-macro-package"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-major"></a> +<a class="index-entry-id" id="index-macro-package_002c-major"></a> + +<p>This chapter surveys the “major” macro packages that come with +<code class="code">groff</code>. One, <samp class="file">ms</samp>, is presented in detail. +</p> +<a class="index-entry-id" id="index-full_002dservice-macro-package"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-full_002dservice"></a> +<a class="index-entry-id" id="index-macro-package_002c-full_002dservice"></a> +<p>Major macro packages are also sometimes described as <em class="dfn">full-service</em> +due to the breadth of features they provide and because more than one +cannot be used by the same document; for example +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -m man foo.man -m ms bar.doc +</pre></div></div> + +<p>doesn’t work. Option arguments are processed before non-option +arguments; the above (failing) sample is thus reordered to +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -m man -m ms foo.man bar.doc +</pre></div></div> + +<a class="index-entry-id" id="index-minor-macro-package"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-minor"></a> +<a class="index-entry-id" id="index-macro-package_002c-minor"></a> +<a class="index-entry-id" id="index-auxiliary-macro-package"></a> +<a class="index-entry-id" id="index-package_002c-macro_002c-auxiliary"></a> +<a class="index-entry-id" id="index-macro-package_002c-auxiliary"></a> +<p>Many auxiliary, or “minor”, macro packages are also available. They +may in general be used with any full-service macro package and handle a +variety of tasks from character encoding selection, to language +localization, to inlining of raster images. See the +<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for a list. Type ‘<samp class="samp">man +groff_tmac</samp>’ at the command line to view it. +</p> + + + +<ul class="mini-toc"> +<li><a href="#man" accesskey="1"><samp class="file">man</samp></a></li> +<li><a href="#mdoc" accesskey="2"><samp class="file">mdoc</samp></a></li> +<li><a href="#me" accesskey="3"><samp class="file">me</samp></a></li> +<li><a href="#mm" accesskey="4"><samp class="file">mm</samp></a></li> +<li><a href="#mom" accesskey="5"><samp class="file">mom</samp></a></li> +<li><a href="#ms" accesskey="6"><samp class="file">ms</samp></a></li> +</ul> +<hr> +<div class="section-level-extent" id="man"> +<div class="nav-panel"> +<p> +Next: <a href="#mdoc" accesskey="n" rel="next"><samp class="file">mdoc</samp></a>, Previous: <a href="#Major-Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="man-1">4.1 <samp class="file">man</samp></h3> +<a class="index-entry-id" id="index-manual-pages"></a> +<a class="index-entry-id" id="index-man-pages"></a> +<a class="index-entry-id" id="index-an_002etmac"></a> +<a class="index-entry-id" id="index-man_002etmac"></a> + +<p>The <code class="code">man</code> macro package is the most widely used and probably the +most important ever developed for <code class="code">troff</code>. It is easy to use, and +a vast majority of manual pages (“man pages”) are written in it. +</p> +<p><code class="code">groff</code>’s implementation is documented in the +<cite class="cite">groff_man<span class="r">(7)</span></cite> man page. Type ‘<samp class="samp">man groff_man</samp>’ at the +command line to view it. +</p> + + +<ul class="mini-toc"> +<li><a href="#Optional-man-extensions" accesskey="1">Optional <samp class="file">man</samp> extensions</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Optional-man-extensions"> +<div class="nav-panel"> +<p> +Up: <a href="#man" accesskey="u" rel="up"><samp class="file">man</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Optional-man-extensions-1">4.1.1 Optional <samp class="file">man</samp> extensions</h4> + +<a class="index-entry-id" id="index-man_002elocal"></a> +<p>Use the file <samp class="file">man.local</samp> for local extensions to the <code class="code">man</code> +macros or for style changes. +</p> +<ul class="mini-toc"> +<li><a href="#Custom-headers-and-footers" accesskey="1">Custom headers and footers</a></li> +<li><a href="#Ultrix_002dspecific-man-macros" accesskey="2">Ultrix-specific man macros</a></li> +<li><a href="#Simple-example" accesskey="3">Simple example</a></li> +</ul> +<div class="unnumberedsubsubsec-level-extent" id="Custom-headers-and-footers"> +<h4 class="unnumberedsubsubsec">Custom headers and footers</h4> +<a class="index-entry-id" id="index-man-macros_002c-custom-headers-and-footers"></a> + +<p>In <code class="code">groff</code> versions 1.18.2 and later, you can specify custom +headers and footers by redefining the following macros in +<samp class="file">man.local</samp>. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PT</code></strong><a class="copiable-link" href='#index-_002ePT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PT-_005bman_005d"></a> +<p>Control the content of the headers. Normally, the header prints the +command name and section number on either side, and the optional fifth +argument to <code class="code">TH</code> in the center. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eBT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BT</code></strong><a class="copiable-link" href='#index-_002eBT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-BT-_005bman_005d"></a> +<p>Control the content of the footers. Normally, the footer prints the +page number and the third and fourth arguments to <code class="code">TH</code>. +</p> +<p>Use the <code class="code">FT</code> register to specify the footer position. The default +is −0.5<span class="dmn">i</span>. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Ultrix_002dspecific-man-macros"> +<h4 class="unnumberedsubsubsec">Ultrix-specific man macros</h4> +<a class="index-entry-id" id="index-Ultrix_002dspecific-man-macros"></a> +<a class="index-entry-id" id="index-man-macros_002c-Ultrix_002dspecific"></a> + +<a class="index-entry-id" id="index-man_002eultrix"></a> +<p>The <code class="code">groff</code> source distribution includes a file named +<samp class="file">man.ultrix</samp>, containing macros compatible with the Ultrix variant +of <code class="code">man</code>. Copy this file into <samp class="file">man.local</samp> (or use the +<code class="code">mso</code> request to load it) to enable the following macros. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eCT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">key</i></span></var><a class="copiable-link" href='#index-_002eCT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CT-_005bman_005d"></a> +<p>Print ‘<samp class="samp"><CTRL/<var class="var">key</var>></samp>’. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eCW"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong><a class="copiable-link" href='#index-_002eCW'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CW-_005bman_005d"></a> +<p>Print subsequent text using a “constant-width” (monospaced) typeface +(Courier roman). +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDs"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Ds</code></strong><a class="copiable-link" href='#index-_002eDs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Ds-_005bman_005d"></a> +<p>Begin a non-filled display. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDe"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.De</code></strong><a class="copiable-link" href='#index-_002eDe'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-De-_005bman_005d"></a> +<p>End a non-filled display started with <code class="code">Ds</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eEX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eEX'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EX-_005bman_005d"></a> +<p>Begin a non-filled display using a monospaced typeface (Courier roman). +Use the optional <var class="var">indent</var> argument to indent the display. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eEE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EE</code></strong><a class="copiable-link" href='#index-_002eEE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EE-_005bman_005d"></a> +<p>End a non-filled display started with <code class="code">EX</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.G</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eG'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-G-_005bman_005d"></a> +<p>Set <var class="var">text</var> in Helvetica. If no text is present on the line where +the macro is called, then the text of the next line appears in +Helvetica. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eGL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.GL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eGL'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-GL-_005bman_005d"></a> +<p>Set <var class="var">text</var> in Helvetica oblique. If no text is present on the line +where the macro is called, then the text of the next line appears in +Helvetica Oblique. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eHB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.HB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eHB'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-HB-_005bman_005d"></a> +<p>Set <var class="var">text</var> in Helvetica bold. If no text is present on the line +where the macro is called, then all text up to the next <code class="code">HB</code> +appears in Helvetica bold. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eTB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eTB'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TB-_005bman_005d"></a> +<p>Identical to <code class="code">HB</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eMS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MS</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">title</i></span> <span class="r"><i class="slanted">sect</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002eMS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MS-_005bman_005d"></a> +<p>Set a man page reference in Ultrix format. The <var class="var">title</var> is in +Courier instead of italic. Optional punctuation follows the section +number without an intervening space. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eNT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NT</code></strong> <var class="def-var-arguments">[<code class="code">C</code>] [<span class="r"><i class="slanted">title</i></span>]</var><a class="copiable-link" href='#index-_002eNT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-NT-_005bman_005d"></a> +<p>Begin a note. Print the optional <span class="r"><i class="slanted">title</i></span>, or the word “Note”, +centered on the page. Text following the macro makes up the body of the +note, and is indented on both sides. If the first argument is <code class="code">C</code>, +the body of the note is printed centered (the second argument replaces +the word “Note” if specified). +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eNE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NE</code></strong><a class="copiable-link" href='#index-_002eNE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-NE-_005bman_005d"></a> +<p>End a note begun with <code class="code">NT</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePN'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PN-_005bman_005d"></a> +<p>Set the path name in a monospaced typeface (Courier roman), followed by +optional punctuation. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePn"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Pn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">punct</i></span>] <span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Pn-_005bman_005d"></a> +<p>If called with two arguments, identical to <code class="code">PN</code>. If called with +three arguments, set the second argument in a monospaced typeface +(Courier roman), bracketed by the first and third arguments in the +current font. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eR"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong><a class="copiable-link" href='#index-_002eR'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-R-_005bman_005d"></a> +<p>Switch to roman font and turn off any underlining in effect. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eRN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RN</code></strong><a class="copiable-link" href='#index-_002eRN'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RN-_005bman_005d"></a> +<p>Print the string ‘<samp class="samp"><RETURN></samp>’. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eVS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VS</code></strong> <var class="def-var-arguments">[<code class="code">4</code>]</var><a class="copiable-link" href='#index-_002eVS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-VS-_005bman_005d"></a> +<p>Start printing a change bar in the margin if the number <code class="code">4</code> is +specified. Otherwise, this macro does nothing. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eVE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VE</code></strong><a class="copiable-link" href='#index-_002eVE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-VE-_005bman_005d"></a> +<p>End printing the change bar begun by <code class="code">VS</code>. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Simple-example"> +<h4 class="unnumberedsubsubsec">Simple example</h4> + +<p>The following example <samp class="file">man.local</samp> file alters the <code class="code">SH</code> macro +to add some extra vertical space before printing the heading. Headings +are printed in Helvetica bold. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" Make the heading fonts Helvetica +.ds HF HB +. +.\" Put more space in front of headings. +.rn SH SH-orig +.de SH +. if t .sp (u;\\n[PD]*2) +. SH-orig \\$* +.. +</pre></div></div> + + + +<hr> +</div> +</div> +</div> +<div class="section-level-extent" id="mdoc"> +<div class="nav-panel"> +<p> +Next: <a href="#me" accesskey="n" rel="next"><samp class="file">me</samp></a>, Previous: <a href="#man" accesskey="p" rel="prev"><samp class="file">man</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="mdoc-1">4.2 <samp class="file">mdoc</samp></h3> +<a class="index-entry-id" id="index-mdoc-macros"></a> + +<p><code class="code">groff</code>’s implementation of the BSD <samp class="file">doc</samp> package for man +pages is documented in the <cite class="cite">groff_mdoc<span class="r">(7)</span></cite> man page. Type +‘<samp class="samp">man groff_mdoc</samp>’ at the command line to view it. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="me"> +<div class="nav-panel"> +<p> +Next: <a href="#mm" accesskey="n" rel="next"><samp class="file">mm</samp></a>, Previous: <a href="#mdoc" accesskey="p" rel="prev"><samp class="file">mdoc</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="me-1">4.3 <samp class="file">me</samp></h3> +<a class="index-entry-id" id="index-me-macro-package"></a> + +<p><code class="code">groff</code>’s implementation of the BSD <samp class="file">me</samp> macro package is +documented using itself. A tutorial, <samp class="file">meintro.me</samp>, and reference, +<samp class="file">meref.me</samp>, are available in <code class="code">groff</code>’s documentation +directory. A <cite class="cite">groff_me<span class="r">(7)</span></cite> man page is also available and +identifies the installation path for these documents. Type ‘<samp class="samp">man +groff_me</samp>’ at the command line to view it. +</p> +<p>A French translation of the tutorial is available as +<samp class="file">meintro_fr.me</samp> and installed parallel to the English version. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="mm"> +<div class="nav-panel"> +<p> +Next: <a href="#mom" accesskey="n" rel="next"><samp class="file">mom</samp></a>, Previous: <a href="#me" accesskey="p" rel="prev"><samp class="file">me</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="mm-1">4.4 <samp class="file">mm</samp></h3> +<a class="index-entry-id" id="index-mm-macro-package"></a> + +<p><code class="code">groff</code>’s implementation of the <abbr class="acronym">AT&T</abbr> memorandum macro +package is documented in the <cite class="cite">groff_mm<span class="r">(7)</span></cite> man page. Type +‘<samp class="samp">man groff_mm</samp>’ at the command line) to view it. +</p> +<p>A Swedish localization of <samp class="file">mm</samp> is also available; see +<cite class="cite">groff_mmse<span class="r">(7)</span></cite>. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="mom"> +<div class="nav-panel"> +<p> +Next: <a href="#ms" accesskey="n" rel="next"><samp class="file">ms</samp></a>, Previous: <a href="#mm" accesskey="p" rel="prev"><samp class="file">mm</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="mom-1">4.5 <samp class="file">mom</samp></h3> +<a class="index-entry-id" id="index-mom-macro-package"></a> + +<p>The main documentation files for the <samp class="file">mom</samp> macros are in +<abbr class="acronym">HTML</abbr> format. Additional, useful documentation is in +<abbr class="acronym">PDF</abbr> format. See the <cite class="cite">groff<span class="r">(1)</span></cite> man page, section +“Installation Directories”, for their location. +</p> +<ul class="itemize mark-bullet"> +<li><samp class="file">toc.html</samp> +Entry point to the full mom manual. + +</li><li><samp class="file">macrolist.html</samp> +Hyperlinked index of macros with brief descriptions, arranged by +category. + +</li><li><samp class="file">mom-pdf.pdf</samp> +<abbr class="acronym">PDF</abbr> features and usage. +</li></ul> + +<p>The mom macros are in active development between <code class="code">groff</code> releases. +The most recent version, along with up-to-date documentation, is +available at <a class="uref" href="http://www.schaffter.ca/mom/mom-05.html">http://www.schaffter.ca/mom/mom-05.html</a>. +</p> +<p>The <cite class="cite">groff_mom<span class="r">(7)</span></cite> man page (type ‘<samp class="samp">man groff_mom</samp>’ at +the command line) contains a partial list of available macros, however +their usage is best understood by consulting the <abbr class="acronym">HTML</abbr> +documentation. +</p> + + + +<hr> +</div> +<div class="section-level-extent" id="ms"> +<div class="nav-panel"> +<p> +Previous: <a href="#mom" accesskey="p" rel="prev"><samp class="file">mom</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="ms-1">4.6 <samp class="file">ms</samp></h3> +<a class="index-entry-id" id="index-ms-macros"></a> + +<p>The <samp class="file">ms</samp> (“manuscript”) package is suitable for the preparation +of letters, memoranda, reports, and books. These <code class="code">groff</code> +macros feature cover page and table of contents generation, +automatically numbered headings, several paragraph styles, a variety of +text styling options, footnotes, and multi-column page layouts. +<samp class="file">ms</samp> supports the <code class="command">tbl</code>, <code class="command">eqn</code>, <code class="command">pic</code>, and +<code class="command">refer</code> preprocessors for inclusion of tables, mathematical +equations, diagrams, and standardized bibliographic citations. This +implementation is mostly compatible with the documented interface and +behavior of AT&T Unix Version 7 <samp class="file">ms</samp>. Many extensions from +4.2BSD (Berkeley) +and Tenth Edition Research Unix have been recreated. +</p> + + +<ul class="mini-toc"> +<li><a href="#ms-Introduction" accesskey="1">Introduction</a></li> +<li><a href="#ms-Document-Structure" accesskey="2">Document Structure</a></li> +<li><a href="#ms-Document-Control-Settings" accesskey="3">Document Control Settings</a></li> +<li><a href="#ms-Document-Description-Macros" accesskey="4">Document Description Macros</a></li> +<li><a href="#ms-Body-Text" accesskey="5">Body Text</a></li> +<li><a href="#ms-Page-Layout" accesskey="6">Page layout</a></li> +<li><a href="#Differences-from-AT_0026T-ms" accesskey="7">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a></li> +<li><a href="#ms-Legacy-Features" accesskey="8">Legacy Features</a></li> +<li><a href="#ms-Naming-Conventions" accesskey="9">Naming Conventions</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="ms-Introduction"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Document-Structure" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="#ms" accesskey="p" rel="prev"><samp class="file">ms</samp></a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Introduction-2">4.6.1 Introduction</h4> + +<p>The <samp class="file">ms</samp> macros are the oldest surviving package for <code class="code">roff</code> +systems.<a class="footnote" id="DOCF7" href="#FOOT7"><sup>7</sup></a> While the <samp class="file">man</samp> +package was designed for brief reference documents, the <samp class="file">ms</samp> macros +are also suitable for longer works intended for printing and possible +publication. +</p> + + +<ul class="mini-toc"> +<li><a href="#ms-basic-information" accesskey="1">Basic information</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="ms-basic-information"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Document-Structure" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="#ms-Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#ms-Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Basic-information">4.6.1.1 Basic information</h4> + +<p><samp class="file">ms</samp> documents are plain text files; prepare them with your +preferred text editor. If you’re in a hurry to start, know that +<samp class="file">ms</samp> needs one of its macros called at the beginning of a document +so that it can initialize. A <em class="dfn">macro</em> is a formatting instruction to +<samp class="file">ms</samp>. Put a macro call on a line by itself. Use ‘<samp class="samp">.PP</samp>’ if you +want your paragraph’s first line to be indented, or ‘<samp class="samp">.LP</samp>’ if you +don’t. +</p> +<p>After that, start typing normally. It is a good practice to start each +sentence on a new line, or to put two spaces after sentence-ending +punctuation, so that the formatter knows where the sentence boundaries +are. You can separate paragraphs with further paragraphing macros, or +with blank lines, and you can indent with tabs. When you need one of +the features mentioned earlier (see <a class="pxref" href="#ms"><samp class="file">ms</samp></a>), return to this part of the +manual. +</p> +<p>Format the document with the <code class="command">groff</code> command. <code class="command">nroff</code> +can be useful for previewing. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">$ editor radical.ms +$ nroff -ww -z -ms radical.ms # check for errors +$ nroff -ms radical.ms | less -R +$ groff -T ps -ms radical.ms > radical.ps +$ see radical.ps +</pre></div> +</td></tr></table> + +<p>Our <samp class="file">radical.ms</samp> document might look like this. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.LP +Radical novelties are so disturbing that they tend to be +suppressed or ignored, to the extent that even the +possibility of their existence in general is more often +denied than admitted. + +→That's what Dijkstra said, anyway. +</pre></div> +</td></tr></table> + +<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via +<code class="code">groff</code>’s <em class="dfn">registers</em> and <em class="dfn">strings</em>, which store numbers +and text, respectively. Measurements in <code class="code">groff</code> are expressed with +a suffix called a <em class="dfn">scaling unit</em>. +</p> +<dl class="table"> +<dt><code class="code">i</code></dt> +<dd><p>inches +</p> +</dd> +<dt><code class="code">c</code></dt> +<dd><p>centimeters +</p> +</dd> +<dt><code class="code">p</code></dt> +<dd><p>points (1/72 inch) +</p> +</dd> +<dt><code class="code">P</code></dt> +<dd><p>picas (1/6 inch) +</p> +</dd> +<dt><code class="code">v</code></dt> +<dd><p>vees; current vertical spacing +</p> +</dd> +<dt><code class="code">m</code></dt> +<dd><p>ems; width of an “M” in the current font +</p> +</dd> +<dt><code class="code">n</code></dt> +<dd><p>ens; one-half em +</p></dd> +</dl> + +<p>Set registers with the <code class="code">nr</code> request and strings with the <code class="code">ds</code> +request. <em class="dfn">Requests</em> are like macro calls; they go on lines by +themselves and start with the <em class="dfn">control character</em>, a dot (<code class="code">.</code>). +The difference is that they directly instruct the formatter program, +rather than the macro package. We’ll discuss a few as applicable. It +is wise to specify a scaling unit when setting any register that +represents a length, size, or distance. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.nr PS 10.5p \" Use 10.5-point type. +.ds FAM P \" Use Palatino font family. +</pre></div> +</td></tr></table> + +<p>In the foregoing, we see that <code class="code">\"</code> begins a comment. This is an +example of an <em class="dfn">escape sequence</em>, the other kind of formatting +instruction. Escape sequences can appear anywhere. They begin with the +escape character (<code class="code">\</code>) and are followed by at least one more +character. <samp class="file">ms</samp> documents +tend to use only a few of <code class="code">groff</code>’s many requests and escape +sequences; see <a class="ref" href="#Request-Index">Request Index</a> and <a class="ref" href="#Escape-Sequence-Index">Escape Sequence Index</a> or +the <cite class="cite">groff<span class="r">(7)</span></cite> man page for complete lists. +</p> +<dl class="table"> +<dt><code class="code">\"</code></dt> +<dd><p>Begin comment; ignore remainder of line. +</p> +</dd> +<dt><code class="code">\n[<var class="var">reg</var>]</code></dt> +<dd><p>Interpolate value of register <var class="var">reg</var>. +</p> +</dd> +<dt><code class="code">\*[<var class="var">str</var>]</code></dt> +<dd><p>Interpolate contents of string <var class="var">str</var>. +</p> +</dd> +<dt><code class="code">\*<var class="var">s</var></code></dt> +<dd><p>abbreviation of <code class="code">\*[<var class="var">s</var>]</code>; the name <var class="var">s</var> must be only one +character +</p> +</dd> +<dt><code class="code">\[<var class="var">char</var>]</code></dt> +<dd><p>Interpolate glyph of special character named <var class="var">char</var>. +</p> +</dd> +<dt><code class="code">\&</code></dt> +<dd><p>dummy character +</p> +</dd> +<dt><code class="code">\~</code></dt> +<dd><p>Insert an unbreakable space that is adjustable like a normal space. +</p> +</dd> +<dt><code class="code">\|</code></dt> +<dd><p>Move horizontally by one-sixth em (“thin space”). +</p></dd> +</dl> + +<p>Prefix any words that start with a dot ‘<samp class="samp">.</samp>’ or neutral apostrophe +‘<samp class="samp">'</samp>’ with <code class="code">\&</code> if they are at the beginning of an input line +(or might become that way in editing) to prevent them from being +interpreted as macro calls or requests. Suffix ‘<samp class="samp">.</samp>’, ‘<samp class="samp">?</samp>’, and +‘<samp class="samp">!</samp>’ with <code class="code">\&</code> when needed to cancel end-of-sentence detection. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">My exposure was \&.5 to \&.6 Sv of neutrons, said Dr.\& +Wallace after the criticality incident. +</pre></div> +</td></tr></table> + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="ms-Document-Structure"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Document-Control-Settings" accesskey="n" rel="next">Document Control Settings</a>, Previous: <a href="#ms-Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Document-Structure">4.6.2 Document Structure</h4> +<a class="index-entry-id" id="index-ms-macros_002c-general-structure"></a> + +<p>The <samp class="file">ms</samp> macro package expects a certain amount of structure: +a well-formed document contains at least one paragraphing or heading +macro call. Longer documents have a structure as follows. +</p> +<dl class="table"> +<dt><strong class="strong">Document type</strong></dt> +<dd><p>Calling the <code class="code">RP</code> macro at the beginning of your document puts the +document description (see below) on a cover page. Otherwise, <samp class="file">ms</samp> +places the information (if any) on the first page, followed immediately +by the body text. Some document types found in other <samp class="file">ms</samp> +implementations are specific to <abbr class="acronym">AT&T</abbr> or Berkeley, and are not +supported by <code class="code">groff</code> <samp class="file">ms</samp>. +</p> +</dd> +<dt><strong class="strong">Format and layout</strong></dt> +<dd><p>By setting registers and strings, you can configure your document’s +typeface, margins, spacing, headers and footers, and footnote +arrangement. See <a class="xref" href="#ms-Document-Control-Settings">Document Control Settings</a>. +</p> +</dd> +<dt><strong class="strong">Document description</strong></dt> +<dd><p>A document description consists of any of: a title, one or more authors’ +names and affiliated institutions, an abstract, and a date or other +identifier. See <a class="xref" href="#ms-Document-Description-Macros">Document Description Macros</a>. +</p> +</dd> +<dt><strong class="strong">Body text</strong></dt> +<dd><p>The main matter of your document follows its description (if any). +<samp class="file">ms</samp> supports highly structured text consisting of paragraphs +interspersed with multi-level headings (chapters, sections, subsections, +and so forth) and augmented by lists, footnotes, tables, diagrams, and +similar material. See <a class="xref" href="#ms-Body-Text">Body Text</a>. +</p> +</dd> +<dt><strong class="strong">Tables of contents</strong></dt> +<dd><p>Macros enable the collection of entries for a table of contents (or +index) as the material they discuss appears in the document. You then +call a macro to emit the table of contents at the end of your document. +The table of contents must necessarily follow the rest of the text since +GNU <code class="code">troff</code> is a single-pass formatter; it thus cannot determine +the page number of a division of the text until it has been set and +output. Since <samp class="file">ms</samp> was designed for the production of hard copy, +the traditional procedure was to manually relocate the pages containing +the table of contents between the cover page and the body text. Today, +page resequencing is more often done in the digital domain. An index +works similarly, but because it typically needs to be sorted after +collection, its preparation requires separate processing. +</p></dd> +</dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="ms-Document-Control-Settings"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Document-Description-Macros" accesskey="n" rel="next">Document Description Macros</a>, Previous: <a href="#ms-Document-Structure" accesskey="p" rel="prev">Document Structure</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Document-Control-Settings">4.6.3 Document Control Settings</h4> +<a class="index-entry-id" id="index-ms-macros_002c-document-control-settings"></a> + +<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via +<code class="code">groff</code> requests. To use them, you must understand how to define +registers and strings. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">reg value</var><a class="copiable-link" href='#index-_002enr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nr"></a> +<p>Set register <var class="var">reg</var> to <var class="var">value</var>. If <var class="var">reg</var> doesn’t exist, GNU +<code class="code">troff</code> creates it. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eds"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name contents</var><a class="copiable-link" href='#index-_002eds'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ds"></a> +<p>Set string <var class="var">name</var> to <var class="var">contents</var>. +</p></dd></dl> + +<p>A list of document control registers and strings follows. For any +parameter whose default is unsatisfactory, define its register or string +before calling any <samp class="file">ms</samp> macro other than <code class="code">RP</code>. +</p> +<ul class="mini-toc"> +<li><a href="#Margin-settings" accesskey="1">Margin settings</a></li> +<li><a href="#Titles-_0028headers_002c-footers_0029" accesskey="2">Titles (headers, footers)</a></li> +<li><a href="#Text-settings" accesskey="3">Text settings</a></li> +<li><a href="#Paragraph-settings" accesskey="4">Paragraph settings</a></li> +<li><a href="#Heading-settings" accesskey="5">Heading settings</a></li> +<li><a href="#Footnote-settings" accesskey="6">Footnote settings</a></li> +<li><a href="#Display-settings" accesskey="7">Display settings</a></li> +<li><a href="#Other-settings" accesskey="8">Other settings</a></li> +</ul> +<div class="unnumberedsubsubsec-level-extent" id="Margin-settings"> +<h4 class="unnumberedsubsubsec">Margin settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PO]</code></strong><a class="copiable-link" href='#index-_005cn_005bPO_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PO-_005bms_005d"></a> +<p>Defines the page offset (i.e., the left margin). +</p> +<p>Effective: next page. +</p> +<p>Default: Varies by output device and paper format; 1<span class="dmn">i</span> is used for +typesetters using U.S. letter paper, and zero for terminals. +See <a class="xref" href="#Paper-Format">Paper Format</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bLL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LL]</code></strong><a class="copiable-link" href='#index-_005cn_005bLL_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LL-_005bms_005d"></a> +<p>Defines the line length (i.e., the width of the body text). +</p> +<p>Effective: next paragraph. +</p> +<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used +for typesetters using U.S. letter paper (see <a class="pxref" href="#Paper-Format">Paper Format</a>) and +65<span class="dmn">n</span> on terminals. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bLT_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LT]</code></strong><a class="copiable-link" href='#index-_005cn_005bLT_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LT-_005bms_005d"></a> +<p>Defines the title line length (i.e., the header and footer width). This +is usually the same as <code class="code">LL</code>, but need not be. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used +for typesetters using U.S. letter paper (see <a class="pxref" href="#Paper-Format">Paper Format</a>) and +65<span class="dmn">n</span> on terminals. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bHM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HM]</code></strong><a class="copiable-link" href='#index-_005cn_005bHM_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-HM-_005bms_005d"></a> +<p>Defines the header margin height at the top of the page. +</p> +<p>Effective: next page. +</p> +<p>Default: 1<span class="dmn">i</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FM]</code></strong><a class="copiable-link" href='#index-_005cn_005bFM_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FM-_005bms_005d"></a> +<p>Defines the footer margin height at the bottom of the page. +</p> +<p>Effective: next page. +</p> +<p>Default: 1<span class="dmn">i</span>. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Titles-_0028headers_002c-footers_0029"> +<h4 class="unnumberedsubsubsec">Titles (headers, footers)</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bLH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLH_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LH-_005bms_005d"></a> +<p>Defines the text displayed in the left header position. +</p> +<p>Effective: next header. +</p> +<p>Default: empty. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bCH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCH_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CH-_005bms_005d"></a> +<p>Defines the text displayed in the center header position. +</p> +<p>Effective: next header. +</p> +<p>Default: ‘<samp class="samp">-\n[%]-</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bRH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRH_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RH-_005bms_005d"></a> +<p>Defines the text displayed in the right header position. +</p> +<p>Effective: next header. +</p> +<p>Default: empty. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bLF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLF_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LF-_005bms_005d"></a> +<p>Defines the text displayed in the left footer position. +</p> +<p>Effective: next footer. +</p> +<p>Default: empty. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bCF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCF_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CF-_005bms_005d"></a> +<p>Defines the text displayed in the center footer position. +</p> +<p>Effective: next footer. +</p> +<p>Default: empty. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bRF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRF_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RF-_005bms_005d"></a> +<p>Defines the text displayed in the right footer position. +</p> +<p>Effective: next footer. +</p> +<p>Default: empty. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Text-settings"> +<h4 class="unnumberedsubsubsec">Text settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PS-_005bms_005d-1"></a> +<p>Defines the type size of the body text. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 10<span class="dmn">p</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[VS]</code></strong><a class="copiable-link" href='#index-_005cn_005bVS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-VS-_005bms_005d"></a> +<p>Defines the vertical spacing (type size plus leading). +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 12<span class="dmn">p</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bHY_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HY]</code></strong><a class="copiable-link" href='#index-_005cn_005bHY_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-HY-_005bms_005d"></a> +<p>Defines the automatic hyphenation mode used with the <code class="code">hy</code> request. +Setting <code class="code">HY</code> to 0 is equivalent to using the <code class="code">nh</code> +request. This is a Tenth Edition Research Unix extension. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 6. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bFAM_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FAM]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFAM_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FAM-_005bms_005d"></a> +<p>Defines the font family used to typeset the document. This is a GNU +extension. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: defined by the output device; often ‘<samp class="samp">T</samp>’ (see <a class="pxref" href="#ms-Body-Text">Body Text</a>) +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Paragraph-settings"> +<h4 class="unnumberedsubsubsec">Paragraph settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PI]</code></strong><a class="copiable-link" href='#index-_005cn_005bPI_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PI-_005bms_005d"></a> +<p>Defines the indentation amount used by the <code class="code">PP</code>, <code class="code">IP</code> (unless +overridden by an optional argument), <code class="code">XP</code>, and <code class="code">RS</code> macros. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 5<span class="dmn">n</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PD]</code></strong><a class="copiable-link" href='#index-_005cn_005bPD_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PD-_005bms_005d"></a> +<p>Defines the space between paragraphs. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 0.3<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bQI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[QI]</code></strong><a class="copiable-link" href='#index-_005cn_005bQI_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-QI-_005bms_005d"></a> +<p>Defines the indentation amount used on both sides of a paragraph set +with the <code class="code">QP</code> or between the <code class="code">QS</code> and <code class="code">QE</code> macros. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 5<span class="dmn">n</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPORPHANS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PORPHANS-_005bms_005d"></a> +<p>Defines the minimum number of initial lines of any paragraph that must +be kept together to avoid isolated lines at the bottom of a page. If a +new paragraph is started close to the bottom of a page, and there is +insufficient space to accommodate <code class="code">PORPHANS</code> lines before an +automatic page break, then a page break is forced before the start of +the paragraph. This is a GNU extension. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 1. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Heading-settings"> +<h4 class="unnumberedsubsubsec">Heading settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bPSINCR_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PSINCR]</code></strong><a class="copiable-link" href='#index-_005cn_005bPSINCR_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PSINCR-_005bms_005d"></a> +<p>Defines an increment in type size to be applied to a heading at a +lesser depth than that specified in <code class="code">GROWPS</code>. The value of +<code class="code">PSINCR</code> should be specified in points with the <span class="dmn">p</span> scaling +unit and may include a fractional component; for example, ‘<samp class="samp">.nr PSINCR 1.5p</samp>’<!-- /@w --> sets a type size increment of 1.5<span class="dmn">p</span>. This is a GNU +extension. +</p> +<p>Effective: next heading. +</p> +<p>Default: 1<span class="dmn">p</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bGROWPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GROWPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGROWPS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-GROWPS-_005bms_005d"></a> +<p>Defines the heading depth above which the type size increment set by +<code class="code">PSINCR</code> becomes effective. For each heading depth less than the +value of <code class="code">GROWPS</code>, the type size is increased by <code class="code">PSINCR</code>. +Setting <code class="code">GROWPS</code> to any value less than 2 disables the +incremental heading size feature. This is a GNU extension. +</p> +<p>Effective: next heading. +</p> +<p>Default: 0. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bHORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bHORPHANS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-HORPHANS-_005bms_005d"></a> +<p>Defines the minimum number of lines of an immediately succeeding +paragraph that should be kept together with any heading introduced by +the <code class="code">NH</code> or <code class="code">SH</code> macros. If a heading is placed close to the +bottom of a page, and there is insufficient space to accommodate both +the heading and at least <code class="code">HORPHANS</code> lines of the following +paragraph, before an automatic page break, then the page break is forced +before the heading. This is a GNU extension. +</p> +<p>Effective: next paragraph. +</p> +<p>Default: 1. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d"></a> +<p>Defines the style used to print numbered headings. See <a class="xref" href="#Headings-in-ms">Headings</a>. This is a GNU extension. +</p> +<p>Effective: next heading. +</p> +<p>Default: alias of <code class="code">SN-DOT</code> +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Footnote-settings"> +<h4 class="unnumberedsubsubsec">Footnote settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FI]</code></strong><a class="copiable-link" href='#index-_005cn_005bFI_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FI-_005bms_005d"></a> +<p>Defines the footnote indentation. This is a Berkeley extension. +</p> +<p>Effective: next footnote. +</p> +<p>Default: 2<span class="dmn">n</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFF_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FF]</code></strong><a class="copiable-link" href='#index-_005cn_005bFF_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FF-_005bms_005d"></a> +<p>Defines the format of automatically numbered footnotes, +and those for which the <code class="code">FS</code> request is given a marker argument, at +the bottom of a column or page. This is a Berkeley extension. +</p><dl class="table"> +<dt><code class="code">0</code></dt> +<dd><p>Set an automatic number<a class="footnote" id="DOCF8" href="#FOOT8"><sup>8</sup></a> as a +superscript (on typesetter devices) or surrounded by square brackets (on +terminals). The footnote paragraph is indented as with <code class="code">PP</code> if +there is an <code class="code">FS</code> argument or an automatic number, and as with +<code class="code">LP</code> otherwise. This is the default. +</p> +</dd> +<dt><code class="code">1</code></dt> +<dd><p>As <code class="code">0</code>, but set the marker as regular text and follow an +automatic number with a period. +</p> +</dd> +<dt><code class="code">2</code></dt> +<dd><p>As <code class="code">1</code>, but without indentation (like <code class="code">LP</code>). +</p> +</dd> +<dt><code class="code">3</code></dt> +<dd><p>As <code class="code">1</code>, but set the footnote paragraph with the marker hanging +(like <code class="code">IP</code>). +</p></dd> +</dl> + +<p>Effective: next footnote. +</p> +<p>Default: 0. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FPS-_005bms_005d"></a> +<p>Defines the footnote type size. +</p> +<p>Effective: next footnote. +</p> +<p>Default: <code class="code">\n[PS] - 2p</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FVS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFVS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FVS-_005bms_005d"></a> +<p>Defines the footnote vertical spacing. +</p> +<p>Effective: next footnote. +</p> +<p>Default: <code class="code">\n[FPS] + 2p</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bFPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPD]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPD_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FPD-_005bms_005d"></a> +<p>Defines the footnote paragraph spacing. This is a GNU extension. +</p> +<p>Effective: next footnote. +</p> +<p>Default: <code class="code">\n[PD] / 2</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bFR_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FR]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFR_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FR-_005bms_005d"></a> +<p>Defines the ratio of the footnote line length to the current line +length. This is a GNU extension. +</p> +<p>Effective: next footnote in single-column arrangements, next page +otherwise. +</p> +<p>Default: <code class="code">11/12</code>. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Display-settings"> +<h4 class="unnumberedsubsubsec">Display settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bDD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DD]</code></strong><a class="copiable-link" href='#index-_005cn_005bDD_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DD-_005bms_005d"></a> +<p>Sets the display distance—the vertical spacing before and after a +display, a <code class="code">tbl</code> table, an <code class="code">eqn</code> equation, or a <code class="code">pic</code> +image. This is a Berkeley extension. +</p> +<p>Effective: next display boundary. +</p> +<p>Default: 0.5<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bDI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DI]</code></strong><a class="copiable-link" href='#index-_005cn_005bDI_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DI-_005bms_005d"></a> +<p>Sets the default amount by which to indent a display started with +<code class="code">DS</code> and <code class="code">ID</code> without arguments, to ‘<samp class="samp">.DS I</samp>’ without +an indentation argument, and to equations set with ‘<samp class="samp">.EQ I</samp>’. +This is a GNU extension. +</p> +<p>Effective: next indented display. +</p> +<p>Default: 0.5<span class="dmn">i</span>. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Other-settings"> +<h4 class="unnumberedsubsubsec">Other settings</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bMINGW_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[MINGW]</code></strong><a class="copiable-link" href='#index-_005cn_005bMINGW_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MINGW-_005bms_005d"></a> +<p>Defines the default minimum width between columns in a multi-column +document. This is a GNU extension. +</p> +<p>Effective: next page. +</p> +<p>Default: 2<span class="dmn">n</span>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bTC_002dMARGIN_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[TC-MARGIN]</code></strong><a class="copiable-link" href='#index-_005cn_005bTC_002dMARGIN_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TC_002dMARGIN-_005bms_005d"></a> +<p>Defines the width of the field in which page numbers are set in a table +of contents entry; the right margin thus moves inboard by this amount. +This is a GNU extension. +</p> +<p>Effective: next <code class="code">PX</code> call. +</p> +<p>Default: <code class="code">\w'000'</code> +</p></dd></dl> + + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="ms-Document-Description-Macros"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Body-Text" accesskey="n" rel="next">Body Text</a>, Previous: <a href="#ms-Document-Control-Settings" accesskey="p" rel="prev">Document Control Settings</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Document-Description-Macros">4.6.4 Document Description Macros</h4> +<a class="index-entry-id" id="index-ms-macros_002c-document-description"></a> +<a class="index-entry-id" id="index-document-description-macros_002c-_005bms_005d"></a> + +<p>Only the simplest document lacks a title.<a class="footnote" id="DOCF9" href="#FOOT9"><sup>9</sup></a> As its level of sophistication (or +complexity) increases, it tends to acquire a date of revision, +explicitly identified authors, sponsoring institutions for authors, and, +at the rarefied heights, an abstract of its content. Define these +data by calling the macros below in the order shown; <code class="code">DA</code> or +<code class="code">ND</code> can be called to set the document date (or other identifier) +at any time before (a) the abstract, if present, or (b) its information +is required in a header or footer. Use of these macros is optional, +except that <code class="code">TL</code> is mandatory if any of <code class="code">RP</code>, <code class="code">AU</code>, +<code class="code">AI</code>, or <code class="code">AB</code> is called, and <code class="code">AE</code> is mandatory if +<code class="code">AB</code> is called. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eRP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RP</code></strong> <var class="def-var-arguments">[<code class="code">no-repeat-info</code>] [<code class="code">no-renumber</code>]</var><a class="copiable-link" href='#index-_002eRP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RP-_005bms_005d"></a> +<p>Use the “report” (<abbr class="acronym">AT&T</abbr>: “released paper”) format for your +document, creating a separate cover page. The default arrangement is to +place most of the document description (title, author names and +institutions, and abstract, but not the date) at the top of the first +page. If the optional <code class="code">no-repeat-info</code> argument is given, +<samp class="file">ms</samp> produces a cover page but does not repeat any of its +information subsequently (but see the <code class="code">DA</code> macro below regarding +the date). Normally, <code class="code">RP</code> sets the page number following the cover +page to 1. Specifying the optional <code class="code">no-renumber</code> argument +suppresses this alteration. Optional arguments can occur in any order. +<code class="code">no</code> is recognized as a synonym of <code class="code">no-repeat-info</code> for +<code class="code">AT&T</code> compatibility. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eTL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TL</code></strong><a class="copiable-link" href='#index-_002eTL'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TL-_005bms_005d"></a> +<p>Specify the document title. <samp class="file">ms</samp> collects text on input lines +following this call into the title until reaching <code class="code">AU</code>, <code class="code">AB</code>, +or a heading or paragraphing macro call. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eAU"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AU</code></strong><a class="copiable-link" href='#index-_002eAU'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-AU-_005bms_005d"></a> +<p>Specify an author’s name. <samp class="file">ms</samp> collects text on input lines +following this call into the author’s name until reaching <code class="code">AI</code>, +<code class="code">AB</code>, another <code class="code">AU</code>, or a heading or paragraphing macro call. +Call it repeatedly to specify multiple authors. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eAI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AI</code></strong><a class="copiable-link" href='#index-_002eAI'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-AI-_005bms_005d"></a> +<p>Specify the preceding author’s institution. An <code class="code">AU</code> call is +usefully followed by at most one <code class="code">AI</code> call; if there are more, the +last <code class="code">AI</code> call controls. <samp class="file">ms</samp> collects text on input lines +following this call into the author’s institution until reaching +<code class="code">AU</code>, <code class="code">AB</code>, or a heading or paragraphing macro call. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> …]</var><a class="copiable-link" href='#index-_002eDA'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DA-_005bms_005d"></a> +<p>Typeset the current date, or any arguments <var class="var">x</var>, in the center +footer, and, if <code class="code">RP</code> is also called, left-aligned at the end of the +description information on the cover page. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eND"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ND</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> …]</var><a class="copiable-link" href='#index-_002eND'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ND-_005bms_005d"></a> +<p>Typeset the current date, or any arguments <var class="var">x</var>, if <code class="code">RP</code> is also +called, left-aligned at the end of the document description on the cover +page. This is <code class="code">groff</code> <samp class="file">ms</samp>’s default. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eAB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AB</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eAB'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-AB-_005bms_005d"></a> +<p>Begin the abstract. <samp class="file">ms</samp> collects text on input lines following +this call into the abstract until reaching an <code class="code">AE</code> call. By +default, <samp class="file">ms</samp> places the word “ABSTRACT” centered and in italics +above the text of the abstract. The optional argument <code class="code">no</code> +suppresses this heading. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eAE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AE</code></strong><a class="copiable-link" href='#index-_002eAE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-AE-_005bms_005d"></a> +<p>End the abstract. +</p></dd></dl> + +<p>An example document description, using a cover page, follows. +<a class="index-entry-id" id="index-cover-page-in-_005bms_005d_002c-example-markup"></a> +<a class="index-entry-id" id="index-example-markup_002c-cover-page-in-_005bms_005d"></a> +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.RP +.TL +The Inevitability of Code Bloat +in Commercial and Free Software +.AU +J.\& Random Luser +.AI +University of West Bumblefuzz +.AB +This report examines the long-term growth of the code +bases in two large, +popular software packages; +the free Emacs and the commercial Microsoft Word. +While differences appear in the type or order of +features added, +due to the different methodologies used, +the results are the same in the end. +.PP +The free software approach is shown to be superior in +that while free software can become as bloated as +commercial offerings, +free software tends to have fewer serious bugs and the +added features are more in line with user demand. +.AE + +<span class="r">…the rest of the paper…</span> +</pre></div> +</td></tr></table> + + +<hr> +</div> +<div class="subsection-level-extent" id="ms-Body-Text"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Page-Layout" accesskey="n" rel="next">Page layout</a>, Previous: <a href="#ms-Document-Description-Macros" accesskey="p" rel="prev">Document Description Macros</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Body-Text">4.6.5 Body Text</h4> +<a class="index-entry-id" id="index-ms-macros_002c-body-text"></a> + +<p>A variety of macros, registers, and strings can be used to structure and +style the body of your document. They organize your text into +paragraphs, headings, footnotes, and inclusions of material such as +tables and figures. +</p> + + +<ul class="mini-toc"> +<li><a href="#Text-settings-in-ms" accesskey="1">Text settings</a></li> +<li><a href="#Typographical-symbols-in-ms" accesskey="2">Typographical symbols</a></li> +<li><a href="#Paragraphs-in-ms" accesskey="3">Paragraphs</a></li> +<li><a href="#Headings-in-ms" accesskey="4">Headings</a></li> +<li><a href="#Typeface-and-decoration" accesskey="5">Typeface and decoration</a></li> +<li><a href="#Lists-in-ms" accesskey="6">Lists</a></li> +<li><a href="#Indented-regions-in-ms" accesskey="7">Indented regions</a></li> +<li><a href="#ms-keeps-and-displays" accesskey="8">Keeps, boxed keeps, and displays</a></li> +<li><a href="#ms-Insertions" accesskey="9">Tables, figures, equations, and references</a></li> +<li><a href="#ms-Footnotes">Footnotes</a></li> +<li><a href="#ms-language-and-localization">Language and localization</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="Text-settings-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#Typographical-symbols-in-ms" accesskey="n" rel="next">Typographical symbols</a>, Previous: <a href="#ms-Body-Text" accesskey="p" rel="prev">Body Text</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Text-settings-1">4.6.5.1 Text settings</h4> +<a class="index-entry-id" id="index-ms-macros_002c-text-settings"></a> + +<p>The <code class="code">FAM</code> string, a GNU extension, sets the font family for body +text; the default is ‘<samp class="samp">T</samp>’. The <code class="code">PS</code> and <code class="code">VS</code> registers +set the type size and vertical spacing (distance between text +baselines), respectively. The font family and type size are ignored on +terminal devices. Setting these parameters before the first call of a +heading, paragraphing, or (non-date) document description macro also +applies them to headers, footers, and (for <code class="code">FAM</code>) footnotes. +</p> +<p>Which font families are available depends on the output device; as a +convention, <code class="code">T</code> selects a serif family (“Times”), <code class="code">H</code> a +sans-serif family (“Helvetica”), and <code class="code">C</code> a monospaced family +(“Courier”). The man page for the output driver documents its font +repertoire. Consult the <cite class="cite">groff<span class="r">(1)</span></cite> man page for lists of +available output devices and their drivers. +</p> +<p>The hyphenation mode (as used by the <code class="code">hy</code> request) is set from the +<code class="code">HY</code> register. Setting <code class="code">HY</code> to ‘<samp class="samp">0</samp>’ is equivalent to +using the <code class="code">nh</code> request. This is a Tenth Edition Research Unix +extension. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Typographical-symbols-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#Paragraphs-in-ms" accesskey="n" rel="next">Paragraphs</a>, Previous: <a href="#Text-settings-in-ms" accesskey="p" rel="prev">Text settings</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Typographical-symbols">4.6.5.2 Typographical symbols</h4> +<a class="index-entry-id" id="index-ms-macros_002c-obtaining-typographical-symbols"></a> + +<p><samp class="file">ms</samp> provides a few strings to obtain typographical symbols not +easily entered with the keyboard. These and many others are available +as special character escape sequences—see the <cite class="cite">groff_char<span class="r">(7)</span></cite> +man page. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002d_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002d-_005bms_005d"></a> +<p>Interpolate an em dash. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bQ_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bQ_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Q-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bU_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[U]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bU_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-U-_005bms_005d"></a> +<p>Interpolate typographer’s quotation marks where available, and neutral +double quotes otherwise. <code class="code">\*Q</code> is the left quote and <code class="code">\*U</code> +the right. +</p></dd></dl> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="Paragraphs-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#Headings-in-ms" accesskey="n" rel="next">Headings</a>, Previous: <a href="#Typographical-symbols-in-ms" accesskey="p" rel="prev">Typographical symbols</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Paragraphs-2">4.6.5.3 Paragraphs</h4> +<a class="index-entry-id" id="index-ms-macros_002c-paragraph-handling"></a> + +<p>Paragraphing macros <em class="dfn">break</em>, or terminate, any pending output line +so that a new paragraph can begin. Several paragraph types are +available, differing in how indentation applies to them: to left, right, +or both margins; to the first output line of the paragraph, all output +lines, or all but the first. All paragraphing macro calls cause the +insertion of vertical space in the amount stored in the <code class="code">PD</code> +register, except at page or column breaks. Alternatively, a blank input +line breaks the output line and vertically spaces by one vee. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eLP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LP</code></strong><a class="copiable-link" href='#index-_002eLP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LP-_005bms_005d"></a> +<p>Set a paragraph without any (additional) indentation. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PP</code></strong><a class="copiable-link" href='#index-_002ePP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PP-_005bms_005d"></a> +<p>Set a paragraph with a first-line left indentation in the amount stored +in the <code class="code">PI</code> register. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eIP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.IP</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span> [<span class="r"><i class="slanted">width</i></span>]]</var><a class="copiable-link" href='#index-_002eIP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-IP-_005bms_005d"></a> +<p>Set a paragraph with a left indentation. The optional <var class="var">marker</var> is +not indented and is empty by default. It has several applications; +see <a class="ref" href="#Lists-in-ms">Lists</a>. <var class="var">width</var> overrides the indentation amount +stored in the <code class="code">PI</code> register; its default unit is ‘<samp class="samp">n</samp>’. Once +specified, <var class="var">width</var> applies to further <code class="code">IP</code> calls until +specified again or a heading or different paragraphing macro is called. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eQP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QP</code></strong><a class="copiable-link" href='#index-_002eQP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-QP-_005bms_005d"></a> +<p>Set a paragraph indented from both left and right margins by the amount +stored in the <code class="code">QI</code> register. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eQS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QS</code></strong><a class="copiable-link" href='#index-_002eQS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-QS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eQE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QE</code></strong><a class="copiable-link" href='#index-_002eQE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-QE-_005bms_005d"></a> +<p>Begin (<code class="code">QS</code>) and end (<code class="code">QE</code>) a region where each paragraph is +indented from both margins by the amount stored in the <code class="code">QI</code> +register. The text between <code class="code">QS</code> and <code class="code">QE</code> can be structured +further by use of other paragraphing macros. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eXP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XP</code></strong><a class="copiable-link" href='#index-_002eXP'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XP-_005bms_005d"></a> +<p>Set an “exdented” paragraph—one with a left indentation in the +amount stored in the <code class="code">PI</code> register on every line <em class="emph">except</em> the +first (also known as a hanging indent). This is a Berkeley extension. +</p></dd></dl> + +<p>The following example illustrates the use of paragraphing macros. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.NH 2 +Cases used in the 2001 study +.LP +Two software releases were considered for this report. +.PP +The first is commercial software; +the second is free. +.IP \[bu] +Microsoft Word for Windows, +starting with version 1.0 through the current version +(Word 2000). +.IP \[bu] +GNU Emacs, +from its first appearance as a standalone editor through +the current version (v20). +See [Bloggs 2002] for details. +.QP +Franklin's Law applied to software: +software expands to outgrow both RAM and disk space over +time. +.SH +Bibliography +.XP +Bloggs, Joseph R., +.I "Everyone's a Critic" , +Underground Press, March 2002. +A definitive work that answers all questions and +criticisms about the quality and usability of free +software. +</pre></div> +</td></tr></table> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="Headings-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#Typeface-and-decoration" accesskey="n" rel="next">Typeface and decoration</a>, Previous: <a href="#Paragraphs-in-ms" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Headings">4.6.5.4 Headings</h4> +<a class="index-entry-id" id="index-ms-macros_002c-headings"></a> + +<p>Use headings to create a sequential or hierarchical structure for your +document. The <samp class="file">ms</samp> macros print headings in <strong class="strong">bold</strong> using +the same font family and, by default, type size as the body text. +Headings are available with and without automatic numbering. Text on +input lines following the macro call becomes the heading’s title. Call +a paragraphing macro to end the heading text and start the section’s +content. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eNH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eNH'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-NH-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eNH-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments"><code class="t">S</code> <span class="r"><i class="slanted">heading-depth-index</i></span> …</var><a class="copiable-link" href='#index-_002eNH-1'> ¶</a></span></dt> +<dd><p>Set an automatically numbered heading. +</p> +<p><samp class="file">ms</samp> produces a numbered heading the form <var class="var">a.b.c…</var>, to +any depth desired, with the numbering of each depth increasing +automatically and being reset to zero when a more significant level is +increased. “1” is the most significant or coarsest division of +the document. Only non-zero values are output. If <var class="var">depth</var> is +omitted, it is taken to be ‘<samp class="samp">1</samp>’. +</p> +<p>If you specify <var class="var">depth</var> such that an ascending gap occurs relative to +the previous <code class="code">NH</code> call—that is, you “skip a depth”, as by +‘<samp class="samp">.NH 1</samp>’ and then ‘<samp class="samp">.NH 3</samp>’—<code class="code">groff</code> <samp class="file">ms</samp> emits a +warning on the standard error stream. +</p> +<p>Alternatively, you can give <code class="code">NH</code> a first argument of <code class="code">S</code>, +followed by integers to number the heading depths explicitly. Further +automatic numbering, if used, resumes using the specified indices as +their predecessors. +This feature is a Berkeley extension. +</p></dd></dl> + +<p>An example may be illustrative. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.NH 1 +Animalia +.NH 2 +Arthropoda +.NH 3 +Crustacea +.NH 2 +Chordata +.NH S 6 6 6 +Daimonia +.NH 1 +Plantae +</pre></div> +</td></tr></table> + +<p>The above results in numbering as follows; the vertical space that +normally precedes each heading is omitted. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">1. Animalia +1.1. Arthropoda +1.1.1. Crustacea +1.2. Chordata +6.6.6. Daimonia +7. Plantae +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dDOT_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SN_002dDOT-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dNO_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-NO-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dNO_002dDOT_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SN_002dNO_002dDOT-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SN-_005bms_005d"></a> +<p>After <code class="code">NH</code> is called, the assigned number is made available in the +strings <code class="code">SN-DOT</code> (as it appears in a printed heading with default +formatting, followed by a terminating period) and <code class="code">SN-NO-DOT</code> (with +the terminating period omitted). These are GNU extensions. +</p> +<p>You can control the style used to print numbered headings by defining an +appropriate alias for the string <code class="code">SN-STYLE</code>. By default, +<code class="code">SN-STYLE</code> is aliased to <code class="code">SN-DOT</code>. If you prefer to omit the +terminating period from numbers appearing in numbered headings, you may +define the alias as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.als SN-STYLE SN-NO-DOT +</pre></div></div> + +<p>Any such change in numbering style becomes effective from the next use +of <code class="code">NH</code> following redefinition of the alias for <code class="code">SN-STYLE</code>. +The formatted number of the current heading is available in the +<code class="code">SN</code> string (a feature first documented by Berkeley), which +facilitates its inclusion in, for example, table captions, equation +labels, and <code class="code">XS</code>/<code class="code">XA</code>/<code class="code">XE</code> table of contents entries. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eSH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eSH'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SH-_005bms_005d"></a> +<p>Set an unnumbered heading. +</p> +<p>The optional <var class="var">depth</var> argument is a GNU extension indicating the +heading depth corresponding to the <var class="var">depth</var> argument of <code class="code">NH</code>. +It matches the type size at which the heading is set to that of a +numbered heading at the same depth when the <code class="code">GROWPS</code> and +<code class="code">PSINCR</code> heading size adjustment mechanism is in effect. +</p></dd></dl> + +<p>If the <code class="code">GROWPS</code> register is set to a value greater than the +<var class="var">level</var> argument to <code class="code">NH</code> or <code class="code">SH</code>, the type size of a +heading produced by these macros increases by <code class="code">PSINCR</code> units over +the size specified by <code class="code">PS</code> multiplied by the difference of +<code class="code">GROWPS</code> and <var class="var">level</var>. The value stored in <code class="code">PSINCR</code> is +interpreted in <code class="code">groff</code> basic units; the <code class="code">p</code> scaling unit +should be employed when assigning a value specified in points. For +example, the sequence +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.nr PS 10 +.nr GROWPS 3 +.nr PSINCR 1.5p +.NH 1 +Carnivora +.NH 2 +Felinae +.NH 3 +Felis catus +.SH 2 +Machairodontinae +</pre></div> +</td></tr></table> + +<p>will cause “1. Carnivora” to be printed in 13-point text, followed by +“1.1. Felinae” in 11.5-point text, while “1.1.1. Felis catus” and +all more deeply nested heading levels will remain in the 10-point text +specified by the <code class="code">PS</code> register. “Machairodontinae” is printed at +11.5 points, since it corresponds to heading level 2. +</p> +<p>The <code class="code">HORPHANS</code> register operates in conjunction with the <code class="code">NH</code> +and <code class="code">SH</code> macros to inhibit the printing of isolated headings at the +bottom of a page; it specifies the minimum number of lines of an +immediately subsequent paragraph that must be kept on the same page as +the heading. If insufficient space remains on the current page to +accommodate the heading and this number of lines of paragraph text, a +page break is forced before the heading is printed. Any display macro +call or <code class="code">tbl</code>, <code class="code">pic</code>, or <code class="code">eqn</code> region between the heading +and the subsequent paragraph suppresses this grouping. See <a class="xref" href="#ms-keeps-and-displays">Keeps, boxed keeps, and displays</a> and <a class="ref" href="#ms-Insertions">Tables, figures, equations, and references</a>. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Typeface-and-decoration"> +<div class="nav-panel"> +<p> +Next: <a href="#Lists-in-ms" accesskey="n" rel="next">Lists</a>, Previous: <a href="#Headings-in-ms" accesskey="p" rel="prev">Headings</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Typeface-and-decoration-1">4.6.5.5 Typeface and decoration</h4> + +<p>The <samp class="file">ms</samp> macros provide a variety of ways to style text. +Attend closely to the ordering of arguments labeled <var class="var">pre</var> and +<var class="var">post</var>, which is not intuitive. Support for <var class="var">pre</var> +arguments is a GNU extension.<a class="footnote" id="DOCF10" href="#FOOT10"><sup>10</sup></a> +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eB'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-B-_005bms_005d"></a> +<p>Style <var class="var">text</var> in <b class="b">bold</b>, followed by <var class="var">post</var> in the previous +font style without intervening space, and preceded by <var class="var">pre</var> +similarly. Without arguments, <samp class="file">ms</samp> styles subsequent text in bold +until the next paragraphing, heading, or no-argument typeface macro +call. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eR-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eR-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-R-_005bms_005d"></a> +<p>As <code class="code">B</code>, but use the roman style (upright text of normal weight) +instead of bold. Argument recognition is a GNU extension. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.I</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eI'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-I-_005bms_005d"></a> +<p>As <code class="code">B</code>, but use an <i class="i">italic</i> or oblique style instead of bold. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eBI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BI</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eBI'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-BI-_005bms_005d"></a> +<p>As <code class="code">B</code>, but use a bold italic or bold oblique style instead of +upright bold. This is a Tenth Edition Research Unix extension. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eCW-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eCW-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CW-_005bms_005d"></a> +<p>As <code class="code">B</code>, but use a <code class="t">constant-width</code> (monospaced) roman typeface +instead of bold. This is a Tenth Edition Research Unix extension. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eBX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eBX'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-BX-_005bms_005d"></a> +<p>Typeset <var class="var">text</var> and draw a box around it. On terminal devices, +reverse video is used instead. If you want <var class="var">text</var> to contain space, +use unbreakable space or horizontal motion escape sequences (<code class="code">\~</code>, +<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\^</code>, <code class="code">\|</code>, <code class="code">\0</code> or <code class="code">\h</code>). +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eUL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.UL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span>]]</var><a class="copiable-link" href='#index-_002eUL'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-UL-_005bms_005d"></a> +<p>Typeset <var class="var">text</var> with an underline. <var class="var">post</var>, if present, is set +after <var class="var">text</var> with no intervening space. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eLG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LG</code></strong><a class="copiable-link" href='#index-_002eLG'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LG-_005bms_005d"></a> +<p>Set subsequent text in larger type (two points larger than the +current size) until the next type size, paragraphing, or heading macro +call. You can specify this macro multiple times to enlarge the type +size as needed. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eSM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SM</code></strong><a class="copiable-link" href='#index-_002eSM'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-SM-_005bms_005d"></a> +<p>Set subsequent text in smaller type (two points smaller than the current +size) until the next type size, paragraphing, or heading macro call. +You can specify this macro multiple times to reduce the type size as +needed. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eNL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NL</code></strong><a class="copiable-link" href='#index-_002eNL'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-NL-_005bms_005d"></a> +<p>Set subsequent text at the normal type size (the amount in the <code class="code">PS</code> +register). +</p></dd></dl> + +<p><var class="var">pre</var> and <var class="var">post</var> arguments are typically used to simplify the +attachment of punctuation to styled words. When <var class="var">pre</var> is used, +a hyphenation control escape sequence <code class="code">\%</code> that would ordinarily +start <var class="var">text</var> must start <var class="var">pre</var> instead to have the desired +effect. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">The CS course's students found one C language keyword +.CW static ) \%( +most troublesome. +</pre></div> +</td></tr></table> + +<p>The foregoing example produces output as follows. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted"><span class="r">The CS course’s students found one C language keyword (<code class="t">static</code>) +most troublesome.</span> +</pre></div> +</td></tr></table> + +<p>You can use the output line continuation escape sequence <code class="code">\c</code> to +achieve the same result (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>). It is also +portable to older <samp class="file">ms</samp> implementations. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">The CS course's students found one C language keyword +\%(\c +.CW \%static ) +most troublesome. +</pre></div> +</td></tr></table> + +<p><code class="code">groff</code> <samp class="file">ms</samp> also offers strings to begin and end super- and +subscripting. These are GNU extensions. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_007b_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[{]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007b_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_007b-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_007d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[}]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007d_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_007d-_005bms_005d"></a> +<p>Begin and end superscripting, respectively. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_003c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003c_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_003c-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_003e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003e_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_003e-_005bms_005d"></a> +<p>Begin and end subscripting, respectively. +</p></dd></dl> + +<p>Rather than calling the <code class="code">CW</code> macro, in <code class="code">groff</code> <samp class="file">ms</samp> you +might prefer to change the font family to Courier by setting the +<code class="code">FAM</code> string to ‘<samp class="samp">C</samp>’. You can then use all four style macros +above, returning to the default family (Times) with ‘<samp class="samp">.ds FAM T</samp>’. +Because changes to <code class="code">FAM</code> take effect only at the next paragraph, +<code class="code">CW</code> remains useful to “inline” a change to the font family, +similarly to the practice of this document in noting syntactical +elements of <samp class="file">ms</samp> and <code class="code">groff</code>. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Lists-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#Indented-regions-in-ms" accesskey="n" rel="next">Indented regions</a>, Previous: <a href="#Typeface-and-decoration" accesskey="p" rel="prev">Typeface and decoration</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Lists">4.6.5.6 Lists</h4> +<a class="index-entry-id" id="index-ms-macros_002c-lists"></a> + +<p>The <var class="var">marker</var> argument to the <code class="code">IP</code> macro can be employed to +present a variety of lists; for instance, you can use a bullet glyph +(<code class="code">\[bu]</code>) for unordered lists, a number (or auto-incrementing +register) for numbered lists, or a word or phrase for glossary-style or +definition lists. If you set the paragraph indentation register +<code class="code">PI</code> before calling <code class="code">IP</code>, you can later reorder the items in +the list without having to ensure that a <var class="var">width</var> argument remains +affixed to the first call. +</p> +<p>The following is an example of a bulleted list. +<a class="index-entry-id" id="index-example-markup_002c-bulleted-list-_005bms_005d"></a> +<a class="index-entry-id" id="index-bulleted-list_002c-example-markup-_005bms_005d"></a> +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.nr PI 2n +A bulleted list: +.IP \[bu] +lawyers +.IP \[bu] +guns +.IP \[bu] +money +</pre></div> +</td></tr></table> + +<div class="example"> +<div class="group"><pre class="example-preformatted">A bulleted list: + +• lawyers + +• guns + +• money +</pre></div></div> + +<p>The following is an example of a numbered list. +<a class="index-entry-id" id="index-example-markup_002c-numbered-list-_005bms_005d"></a> +<a class="index-entry-id" id="index-numbered-list_002c-example-markup-_005bms_005d"></a> +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.nr step 0 1 +.nr PI 3n +A numbered list: +.IP \n+[step] +lawyers +.IP \n+[step] +guns +.IP \n+[step] +money +</pre></div> +</td></tr></table> + +<div class="example"> +<div class="group"><pre class="example-preformatted">A numbered list: + +1. lawyers + +2. guns + +3. money +</pre></div></div> + +<p>Here we have employed the <code class="code">nr</code> request to create a register of our +own, ‘<samp class="samp">step</samp>’. We initialized it to zero and assigned it an +auto-increment of 1. Each time we use the escape sequence +‘<samp class="samp">\n+[PI]</samp>’ (note the plus sign), the formatter applies the increment +just before interpolating the register’s value. Preparing the <code class="code">PI</code> +register as well enables us to rearrange the list without the tedium of +updating macro calls. +</p> +<p>The next example illustrates a glossary-style list. +<a class="index-entry-id" id="index-example-markup_002c-glossary_002dstyle-list-_005bms_005d"></a> +<a class="index-entry-id" id="index-glossary_002dstyle-list_002c-example-markup-_005bms_005d"></a> +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">A glossary-style list: +.IP lawyers 0.4i +Two or more attorneys. +.IP guns +Firearms, +preferably large-caliber. +.IP money +Gotta pay for those +lawyers and guns! +</pre></div> +</td></tr></table> + +<div class="example"> +<div class="group"><pre class="example-preformatted">A glossary-style list: + +lawyers + Two or more attorneys. + +guns Firearms, preferably large-caliber. + +money + Gotta pay for those lawyers and guns! +</pre></div></div> + +<p>In the previous example, observe how the <code class="code">IP</code> macro places the +definition on the same line as the term if it has enough space. If this +is not what you want, there are a few workarounds we will illustrate by +modifying the example. First, you can use a <code class="code">br</code> request to force +a break after printing the term or label. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.IP guns +.br +Firearms, +</pre></div> +</td></tr></table> + +<p>Second, you could apply the <code class="code">\p</code> escape sequence to force a break. +The space following the escape sequence is important; if you omit it, +<code class="code">groff</code> prints the first word of the paragraph text on the same +line as the term or label (if it fits) <em class="emph">then</em> breaks the line. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.IP guns +\p Firearms, +</pre></div> +</td></tr></table> + +<p>Finally, you may append a horizontal motion to the marker with the +<code class="code">\h</code> escape sequence; using the same amount as the indentation will +ensure that the marker is too wide for <code class="code">groff</code> to treat it as +“fitting” on the same line as the paragraph text. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.IP guns\h'0.4i' +Firearms, +</pre></div> +</td></tr></table> + +<p>In each case, the result is the same. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">A glossary-style list: + +lawyers + Two or more attorneys. + +guns + Firearms, preferably large-caliber. + +money + Gotta pay for those lawyers and guns! +</pre></div></div> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="Indented-regions-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-keeps-and-displays" accesskey="n" rel="next">Keeps, boxed keeps, and displays</a>, Previous: <a href="#Lists-in-ms" accesskey="p" rel="prev">Lists</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Indented-regions">4.6.5.7 Indented regions</h4> + +<p>You may need to indent a region of text while otherwise formatting it +normally. Indented regions can be nested; you can change <code class="code">\n[PI]</code> +before each call to vary the amount of inset. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eRS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RS</code></strong><a class="copiable-link" href='#index-_002eRS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RS-_005bms_005d"></a> +<p>Begin a region where headings, paragraphs, and displays are indented +(further) by the amount stored in the <code class="code">PI</code> register. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eRE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RE</code></strong><a class="copiable-link" href='#index-_002eRE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RE-_005bms_005d"></a> +<p>End the (next) most recent indented region. +</p></dd></dl> + +<p>This feature enables you to easily line up text under hanging and +indented paragraphs. +<a class="index-entry-id" id="index-ms-macros_002c-nested-lists"></a> +<a class="index-entry-id" id="index-nested-lists-_005bms_005d"></a> +For example, you may wish to structure lists hierarchically. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.IP \[bu] 2 +Lawyers: +.RS +.IP \[bu] +Dewey, +.IP \[bu] +Cheatham, +and +.IP \[bu] +and Howe. +.RE +.IP \[bu] +Guns +</pre></div> +</td></tr></table> + +<div class="example"> +<div class="group"><pre class="example-preformatted">• Lawyers: + + • Dewey, + + • Cheatham, and + + • Howe. + +• Guns +</pre></div></div> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-keeps-and-displays"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Insertions" accesskey="n" rel="next">Tables, figures, equations, and references</a>, Previous: <a href="#Indented-regions-in-ms" accesskey="p" rel="prev">Indented regions</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Keeps_002c-boxed-keeps_002c-and-displays">4.6.5.8 Keeps, boxed keeps, and displays</h4> +<a class="index-entry-id" id="index-ms-macros_002c-displays"></a> +<a class="index-entry-id" id="index-ms-macros_002c-keeps"></a> +<a class="index-entry-id" id="index-keeps-_005bms_005d"></a> + +<p>On occasion, you may want to <em class="dfn">keep</em> several lines of text, or a +region of a document, together on a single page, preventing an automatic +page break within certain boundaries. This can cause a page break to +occur earlier than it normally would. For example, you may want to keep +two paragraphs together, or a paragraph that refers to a table, list, or +figure adjacent to the item it discusses. <samp class="file">ms</samp> provides the +<code class="code">KS</code> and <code class="code">KE</code> macros for this purpose. +</p> +<p>You can alternatively specify a <em class="dfn">floating keep</em>: if a keep cannot +fit on the current page, <samp class="file">ms</samp> holds its contents and +allows material following the keep (in the source document) to fill the +remainder of the current page. When the page breaks, whether by +reaching the end or <code class="code">bp</code> request, <samp class="file">ms</samp> puts the floating keep +at the beginning of the next page. This is useful for placing large +graphics or tables that do not need to appear exactly where they occur +in the source document. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eKS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KS</code></strong><a class="copiable-link" href='#index-_002eKS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-KS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KF</code></strong><a class="copiable-link" href='#index-_002eKF'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-KF-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KE</code></strong><a class="copiable-link" href='#index-_002eKE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-KE-_005bms_005d"></a> +<p><code class="code">KS</code> begins a keep, <code class="code">KF</code> a floating keep, and <code class="code">KE</code> ends a +keep of either kind. +</p></dd></dl> + +<p>As an alternative to the keep mechanism, the <code class="code">ne</code> request forces a +page break if there is not at least the amount of vertical space +specified in its argument remaining on the page (see <a class="pxref" href="#Page-Control">Page Control</a>). +One application of <code class="code">ne</code> is to reserve space on the page for a +figure or illustration to be included later. +</p> +<a class="index-entry-id" id="index-boxes-_005bms_005d"></a> +<p>A <em class="dfn">boxed keep</em> has a frame drawn around it. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eB1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B1</code></strong><a class="copiable-link" href='#index-_002eB1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-B1-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eB2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B2</code></strong><a class="copiable-link" href='#index-_002eB2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-B2-_005bms_005d"></a> +<p><code class="code">B1</code> begins a keep with a box drawn around it. <code class="code">B2</code> ends a +boxed keep. +</p></dd></dl> + +<p>Boxed keep macros cause breaks; if you need to box a word or phrase +within a line, see the <code class="code">BX</code> macro in <a class="ref" href="#Typeface-and-decoration">Typeface and decoration</a>. +Box lines are drawn as close as possible to the text they enclose so +that they are usable within paragraphs. If you wish to box one or more +paragraphs, you may improve the appearance by calling <code class="code">B1</code> after +the first paragraphing macro, and by adding a small amount of vertical +space before calling <code class="code">B2</code>. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.LP +.B1 +.I Warning: +Happy Fun Ball may suddenly accelerate to dangerous +speeds. +.sp \n[PD]/2 \" space by half the inter-paragraph distance +.B2 +</pre></div> +</td></tr></table> + +<p>If you want a boxed keep to float, you will need to enclose the +<code class="code">B1</code> and <code class="code">B2</code> calls within a pair of <code class="code">KF</code> and <code class="code">KE</code> +calls. +</p> +<a class="index-entry-id" id="index-displays-_005bms_005d"></a> +<p><em class="dfn">Displays</em> turn off filling; lines of verse or program code are +shown with their lines broken as in the source document without +requiring <code class="code">br</code> requests between lines. Displays can be kept on a +single page or allowed to break across pages. The <code class="code">DS</code> macro +begins a kept display of the layout specified in its first argument; +non-kept displays are begun with dedicated macros corresponding to their +layout. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">L</code></var><a class="copiable-link" href='#index-_002eDS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eLD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LD</code></strong><a class="copiable-link" href='#index-_002eLD'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-LD-_005bms_005d"></a> +<p>Begin (<code class="code">DS</code>: kept) left-aligned display. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDS-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments">[<code class="t">I</code> [<span class="r"><i class="slanted">indent</i></span>]]</var><a class="copiable-link" href='#index-_002eDS-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DS-_005bms_005d-1"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eID"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ID</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eID'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ID-_005bms_005d"></a> +<p>Begin (<code class="code">DS</code>: kept) display indented by <var class="var">indent</var> if specified, +and by the amount of the <code class="code">DI</code> register otherwise. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDS-2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">B</code></var><a class="copiable-link" href='#index-_002eDS-2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DS-_005bms_005d-2"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eBD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BD</code></strong><a class="copiable-link" href='#index-_002eBD'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-BD-_005bms_005d"></a> +<p>Begin a (<code class="code">DS</code>: kept) a block display: the entire display is +left-aligned, but indented such that the longest line in the display +is centered on the page. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDS-3"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">C</code></var><a class="copiable-link" href='#index-_002eDS-3'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DS-_005bms_005d-3"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eCD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CD</code></strong><a class="copiable-link" href='#index-_002eCD'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-CD-_005bms_005d"></a> +<p>Begin a (<code class="code">DS</code>: kept) centered display: each line in the display +is centered. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDS-4"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">R</code></var><a class="copiable-link" href='#index-_002eDS-4'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DS-_005bms_005d-4"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eRD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RD</code></strong><a class="copiable-link" href='#index-_002eRD'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-RD-_005bms_005d"></a> +<p>Begin a (<code class="code">DS</code>: kept) right-aligned display. This is a GNU +extension. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eDE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DE</code></strong><a class="copiable-link" href='#index-_002eDE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-DE-_005bms_005d"></a> +<p>End any display. +</p></dd></dl> + +<p>The distance stored in the <code class="code">DD</code> register is inserted before and +after each pair of display macros; this is a Berkeley extension. In +<code class="code">groff</code> <samp class="file">ms</samp>, this distance replaces any adjacent +inter-paragraph distance or subsequent spacing prior to a section +heading. The <code class="code">DI</code> register is a GNU extension; its value is an +indentation applied to displays created with ‘<samp class="samp">.DS</samp>’ and ‘<samp class="samp">.ID</samp>’ +without arguments, to ‘<samp class="samp">.DS I</samp>’ without an indentation argument, and +to indented equations set with ‘<samp class="samp">.EQ</samp>’. Changes to either register +take effect at the next display boundary. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-Insertions"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Footnotes" accesskey="n" rel="next">Footnotes</a>, Previous: <a href="#ms-keeps-and-displays" accesskey="p" rel="prev">Keeps, boxed keeps, and displays</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Tables_002c-figures_002c-equations_002c-and-references">4.6.5.9 Tables, figures, equations, and references</h4> +<a class="index-entry-id" id="index-ms-macros_002c-tables"></a> +<a class="index-entry-id" id="index-ms-macros_002c-figures"></a> +<a class="index-entry-id" id="index-ms-macros_002c-equations"></a> +<a class="index-entry-id" id="index-ms-macros_002c-references"></a> +<a class="index-entry-id" id="index-tables-_005bms_005d"></a> +<a class="index-entry-id" id="index-figures-_005bms_005d"></a> +<a class="index-entry-id" id="index-equations-_005bms_005d"></a> +<a class="index-entry-id" id="index-references-_005bms_005d"></a> + +<p>The <samp class="file">ms</samp> package is often used with the <code class="code">tbl</code>, <code class="code">pic</code>, +<code class="code">eqn</code>, and <code class="code">refer</code> preprocessors. +<a class="index-entry-id" id="index-tbl"></a> +<a class="index-entry-id" id="index-pic"></a> +<a class="index-entry-id" id="index-eqn"></a> +<a class="index-entry-id" id="index-refer"></a> +Mark text meant for preprocessors by enclosing it in pairs of tokens +as follows, with nothing between the dot and the macro name. The +preprocessors match these tokens only at the start of an input line. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eTS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TS</code></strong> <var class="def-var-arguments">[<code class="code">H</code>]</var><a class="copiable-link" href='#index-_002eTS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eTE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TE</code></strong><a class="copiable-link" href='#index-_002eTE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TE-_005bms_005d"></a> +<p>Demarcate a table to be processed by the <code class="code">tbl</code> preprocessor. The +optional argument <code class="code">H</code> to <code class="code">TS</code> instructs <samp class="file">ms</samp> to +repeat table rows (often column headings) at the top of each new page +the table spans, if applicable; calling the <code class="code">TH</code> macro marks the +end of such rows. The GNU <cite class="cite">tbl<span class="r">(1)</span></cite> man page provides a +comprehensive reference to the preprocessor and offers examples of its +use. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PS</code></strong><a class="copiable-link" href='#index-_002ePS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PE</code></strong><a class="copiable-link" href='#index-_002ePE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PE-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PF</code></strong><a class="copiable-link" href='#index-_002ePF'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PF-_005bms_005d"></a> +<p><code class="code">PS</code> begins a picture to be processed by the <code class="command">gpic</code> +preprocessor; either of <code class="code">PE</code> or <code class="code">PF</code> ends it, the latter with +“flyback” to the vertical position at its top. You can create +<code class="code">pic</code> input manually or with a program such as <code class="code">xfig</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eEQ"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EQ</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">align</i></span> [<span class="r"><i class="slanted">label</i></span>]]</var><a class="copiable-link" href='#index-_002eEQ'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EQ-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EN</code></strong><a class="copiable-link" href='#index-_002eEN'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EN-_005bms_005d"></a> +<p>Demarcate an equation to be processed by the <code class="code">eqn</code> preprocessor. +The equation is centered by default; <var class="var">align</var> can be ‘<samp class="samp">C</samp>’, +‘<samp class="samp">L</samp>’, or ‘<samp class="samp">I</samp>’ to (explicitly) center, left-align, or indent it +by the amount stored in the <code class="code">DI</code> register, respectively. If +specified, <var class="var">label</var> is set right-aligned. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002e_005b"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.[</code></strong><a class="copiable-link" href='#index-_002e_005b'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005b-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002e_005d"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.]</code></strong><a class="copiable-link" href='#index-_002e_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005d-_005bms_005d"></a> +<p>Demarcate a bibliographic citation to be processed by the <code class="code">refer</code> +preprocessor. The GNU <cite class="cite">refer<span class="r">(1)</span></cite> man page provides a +comprehensive reference to the preprocessor and the format of its +bibliographic database. Type ‘<samp class="samp">man refer</samp>’ at the command line to +view it. +</p></dd></dl> + +<p>When <code class="code">refer</code> emits collected references (as might be done on a +“Works Cited” page), it interpolates the <code class="code">REFERENCES</code> string as +an unnumbered heading (<code class="code">SH</code>). +</p> +<a class="index-entry-id" id="index-table_002c-multi_002dpage_002c-example-_005bms_005d"></a> +<a class="index-entry-id" id="index-multi_002dpage-table-example-_005bms_005d"></a> +<p>The following is an example of how to set up a table that may print +across two or more pages. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.TS H +allbox; +Cb | Cb . +Part→Description +_ +.TH +.T& +GH-1978→Fribulating gonkulator +<span class="r">…the rest of the table follows…</span> +.TE +</pre></div> +</td></tr></table> + +<p>Attempting to place a multi-page table inside a keep can lead to +unpleasant results, particularly if the <code class="code">tbl</code> <code class="code">allbox</code> option +is used. +</p> +<a class="index-entry-id" id="index-equation-example-_005bms_005d"></a> +<p>Mathematics can be typeset using the language of the <code class="code">eqn</code> +preprocessor. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.EQ C (\*[SN-NO-DOT]a) +p ~ = ~ q sqrt { ( 1 + ~ ( x / q sup 2 ) } +.EN +</pre></div> +</td></tr></table> + +<p>This input formats a labelled equation. We used the <code class="code">SN-NO-DOT</code> +string to base the equation label on the current heading number, giving +us more flexibility to reorganize the document. +</p> +<p>Use <code class="command">groff</code> options to run preprocessors on the input: +<samp class="option">-e</samp> for <code class="command">geqn</code>, <samp class="option">-p</samp> for <code class="command">gpic</code>, +<samp class="option">-R</samp> for <code class="command">grefer</code>, and <samp class="option">-t</samp> for <code class="command">gtbl</code>. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-Footnotes"> +<div class="nav-panel"> +<p> +Previous: <a href="#ms-Insertions" accesskey="p" rel="prev">Tables, figures, equations, and references</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Footnotes">4.6.5.10 Footnotes</h4> +<a class="index-entry-id" id="index-ms-macros_002c-footnotes"></a> +<a class="index-entry-id" id="index-footnotes-_005bms_005d"></a> + +<a class="index-entry-id" id="index-footnote-marker-_005bms_005d"></a> +<a class="index-entry-id" id="index-marker_002c-footnote-_005bms_005d"></a> +<p>A footnote is typically anchored to a place in the text with a +<em class="dfn">marker</em>, which is a small integer, a symbol such as a dagger, or +arbitrary user-specified text. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[*]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002a_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002a-_005bms_005d"></a> +<p>Place an <em class="dfn">automatic number</em>, an automatically generated numeric +footnote marker, in the text. Each time this string is interpolated, +the number it produces increments by one. Automatic numbers start at 1. +This is a Berkeley extension. +</p></dd></dl> + +<p>Enclose the footnote text in <code class="code">FS</code> and <code class="code">FE</code> macro calls to set +it at the nearest available “foot”, or bottom, of a text column or +page. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eFS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span>]</var><a class="copiable-link" href='#index-_002eFS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eFE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FE</code></strong><a class="copiable-link" href='#index-_002eFE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-FE-_005bms_005d"></a> +<p>Begin (<code class="code">FS</code>) and end (<code class="code">FE</code>) a footnote. <code class="code">FS</code> calls +<code class="code">FS-MARK</code> with any supplied <var class="var">marker</var> argument, which is then +also placed at the beginning of the footnote text. If <var class="var">marker</var> is +omitted, the next pending automatic footnote number enqueued by +interpolation of the <code class="code">*</code> string is used, and if none exists, +nothing is prefixed. +</p></dd></dl> + +<p>You may not desire automatically numbered footnotes in spite of their +convenience. You can indicate a footnote with a symbol or other text by +specifying its marker at the appropriate place (for example, by using +<code class="code">\[dg]</code> for the dagger glyph) <em class="emph">and</em> as an argument to the +<code class="code">FS</code> macro. Such manual marks should be repeated as arguments to +<code class="code">FS</code> or as part of the footnote text to disambiguate their +correspondence. You may wish to use <code class="code">\*{</code> and <code class="code">\*}</code> to +superscript the marker at the anchor point, in the footnote text, or +both. +</p> +<p><code class="code">groff</code> <samp class="file">ms</samp> provides a hook macro, <code class="code">FS-MARK</code>, for +user-determined operations to be performed when the <code class="code">FS</code> macro is +called. It is passed the same arguments as <code class="code">FS</code> itself. An +application of <code class="code">FS-MARK</code> is anchor placement for a hyperlink +reference, so that a footnote can link back to its referential +context.<a class="footnote" id="DOCF11" href="#FOOT11"><sup>11</sup></a> By default, this macro has an empty definition. +<code class="code">FS-MARK</code> is a GNU extension. +</p> +<a class="index-entry-id" id="index-footnotes_002c-and-keeps-_005bms_005d"></a> +<a class="index-entry-id" id="index-keeps_002c-and-footnotes-_005bms_005d"></a> +<a class="index-entry-id" id="index-footnotes_002c-and-displays-_005bms_005d"></a> +<a class="index-entry-id" id="index-displays_002c-and-footnotes-_005bms_005d"></a> +<p>Footnotes can be safely used within keeps and displays, but you should +avoid using automatically numbered footnotes within floating keeps. You +can place a second <code class="code">\**</code> interpolation between a <code class="code">\**</code> and its +corresponding <code class="code">FS</code> call as long as each <code class="code">FS</code> call occurs +<em class="emph">after</em> the corresponding <code class="code">\**</code> and occurrences of <code class="code">FS</code> +are in the same order as corresponding occurrences of <code class="code">\**</code>. +</p> +<p>Footnote text is formatted as paragraphs are, using analogous +parameters. The registers <code class="code">FI</code>, <code class="code">FPD</code>, <code class="code">FPS</code>, and +<code class="code">FVS</code> correspond to <code class="code">PI</code>, <code class="code">PD</code>, <code class="code">PS</code>, and <code class="code">CS</code>, +respectively; <code class="code">FPD</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> are GNU extensions. +</p> +<p>The <code class="code">FF</code> register controls the formatting of automatically numbered +footnote paragraphs and those for which <code class="code">FS</code> is given a marker +argument. See <a class="xref" href="#ms-Document-Control-Settings">Document Control Settings</a>. +</p> +<p>The default footnote line length is 11/12ths of the normal line length +for compatibility with the expectations of historical <samp class="file">ms</samp> +documents; you may wish to set the <code class="code">FR</code> string to ‘<samp class="samp">1</samp>’ to align +with contemporary typesetting practices. In the +past,<a class="footnote" id="DOCF12" href="#FOOT12"><sup>12</sup></a> an <code class="code">FL</code> register +was used for the line length in footnotes; however, setting this +register at document initialization time had no effect on the footnote +line length in multi-column arrangements.<a class="footnote" id="DOCF13" href="#FOOT13"><sup>13</sup></a> +</p> +<p><code class="code">FR</code> should be used in preference to the old <code class="code">FL</code> register in +contemporary documents. The footnote line length is effectively +computed as ‘<samp class="samp"><i class="slanted">column-width</i> * \*[FR]</samp>’. If an absolute +footnote line length is required, recall that arithmetic expressions in +<code class="code">roff</code> input are evaluated strictly from left to right, with no +operator precedence (parentheses are honored). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds FR 0+3i \" Set footnote line length to 3 inches. +</pre></div></div> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-language-and-localization"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Page-Layout" accesskey="n" rel="next">Page layout</a>, Previous: <a href="#ms-Footnotes" accesskey="p" rel="prev">Footnotes</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Language-and-localization">4.6.5.11 Language and localization</h4> +<a class="index-entry-id" id="index-ms-macros_002c-language"></a> +<a class="index-entry-id" id="index-ms-macros_002c-localization"></a> +<a class="index-entry-id" id="index-language-_005bms_005d"></a> +<a class="index-entry-id" id="index-localization-_005bms_005d"></a> + +<p><code class="code">groff</code> <samp class="file">ms</samp> provides several strings that you can customize +for your own purposes, or redefine to adapt the macro package to +languages other than English. It is already localized for +Czech, German, French, Italian, and Swedish. Load the desired +localization macro package after <samp class="file">ms</samp>; see the +<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">$ groff -ms -mfr bienvenue.ms +</pre></div> +</td></tr></table> + +<p>The following strings are available. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bREFERENCES_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[REFERENCES]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bREFERENCES_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-REFERENCES-_005bms_005d"></a> +<p>Contains the string printed at the beginning of a references +(bibliography) page produced with GNU <cite class="cite">refer<span class="r">(1)</span></cite>. The default +is ‘<samp class="samp">References</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bABSTRACT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ABSTRACT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bABSTRACT_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ABSTRACT-_005bms_005d"></a> +<p>Contains the string printed at the beginning of the abstract. The +default is ‘<samp class="samp">\f[I]ABSTRACT\f[]</samp>’; it includes font selection escape +sequences to set the word in italics. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bTOC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[TOC]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTOC_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TOC-_005bms_005d"></a> +<p>Contains the string printed at the beginning of the table of contents. +The default is ‘<samp class="samp">Table of Contents</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bMONTH1_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH1]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH1_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH1-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH2_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH2]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH2_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH2-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH3_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH3-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH4_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH4]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH4_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH4-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH5_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH5]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH5_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH5-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH6_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH6]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH6_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH6-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH7_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH7]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH7_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH7-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH8_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH8-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH9_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH9]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH9_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH9-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH10_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH10]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH10_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH10-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH11_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH11]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH11_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH11-_005bms_005d"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH12_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH12]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH12_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MONTH12-_005bms_005d"></a> +<p>Contain the full names of the calendar months. The defaults are in +English: ‘<samp class="samp">January</samp>’, ‘<samp class="samp">February</samp>’, and so on. +</p></dd></dl> + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="ms-Page-Layout"> +<div class="nav-panel"> +<p> +Next: <a href="#Differences-from-AT_0026T-ms" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="#ms-Body-Text" accesskey="p" rel="prev">Body Text</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Page-layout">4.6.6 Page layout</h4> +<a class="index-entry-id" id="index-ms-macros_002c-page-layout"></a> +<a class="index-entry-id" id="index-page-layout-_005bms_005d"></a> + +<p><samp class="file">ms</samp>’s default page layout arranges text in a single column with +the page number between hyphens centered in a header on each page except +the first, and produces no footers. You can customize this arrangement. +</p> + + +<ul class="mini-toc"> +<li><a href="#ms-Headers-and-Footers" accesskey="1">Headers and footers</a></li> +<li><a href="#Tab-Stops-in-ms" accesskey="2">Tab stops</a></li> +<li><a href="#ms-Margins" accesskey="3">Margins</a></li> +<li><a href="#ms-Multiple-Columns" accesskey="4">Multiple columns</a></li> +<li><a href="#ms-TOC" accesskey="5">Creating a table of contents</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="ms-Headers-and-Footers"> +<div class="nav-panel"> +<p> +Next: <a href="#Tab-Stops-in-ms" accesskey="n" rel="next">Tab stops</a>, Previous: <a href="#ms-Page-Layout" accesskey="p" rel="prev">Page layout</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Headers-and-footers">4.6.6.1 Headers and footers</h4> +<a class="index-entry-id" id="index-ms-macros_002c-headers"></a> +<a class="index-entry-id" id="index-ms-macros_002c-footers"></a> +<a class="index-entry-id" id="index-headers-_005bms_005d"></a> +<a class="index-entry-id" id="index-footers-_005bms_005d"></a> + +<p>There are multiple ways to produce headers and footers. One is to +define the strings <code class="code">LH</code>, <code class="code">CH</code>, and <code class="code">RH</code> to set the left, +center, and right headers, respectively; and <code class="code">LF</code>, <code class="code">CF</code>, and +<code class="code">RF</code> to set the left, center, and right footers. This approach +suffices for documents that do not distinguish odd- and even-numbered +pages. +</p> +<p>Another method is to call macros that set headers or footers for odd- or +even-numbered pages. Each such macro takes a delimited argument +separating the left, center, and right header or footer texts from each +other. You can replace the neutral apostrophes (<code class="code">'</code>) shown below +with any character not appearing in the header or footer text. These +macros are Berkeley extensions. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eOH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOH'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-OH-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEH'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EH-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eOF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOF'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-OF-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEF'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EF-_005bms_005d"></a> +<p>The <code class="code">OH</code> and <code class="code">EH</code> macros define headers for odd- (recto) +and even-numbered (verso) pages, respectively; the <code class="code">OF</code> and +<code class="code">EF</code> macros define footers for them. +</p></dd></dl> + +<p>With either method, a percent sign <code class="code">%</code> in header or footer text is +replaced by the current page number. By default, <samp class="file">ms</samp> places no +header on a page numbered “1” (regardless of its number format). +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eP1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.P1</code></strong><a class="copiable-link" href='#index-_002eP1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-P1-_005bms_005d"></a> +<p>Typeset the header even on page 1. To be effective, this macro +must be called before the header trap is sprung on any page numbered +“1”; in practice, unless your page numbering is unusual, this means +that you should call it early, before <code class="code">TL</code> or any heading or +paragraphing macro. This is a Berkeley extension. +</p></dd></dl> + +<p>For even greater flexibility, <samp class="file">ms</samp> is designed to permit the +redefinition of the macros that are called when the <code class="code">groff</code> traps +that ordinarily cause the headers and footers to be output are sprung. +<code class="code">PT</code> (“page trap”) is called by <samp class="file">ms</samp> when the header is to +be written, and <code class="code">BT</code> (“bottom trap”) when the footer is to be. +The <code class="code">groff</code> page location trap that <samp class="file">ms</samp> sets up to format the +header also calls the (normally undefined) <code class="code">HD</code> macro after +<code class="code">PT</code>; you can define <code class="code">HD</code> if you need additional processing +after setting the header (for example, to draw a line below it). +The <code class="code">HD</code> hook is a Berkeley extension. Any such macros you +(re)define must implement any desired specialization for odd-, even-, or +first numbered pages. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Tab-Stops-in-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Margins" accesskey="n" rel="next">Margins</a>, Previous: <a href="#ms-Headers-and-Footers" accesskey="p" rel="prev">Headers and footers</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Tab-stops">4.6.6.2 Tab stops</h4> + +<p>Use the <code class="code">ta</code> request to define tab stops as needed. See <a class="xref" href="#Tabs-and-Fields">Tabs and Fields</a>. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eTA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TA</code></strong><a class="copiable-link" href='#index-_002eTA'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TA-_005bms_005d"></a> +<p>Reset the tab stops to the <samp class="file">ms</samp> default (every 5 ens). +Redefine this macro to create a different set of default tab stops. +</p></dd></dl> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-Margins"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Multiple-Columns" accesskey="n" rel="next">Multiple columns</a>, Previous: <a href="#Tab-Stops-in-ms" accesskey="p" rel="prev">Tab stops</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Margins">4.6.6.3 Margins</h4> +<a class="index-entry-id" id="index-ms-macros_002c-margins"></a> + +<p>Control margins using the registers summarized in “Margin settings” in +<a class="ref" href="#ms-Document-Control-Settings">Document Control Settings</a> above. There is no setting for the +right margin; the combination of page offset <code class="code">\n[PO]</code> and line +length <code class="code">\n[LL]</code> determines it. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-Multiple-Columns"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-TOC" accesskey="n" rel="next">Creating a table of contents</a>, Previous: <a href="#ms-Margins" accesskey="p" rel="prev">Margins</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Multiple-columns">4.6.6.4 Multiple columns</h4> +<a class="index-entry-id" id="index-ms-macros_002c-multiple-columns"></a> +<a class="index-entry-id" id="index-multiple-columns-_005bms_005d"></a> + +<p><samp class="file">ms</samp> can set text in as many columns as reasonably fit on the page. +The following macros force a page break if a multi-column layout is +active when they are called. The <code class="code">MINGW</code> register stores the +default minimum gutter width; it is a GNU extension. When multiple +columns are in use, keeps and the <code class="code">HORPHANS</code> and <code class="code">PORPHANS</code> +registers work with respect to column breaks instead of page breaks. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002e1C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.1C</code></strong><a class="copiable-link" href='#index-_002e1C'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-1C-_005bms_005d"></a> +<p>Arrange page text in a single column (the default). +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002e2C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.2C</code></strong><a class="copiable-link" href='#index-_002e2C'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-2C-_005bms_005d"></a> +<p>Arrange page text in two columns. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eMC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MC</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">column-width</i></span> [<span class="r"><i class="slanted">gutter-width</i></span>]]</var><a class="copiable-link" href='#index-_002eMC'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-MC-_005bms_005d"></a> +<p>Arrange page text in multiple columns. If you specify no arguments, it +is equivalent to the <code class="code">2C</code> macro. Otherwise, <var class="var">column-width</var> is +the width of each column and <var class="var">gutter-width</var> is the minimum distance +between columns. +</p></dd></dl> + + +<hr> +</div> +<div class="subsubsection-level-extent" id="ms-TOC"> +<div class="nav-panel"> +<p> +Next: <a href="#Differences-from-AT_0026T-ms" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="#ms-Multiple-Columns" accesskey="p" rel="prev">Multiple columns</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Creating-a-table-of-contents">4.6.6.5 Creating a table of contents</h4> +<a class="index-entry-id" id="index-ms-macros_002c-creating-table-of-contents"></a> +<a class="index-entry-id" id="index-table-of-contents_002c-creating-_005bms_005d"></a> + +<p>Because <code class="code">roff</code> formatters process their input in a single pass, +material on page 50, for example, cannot influence what appears on +page 1—this poses a challenge for a table of contents at its +traditional location in front matter, if you wish to avoid manually +maintaining it. <samp class="file">ms</samp> enables the collection of material to be +presented in the table of contents as it appears, saving its page number +along with it, and then emitting the collected contents on demand toward +the end of the document. The table of contents can then be resequenced +to its desired location by physically rearranging the pages of a printed +document, or as part of post-processing—with a <cite class="cite">sed<span class="r">(1)</span></cite> +script to reorder the pages in <code class="command">troff</code>’s output, with +<cite class="cite">pdfjam<span class="r">(1)</span></cite>, or with <cite class="cite">gropdf<span class="r">(1)</span></cite>’s +‘<samp class="samp">.pdfswitchtopage</samp>’ feature, for example. +</p> +<p>Define an entry to appear in the table of contents by bracketing its +text between calls to the <code class="code">XS</code> and <code class="code">XE</code> macros. A typical +application is to call them immediately after <code class="code">NH</code> or <code class="code">SH</code> and +repeat the heading text within them. The <code class="code">XA</code> macro, used within +‘<samp class="samp">.XS</samp>’/‘<samp class="samp">.XE</samp>’ pairs, supplements an entry—for instance, when +it requires multiple output lines, whether because a heading is too long +to fit or because style dictates that page numbers not be repeated. You +may wish to indent the text thus wrapped to correspond to its heading +depth; this can be done in the entry text by prefixing it with tabs or +horizontal motion escape sequences, or by providing a second argument to +the <code class="code">XA</code> macro. <code class="code">XS</code> and <code class="code">XA</code> automatically associate +the page number where they are called with the text following them, but +they accept arguments to override this behavior. At the end of the +document, call <code class="code">TC</code> or <code class="code">PX</code> to emit the table of contents; +<code class="code">TC</code> resets the page number to ‘<samp class="samp">i</samp>’ (Roman numeral one), and +then calls <code class="code">PX</code>. All of these macros are Berkeley extensions. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eXS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002eXS'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XS-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]</var><a class="copiable-link" href='#index-_002eXA'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XA-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XE</code></strong><a class="copiable-link" href='#index-_002eXE'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XE-_005bms_005d"></a> +<p>Begin, supplement, and end a table of contents entry. Each entry is +associated with <var class="var">page-number</var> (otherwise the current page number); a +<var class="var">page-number</var> of ‘<samp class="samp">no</samp>’ prevents a leader and page number from +being emitted for that entry. Use of <code class="code">XA</code> within +<code class="code">XS</code>/<code class="code">XE</code> is optional; it can be repeated. If +<var class="var">indentation</var> is present, a supplemental entry is indented by that +amount; ens are assumed if no unit is indicated. Text on input lines +between <code class="code">XS</code> and <code class="code">XE</code> is stored for later recall by <code class="code">PX</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002ePX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PX</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002ePX'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PX-_005bms_005d"></a> +<p>Switch to single-column layout. Unless <code class="code">no</code> is specified, center +and interpolate the <code class="code">TOC</code> string in bold and two points larger than +the body text. Emit the table of contents entries. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eTC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TC</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eTC'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TC-_005bms_005d"></a> +<p>Set the page number to 1, the page number format to lowercase Roman +numerals, and call <code class="code">PX</code> (with a <code class="code">no</code> argument, if present). +</p></dd></dl> + +<p>Here’s an example of typical <samp class="file">ms</samp> table of contents preparation. +We employ horizontal escape sequences <code class="code">\h</code> to indent the entries by +sectioning depth. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.NH 1 +Introduction +.XS +Introduction +.XE +<span class="r">…</span> +.NH 2 +Methodology +.XS +\h'2n'Methodology +.XA +\h'4n'Fassbinder's Approach +\h'4n'Kahiu's Approach +.XE +<span class="r">…</span> +.NH 1 +Findings +.XS +Findings +.XE +<span class="r">…</span> +.TC +</pre></div> +</td></tr></table> + +<p>The remaining features in this subsubsection are GNU extensions. +<code class="code">groff</code> <samp class="file">ms</samp> obviates the need to repeat heading text after +<code class="code">XS</code> calls. Call <code class="code">XN</code> and <code class="code">XH</code> after <code class="code">NH</code> and +<code class="code">SH</code>, respectively. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eXN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XN-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XH-_005bms_005d"></a> +<p>Format <var class="var">heading-text</var> and create a corresponding table of contents +entry. <code class="code">XN</code> computes the indentation from the depth of the +preceding <code class="code">NH</code> call; <code class="code">XH</code> requires a <var class="var">depth</var> argument to +do so. +</p></dd></dl> + +<p><code class="code">groff</code> <samp class="file">ms</samp> encourages customization of table of contents +entry production. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN_002dREPLACEMENT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XN_002dREPLACEMENT-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dREPLACEMENT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XH_002dREPLACEMENT-_005bms_005d"></a> +<p>These hook macros implement <code class="code">XN</code> and <code class="code">XH</code>, respectively. +They call <code class="code">XN-INIT</code> and pass their <var class="var">heading-text</var> arguments to +<code class="code">XH-UPDATE-TOC</code>. +</p></dd></dl> + +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dINIT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-INIT</code></strong><a class="copiable-link" href='#index-_002eXN_002dINIT'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XN_002dINIT-_005bms_005d"></a> +</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dUPDATE_002dTOC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-UPDATE-TOC</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dUPDATE_002dTOC'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-XH_002dUPDATE_002dTOC-_005bms_005d"></a> +<p>The <code class="code">XN-INIT</code> hook macro does nothing by default. +<code class="code">XH-UPDATE-TOC</code> brackets <var class="var">heading-text</var> with <code class="code">XS</code> and +<code class="code">XE</code> calls, indenting it by 2 ens per level of <var class="var">depth</var> beyond +the first. +</p></dd></dl> + +<p>We could therefore produce a table of contents similar to that in the +previous example with fewer macro calls. (The difference is that this +input follows the “Approach” entries with leaders and page numbers.) +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.NH 1 +.XN Introduction +<span class="r">…</span> +.NH 2 +.XN Methodology +.XH 3 "Fassbinder's Approach" +.XH 3 "Kahiu's Approach" +<span class="r">…</span> +.NH 1 +.XN Findings +<span class="r">…</span> +</pre></div> +</td></tr></table> + +<p>To get the section number of the numbered headings into the table of +contents entries, we might define <code class="code">XN-REPLACEMENT</code> as follows. +(We obtain the heading depth from <code class="code">groff</code> <samp class="file">ms</samp>’s internal +register <code class="code">nh*hl</code>.) +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.de XN-REPLACEMENT +.XN-INIT +.XH-UPDATE-TOC \\n[nh*hl] \\$@ +\&\\*[SN] \\$* +.. +</pre></div> +</td></tr></table> + +<p>You can change the style of the leader that bridges each table of +contents entry with its page number; define the <code class="code">TC-LEADER</code> special +character by using the <code class="code">char</code> request. A typical leader combines +the dot glyph ‘<samp class="samp">.</samp>’ with a horizontal motion escape sequence to +spread the dots. The width of the page number field is stored in the +<code class="code">TC-MARGIN</code> register. +</p> + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="Differences-from-AT_0026T-ms"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Naming-Conventions" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="#ms-Page-Layout" accesskey="p" rel="prev">Page layout</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Differences-from-AT_0026T-ms-1">4.6.7 Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></h4> +<a class="index-entry-id" id="index-ms-macros_002c-groff-differences-from-AT_0026T"></a> +<a class="index-entry-id" id="index-AT_0026T-ms_002c-macro-package-differences"></a> + +<p>The <code class="code">groff</code> <samp class="file">ms</samp> macros are an independent reimplementation, +using no <abbr class="acronym">AT&T</abbr> code. Since they take advantage of the extended +features of <code class="code">groff</code>, they cannot be used with <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>. <code class="code">groff</code> <samp class="file">ms</samp> supports features described above +as Berkeley and Tenth Edition Research Unix extensions, and adds several +of its own. +</p> +<ul class="itemize mark-bullet"> +<li>The internals of <code class="code">groff</code> <samp class="file">ms</samp> differ from the internals of +<abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp>. Documents that depend upon implementation +details of <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> may not format properly with +<code class="code">groff</code> <samp class="file">ms</samp>. Such details include macros whose function was +not documented in the <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> +manual.<a class="footnote" id="DOCF14" href="#FOOT14"><sup>14</sup></a> + +</li><li>The error-handling policy of <code class="code">groff</code> <samp class="file">ms</samp> is to detect and +report errors, rather than to ignore them silently. + +</li><li>Tenth Edition Research Unix supported <code class="code">P1</code>/<code class="code">P2</code> macros to bracket code +examples; <code class="code">groff</code> <samp class="file">ms</samp> does not. + +</li><li><code class="code">groff</code> <samp class="file">ms</samp> does not work in GNU <code class="code">troff</code>’s +<abbr class="acronym">AT&T</abbr> compatibility mode. If loaded when that mode is enabled, +it aborts processing with a diagnostic message. + +</li><li>Multiple line spacing is not supported. Use a larger vertical spacing +instead. + +</li><li><code class="code">groff</code> <samp class="file">ms</samp> uses the same header and footer defaults in both +<code class="code">nroff</code> and <code class="code">troff</code> modes as <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> does in +<code class="code">troff</code> mode; <abbr class="acronym">AT&T</abbr>’s default in <code class="code">nroff</code> mode is to +put the date, in U.S. traditional format (e.g., “January 1, 2021”), +in the center footer (the <code class="code">CF</code> string). + +</li><li>Many <code class="code">groff</code> <samp class="file">ms</samp> macros, including those for paragraphs, +headings, and displays, cause a reset of paragraph rendering parameters, +and may change the indentation; they do so not by incrementing or +decrementing it, but by setting it absolutely. This can cause problems +for documents that define additional macros of their own that try to +manipulate indentation. Use the <samp class="file">ms</samp> <code class="code">RS</code> and <code class="code">RE</code> +macros instead of the <code class="code">in</code> request. + +</li><li><a class="index-entry-id" id="index-fractional-type-sizes-in-ms-macros"></a> +<a class="index-entry-id" id="index-ms-macros_002c-fractional-type-sizes-in"></a> +<abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> interpreted the values of the registers +<code class="code">PS</code> and <code class="code">VS</code> in points, and did not support the use of +scaling units with them. <code class="code">groff</code> <samp class="file">ms</samp> interprets values of +the registers <code class="code">PS</code>, <code class="code">VS</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> equal to +or larger than 1,000 (one thousand) as decimal fractions multiplied +by 1,000.<a class="footnote" id="DOCF15" href="#FOOT15"><sup>15</sup></a> This threshold makes use of a +scaling unit with these parameters practical for high-resolution +devices while preserving backward compatibility. It also permits +expression of non-integral type sizes. For example, ‘<samp class="samp">groff +-rPS=10.5p</samp>’ at the shell prompt is equivalent to placing ‘<samp class="samp">.nr PS +10.5p</samp>’ at the beginning of the document. + +</li><li><abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp>’s <code class="code">AU</code> macro supported arguments used with +some document types; <code class="code">groff</code> <samp class="file">ms</samp> does not. + +</li><li>Right-aligned displays are available. The <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> +manual observes that “it is tempting to assume that ‘<samp class="samp">.DS R</samp>’ will +right adjust lines, but it doesn’t work”. In <code class="code">groff</code> <samp class="file">ms</samp>, +it does. + +</li><li>To make <code class="code">groff</code> <samp class="file">ms</samp> use the default page offset (which also +specifies the left margin), the <code class="code">PO</code> register must stay undefined +until the first <samp class="file">ms</samp> macro is called. + +<p>This implies that ‘<samp class="samp">\n[PO]</samp>’ should not be used early in the +document, unless it is changed also: accessing an undefined register +automatically defines it. +</p> +</li><li><code class="code">groff</code> <samp class="file">ms</samp> supports the <code class="code">PN</code> register, but it is not +necessary; you can access the page number via the usual <code class="code">%</code> +register and invoke the <code class="code">af</code> request to assign a different format +to it if desired.<a class="footnote" id="DOCF16" href="#FOOT16"><sup>16</sup></a> + +</li><li>The <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> manual documents registers <code class="code">CW</code> and +<code class="code">GW</code> as setting the default column width and “intercolumn gap”, +respectively, and which applied when <code class="code">MC</code> was called with fewer +than two arguments. <code class="code">groff</code> <samp class="file">ms</samp> instead treats <code class="code">MC</code> +without arguments as synonymous with <code class="code">2C</code>; there is thus no +occasion for a default column width register. Further, the <code class="code">MINGW</code> +register and the second argument to <code class="code">MC</code> specify a <em class="emph">minimum</em> +space between columns, not the fixed gutter width of <abbr class="acronym">AT&T</abbr> +<samp class="file">ms</samp>. + +</li><li>The <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> manual did not document the <code class="code">QI</code> +register; Berkeley and <code class="code">groff</code> <samp class="file">ms</samp> do. +</li></ul> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bGS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGS_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-GS-_005bms_005d"></a> +<p>The register <code class="code">GS</code> is set to 1 by the <code class="code">groff</code> <samp class="file">ms</samp> +macros, but is not used by the <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp> package. +Documents that need to determine whether they are being formatted with +<code class="code">groff</code> <samp class="file">ms</samp> or another implementation should test this +register. +</p></dd></dl> + + + +<ul class="mini-toc"> +<li><a href="#Missing-Unix-Version-7-ms-Macros" accesskey="1">Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="Missing-Unix-Version-7-ms-Macros"> +<div class="nav-panel"> +<p> +Previous: <a href="#Differences-from-AT_0026T-ms" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a>, Up: <a href="#Differences-from-AT_0026T-ms" accesskey="u" rel="up">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Unix-Version-7-ms-macros-not-implemented-by-groff-ms">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></h4> + +<p>Several macros described in the Unix Version 7 <samp class="file">ms</samp> +documentation are unimplemented by <code class="code">groff</code> <samp class="file">ms</samp> because they +are specific to the requirements of documents produced internally by +Bell Laboratories, some of which also require a glyph for the Bell +System logo that <code class="code">groff</code> does not support. These macros +implemented several document type formats +(<code class="code">EG</code>, <code class="code">IM</code>, <code class="code">MF</code>, <code class="code">MR</code>, <code class="code">TM</code>, <code class="code">TR</code>), were meaningful only in conjunction with the use of certain document +types +(<code class="code">AT</code>, <code class="code">CS</code>, <code class="code">CT</code>, <code class="code">OK</code>, <code class="code">SG</code>), stored the postal addresses of Bell Labs sites +(<code class="code">HO</code>, <code class="code">IH</code>, <code class="code">MH</code>, <code class="code">PY</code>, <code class="code">WH</code>), or lacked a stable definition over time +(<code class="code">UX</code>). To compatibly render historical <samp class="file">ms</samp> documents using these macros, +we advise your documents to invoke the <code class="code">rm</code> request to remove any +such macros it uses and then define replacements with an authentically +typeset original at hand.<a class="footnote" id="DOCF17" href="#FOOT17"><sup>17</sup></a> For +informal purposes, a simple definition of <code class="code">UX</code> should maintain the +readability of the document’s substance. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.rm UX +.ds UX Unix\" +</pre></div> +</td></tr></table> + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="ms-Legacy-Features"> +<div class="nav-panel"> +<p> +Next: <a href="#ms-Naming-Conventions" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="#Differences-from-AT_0026T-ms" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp></a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Legacy-Features">4.6.8 Legacy Features</h4> +<a class="index-entry-id" id="index-ms-macros_002c-strings"></a> +<a class="index-entry-id" id="index-ms-macros_002c-special-characters"></a> +<a class="index-entry-id" id="index-ms-macros_002c-accent-marks"></a> +<a class="index-entry-id" id="index-accent-marks-_005bms_005d"></a> +<a class="index-entry-id" id="index-special-characters-_005bms_005d"></a> +<a class="index-entry-id" id="index-strings-_005bms_005d"></a> + +<p><code class="code">groff</code> <samp class="file">ms</samp> retains some legacy features solely to support +formatting of historical documents; contemporary ones should not use +them because they can render poorly. See the <cite class="cite">groff_char<span class="r">(7)</span></cite> +man page. +</p> +<ul class="mini-toc"> +<li><a href="#AT_0026T-accent-mark-strings" accesskey="1">AT&T accent mark strings</a></li> +<li><a href="#Berkeley-accent-mark-and-glyph-strings" accesskey="2">Berkeley accent mark and glyph strings</a></li> +</ul> +<div class="unnumberedsubsubsec-level-extent" id="AT_0026T-accent-mark-strings"> +<h4 class="unnumberedsubsubsec">AT&T accent mark strings</h4> + +<p>AT&T <samp class="file">ms</samp> defined accent mark strings as follows. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_0027_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0027-_005bms_005d"></a> +<p>Apply acute accent to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_0060_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0060-_005bms_005d"></a> +<p>Apply grave accent to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_003a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_003a-_005bms_005d"></a> +<p>Apply dieresis (umlaut) to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_005e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005e-_005bms_005d"></a> +<p>Apply circumflex accent to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_007e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_007e-_005bms_005d"></a> +<p>Apply tilde accent to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[C]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bC_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-C-_005bms_005d"></a> +<p>Apply caron to subsequent glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002c-_005bms_005d"></a> +<p>Apply cedilla to subsequent glyph. +</p></dd></dl> + +</div> +<div class="unnumberedsubsubsec-level-extent" id="Berkeley-accent-mark-and-glyph-strings"> +<h4 class="unnumberedsubsubsec">Berkeley accent mark and glyph strings</h4> + +<p>Berkeley <samp class="file">ms</samp> offered an <code class="code">AM</code> macro; calling it redefined the +AT&T accent mark strings (except for ‘<samp class="samp">\*C</samp>’), applied them to the +<em class="emph">preceding</em> glyph, and defined additional strings, some for spacing +glyphs. +</p> +<dl class="first-deffn first-defmac-alias-first-deffn"> +<dt class="deffn defmac-alias-deffn" id="index-_002eAM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AM</code></strong><a class="copiable-link" href='#index-_002eAM'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-AM-_005bms_005d"></a> +<p>Enable alternative accent mark and glyph-producing strings. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_0027_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0027-_005bms_005d-1"></a> +<p>Apply acute accent to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_0060_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0060-_005bms_005d-1"></a> +<p>Apply grave accent to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_003a_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_003a-_005bms_005d-1"></a> +<p>Apply dieresis (umlaut) to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_005e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005e-_005bms_005d-1"></a> +<p>Apply circumflex accent to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_007e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_007e-_005bms_005d-1"></a> +<p>Apply tilde accent to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002c_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002c-_005bms_005d-1"></a> +<p>Apply cedilla to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[/]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002f_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002f-_005bms_005d"></a> +<p>Apply stroke (slash) to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bv_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[v]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bv_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-v-_005bms_005d"></a> +<p>Apply caron to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_005f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[_]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005f_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005f-_005bms_005d"></a> +<p>Apply macron to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002e_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002e-_005bms_005d"></a> +<p>Apply underdot to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bo_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[o]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bo_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-o-_005bms_005d"></a> +<p>Apply ring accent to preceding glyph. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_003f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[?]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003f_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_003f-_005bms_005d"></a> +<p>Interpolate inverted question mark. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_0021_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[!]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0021_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0021-_005bms_005d"></a> +<p>Interpolate inverted exclamation mark. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b8_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-8-_005bms_005d"></a> +<p>Interpolate small letter sharp s. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bq_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bq_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-q-_005bms_005d"></a> +<p>Interpolate small letter o with hook accent (ogonek). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b3_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-3-_005bms_005d"></a> +<p>Interpolate small letter yogh. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bd_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[d-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bd_002d_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-d_002d-_005bms_005d"></a> +<p>Interpolate small letter eth. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bD_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[D-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bD_002d_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-D_002d-_005bms_005d"></a> +<p>Interpolate capital letter eth. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bth_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bth_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-th-_005bms_005d"></a> +<p>Interpolate small letter thorn. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bTh_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTh_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Th-_005bms_005d"></a> +<p>Interpolate capital letter thorn. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bae_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bae_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ae-_005bms_005d"></a> +<p>Interpolate small æ ligature. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bAe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bAe_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Ae-_005bms_005d"></a> +<p>Interpolate capital Æ ligature. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005boe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[oe]</code></strong><a class="copiable-link" href='#index-_005c_002a_005boe_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-oe-_005bms_005d"></a> +<p>Interpolate small oe ligature. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005bOE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[OE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bOE_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-OE-_005bms_005d"></a> +<p>Interpolate capital OE ligature. +</p></dd></dl> + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="ms-Naming-Conventions"> +<div class="nav-panel"> +<p> +Previous: <a href="#ms-Legacy-Features" accesskey="p" rel="prev">Legacy Features</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Naming-Conventions">4.6.9 Naming Conventions</h4> +<a class="index-entry-id" id="index-ms-macros_002c-naming-conventions"></a> +<a class="index-entry-id" id="index-naming-conventions_002c-ms-macros"></a> + +<p>The following conventions are used for names of macros, strings, and +registers. External names available to documents that use the +<code class="code">groff</code> <samp class="file">ms</samp> macros contain only uppercase letters and digits. +</p> +<p>Internally, the macros are divided into modules. Conventions for +identifier names are as follows. +</p> +<ul class="itemize mark-bullet"> +<li>Names used only within one module are of the form +<var class="var">module</var><code class="code">*</code><var class="var">name</var>. + +</li><li>Names used outside the module in which they are defined are of the form +<var class="var">module</var><code class="code">@</code><var class="var">name</var>. + +</li><li>Names associated with a particular environment are of the form +<var class="var">environment</var><code class="code">:</code><var class="var">name</var>; these are used only within the +<code class="code">par</code> module. + +</li><li><var class="var">name</var> does not have a module prefix. + +</li><li>Constructed names used to implement arrays are of the form +<var class="var">array</var><code class="code">!</code><var class="var">index</var>. +</li></ul> + +<p>Thus the <code class="code">groff</code> <samp class="file">ms</samp> macros reserve the following names. +</p> +<ul class="itemize mark-bullet"> +<li>Names containing the characters <code class="code">*</code>, <code class="code">@</code>, and <code class="code">:</code>. + +</li><li>Names containing only uppercase letters and digits. +</li></ul> + + + +<hr> +</div> +</div> +</div> +<div class="chapter-level-extent" id="GNU-troff-Reference"> +<div class="nav-panel"> +<p> +Next: <a href="#File-Formats" accesskey="n" rel="next">File Formats</a>, Previous: <a href="#Major-Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="GNU-troff-Reference-1">5 GNU <code class="code">troff</code> Reference</h2> +<a class="index-entry-id" id="index-reference_002c-gtroff"></a> +<a class="index-entry-id" id="index-gtroff_002c-reference"></a> + +<p>This chapter covers <em class="emph">all</em> of the facilities of the GNU +<code class="code">troff</code> formatting engine. Users of macro packages may skip it if +not interested in details. +</p> + + + + +<ul class="mini-toc"> +<li><a href="#Text" accesskey="1">Text</a></li> +<li><a href="#Page-Geometry" accesskey="2">Page Geometry</a></li> +<li><a href="#Measurements" accesskey="3">Measurements</a></li> +<li><a href="#Numeric-Expressions" accesskey="4">Numeric Expressions</a></li> +<li><a href="#Identifiers" accesskey="5">Identifiers</a></li> +<li><a href="#Formatter-Instructions" accesskey="6">Formatter Instructions</a></li> +<li><a href="#Comments" accesskey="7">Comments</a></li> +<li><a href="#Registers" accesskey="8">Registers</a></li> +<li><a href="#Manipulating-Filling-and-Adjustment" accesskey="9">Manipulating Filling and Adjustment</a></li> +<li><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></li> +<li><a href="#Manipulating-Spacing">Manipulating Spacing</a></li> +<li><a href="#Tabs-and-Fields">Tabs and Fields</a></li> +<li><a href="#Character-Translations">Character Translations</a></li> +<li><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li> +<li><a href="#Line-Layout">Line Layout</a></li> +<li><a href="#Line-Continuation">Line Continuation</a></li> +<li><a href="#Page-Layout">Page Layout</a></li> +<li><a href="#Page-Control">Page Control</a></li> +<li><a href="#Using-Fonts">Using Fonts</a></li> +<li><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></li> +<li><a href="#Colors">Colors</a></li> +<li><a href="#Strings">Strings</a></li> +<li><a href="#Conditionals-and-Loops">Conditionals and Loops</a></li> +<li><a href="#Writing-Macros">Writing Macros</a></li> +<li><a href="#Page-Motions">Page Motions</a></li> +<li><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></li> +<li><a href="#Deferring-Output">Deferring Output</a></li> +<li><a href="#Traps">Traps</a></li> +<li><a href="#Diversions">Diversions</a></li> +<li><a href="#Punning-Names">Punning Names</a></li> +<li><a href="#Environments">Environments</a></li> +<li><a href="#Suppressing-Output">Suppressing Output</a></li> +<li><a href="#I_002fO">I/O</a></li> +<li><a href="#Postprocessor-Access">Postprocessor Access</a></li> +<li><a href="#Miscellaneous">Miscellaneous</a></li> +<li><a href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a></li> +<li><a href="#Debugging">Debugging</a></li> +<li><a href="#Implementation-Differences">Implementation Differences</a></li> +</ul> +<hr> +<div class="section-level-extent" id="Text"> +<div class="nav-panel"> +<p> +Next: <a href="#Measurements" accesskey="n" rel="next">Measurements</a>, Previous: <a href="#GNU-troff-Reference" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Text-1">5.1 Text</h3> +<a class="index-entry-id" id="index-text_002c-GNU-troff-processing"></a> + +<p><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> was designed to take input as it would be +composed on a typewriter, including the teletypewriters used as early +computer terminals, and relieve the user drafting a document of concern +with details like line length, hyphenation breaking, and the achievement +of straight margins. Early in its development, the program gained the +ability to prepare output for a phototypesetter; a document could then +be prepared for output to either a teletypewriter, a phototypesetter, or +both. GNU <code class="code">troff</code> continues this tradition of permitting an author +to compose a single master version of a document which can then be +rendered for a variety of output formats or devices. +</p> +<p><code class="code">roff</code> input files contain text interspersed with instructions to +control the formatter. Even in the absence of such instructions, GNU +<code class="code">troff</code> still processes its input in several ways, by filling, +hyphenating, breaking, and adjusting it, and supplementing it with +inter-sentence space. +</p> + + +<ul class="mini-toc"> +<li><a href="#Filling" accesskey="1">Filling</a></li> +<li><a href="#Sentences" accesskey="2">Sentences</a></li> +<li><a href="#Hyphenation" accesskey="3">Hyphenation</a></li> +<li><a href="#Breaking" accesskey="4">Breaking</a></li> +<li><a href="#Adjustment" accesskey="5">Adjustment</a></li> +<li><a href="#Tabs-and-Leaders" accesskey="6">Tabs and Leaders</a></li> +<li><a href="#Requests-and-Macros" accesskey="7">Requests and Macros</a></li> +<li><a href="#Macro-Packages" accesskey="8">Macro Packages</a></li> +<li><a href="#Input-Encodings" accesskey="9">Input Encodings</a></li> +<li><a href="#Input-Conventions">Input Conventions</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Filling"> +<div class="nav-panel"> +<p> +Next: <a href="#Sentences" accesskey="n" rel="next">Sentences</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Filling-1">5.1.1 Filling</h4> + +<p>When GNU <code class="code">troff</code> starts up, it obtains information about the device +for which it is preparing output.<a class="footnote" id="DOCF18" href="#FOOT18"><sup>18</sup></a> An essential property is the length of the output +line, such as “6.5 inches”. +</p> +<a class="index-entry-id" id="index-word_002c-definition-of"></a> +<a class="index-entry-id" id="index-filling"></a> +<p>GNU <code class="code">troff</code> interprets plain text files employing the Unix +line-ending convention. It reads input a character at a time, +collecting words as it goes, and fits as many words together on an +output line as it can—this is known as <em class="dfn">filling</em>. To GNU +<code class="code">troff</code>, a <em class="dfn">word</em> is any sequence of one or more characters +that aren’t spaces or newlines. The exceptions separate +words.<a class="footnote" id="DOCF19" href="#FOOT19"><sup>19</sup></a> To disable filling, see +<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">It is a truth universally acknowledged +that a single man in possession of a +good fortune must be in want of a wife. + ⇒ It is a truth universally acknowledged that a + ⇒ single man in possession of a good fortune must + ⇒ be in want of a wife. +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="Sentences"> +<div class="nav-panel"> +<p> +Next: <a href="#Hyphenation" accesskey="n" rel="next">Hyphenation</a>, Previous: <a href="#Filling" accesskey="p" rel="prev">Filling</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Sentences-1">5.1.2 Sentences</h4> +<a class="index-entry-id" id="index-sentences"></a> + +<p>A passionate debate has raged for decades among writers of the English +language over whether more space should appear between adjacent +sentences than between words within a sentence, and if so, how much, and +what other circumstances should influence this spacing.<a class="footnote" id="DOCF20" href="#FOOT20"><sup>20</sup></a> +GNU <code class="code">troff</code> follows the example of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>; +it attempts to detect the boundaries between sentences, and supplies +additional inter-sentence space between them. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Hello, world! +Welcome to groff. + ⇒ Hello, world! Welcome to groff. +</pre></div></div> + +<a class="index-entry-id" id="index-end_002dof_002dsentence-characters"></a> +<a class="index-entry-id" id="index-sentence-space"></a> +<a class="index-entry-id" id="index-space-between-sentences"></a> +<a class="index-entry-id" id="index-French-spacing"></a> +<p>GNU <code class="code">troff</code> flags certain characters (normally ‘<samp class="samp">!</samp>’, ‘<samp class="samp">?</samp>’, +and ‘<samp class="samp">.</samp>’) as potentially ending a sentence. When GNU <code class="code">troff</code> +encounters one of these <em class="dfn">end-of-sentence characters</em> at the end of +an input line, or one of them is followed by two (unescaped) spaces on +the same input line, it appends an inter-word space followed by an +inter-sentence space in the output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">R. Harper subscribes to a maxim of P. T. Barnum. + ⇒ R. Harper subscribes to a maxim of P. T. Barnum. +</pre></div></div> + +<p>In the above example, inter-sentence space is not added after ‘<samp class="samp">P.</samp>’ +or ‘<samp class="samp">T.</samp>’ because the periods do not occur at the end of an input +line, nor are they followed by two or more spaces. Let’s imagine that +we’ve heard something about defamation from Mr. Harper’s attorney, +recast the sentence, and reflowed it in our text editor. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">I submit that R. Harper subscribes to a maxim of P. T. +Barnum. + ⇒ I submit that R. Harper subscribes to a maxim of + ⇒ P. T. Barnum. +</pre></div></div> + +<p>“Barnum” doesn’t begin a sentence! What to do? Let us meet our first +<em class="dfn">escape sequence</em>, a series of input characters that give +instructions to GNU <code class="code">troff</code> instead of being used to construct +output device glyphs.<a class="footnote" id="DOCF21" href="#FOOT21"><sup>21</sup></a> An escape sequence begins with the backslash character <code class="code">\</code> +by default, an uncommon character in natural language text, and is +<em class="emph">always</em> followed by at least one other character, hence the term +“sequence”. +</p> +<a class="index-entry-id" id="index-_005c_0026_002c-at-end-of-sentence"></a> +<p>The dummy character escape sequence <code class="code">\&</code> can be used after an +end-of-sentence character to defeat end-of-sentence detection on a +per-instance basis. We can therefore rewrite our input more +defensively. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">I submit that R.\& Harper subscribes to a maxim of P.\& +T.\& Barnum. + ⇒ I submit that R. Harper subscribes to a maxim of + ⇒ P. T. Barnum. +</pre></div></div> + +<p>Adding text caused our input to wrap; now, we don’t need <code class="code">\&</code> after +‘<samp class="samp">T.</samp>’ but we do after ‘<samp class="samp">P.</samp>’. Consistent use of the escape +sequence ensures that potential sentence boundaries are robust to +editing activities. Further advice along these lines will follow in +<a class="ref" href="#Input-Conventions">Input Conventions</a>. +</p> +<a class="index-entry-id" id="index-end_002dof_002dsentence-transparent-characters"></a> +<a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence-transparent"></a> +<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence"></a> +<a class="index-entry-id" id="index-special-characters"></a> +<a class="index-entry-id" id="index-characters_002c-special"></a> +<p>Normally, the occurrence of a visible non-end-of-sentence character (as +opposed to a space or tab) immediately after an end-of-sentence +character cancels detection of the end of a sentence. For example, it +would be incorrect for GNU <code class="code">troff</code> to infer the end of a sentence +after the dot in ‘<samp class="samp">3.14159</samp>’. However, several characters are +treated <em class="emph">transparently</em> after the occurrence of an end-of-sentence +character. That is, GNU <code class="code">troff</code> does not cancel end-of-sentence +detection when it processes them. This is because such characters are +often used as footnote markers or to close quotations and +parentheticals. The default set is ‘<samp class="samp">"</samp>’, ‘<samp class="samp">'</samp>’, ‘<samp class="samp">)</samp>’, +‘<samp class="samp">]</samp>’, ‘<samp class="samp">*</samp>’, <code class="code">\[dg]</code>, <code class="code">\[dd]</code>, <code class="code">\[rq]</code>, and +<code class="code">\[cq]</code>. The last four are examples of <em class="dfn">special characters</em>, +escape sequences whose purpose is to obtain glyphs that are not easily +typed at the keyboard, or which have special meaning to GNU <code class="code">troff</code> +(like <code class="code">\</code> itself).<a class="footnote" id="DOCF22" href="#FOOT22"><sup>22</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\[lq]The idea that the poor should have leisure has always +been shocking to the rich.\[rq] +(Bertrand Russell, 1935) + ⇒ "The idea that the poor should have + ⇒ leisure has always been shocking to + ⇒ the rich." (Bertrand Russell, 1935) +</pre></div></div> + +<p>The sets of characters that potentially end sentences or are transparent +to sentence endings are configurable. See the <code class="code">cflags</code> request in +<a class="ref" href="#Using-Symbols">Using Symbols</a>. To change the additional inter-sentence space +amount—even to remove it entirely—see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Hyphenation"> +<div class="nav-panel"> +<p> +Next: <a href="#Breaking" accesskey="n" rel="next">Breaking</a>, Previous: <a href="#Sentences" accesskey="p" rel="prev">Sentences</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Hyphenation-1">5.1.3 Hyphenation</h4> +<a class="index-entry-id" id="index-hyphenation"></a> + +<p>When an output line is nearly full, it is uncommon for the next word +collected from the input to exactly fill it—typically, there is room +left over only for part of the next word. The process of splitting a +word so that it appears partially on one line (with a hyphen to indicate +to the reader that the word has been broken) with its remainder on the +next is <em class="dfn">hyphenation</em>. Hyphenation points can be manually +specified; GNU <code class="code">troff</code> also uses a hyphenation algorithm and +language-specific pattern files (based on those used in TeX) to +decide which words can be hyphenated and where. +</p> +<p>Hyphenation does not always occur even when the hyphenation rules for a +word allow it; it can be disabled, and when not disabled there are +several parameters that can prevent it in certain circumstances. +See <a class="xref" href="#Manipulating-Hyphenation">Manipulating Hyphenation</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Breaking"> +<div class="nav-panel"> +<p> +Next: <a href="#Adjustment" accesskey="n" rel="next">Adjustment</a>, Previous: <a href="#Hyphenation" accesskey="p" rel="prev">Hyphenation</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Breaking-1">5.1.4 Breaking</h4> +<a class="index-entry-id" id="index-break"></a> +<a class="index-entry-id" id="index-implicit-line-break"></a> +<a class="index-entry-id" id="index-line-break_002c-output"></a> +<a class="index-entry-id" id="index-output-line-break"></a> + +<p>Once an output line is full, the next word (or remainder of a hyphenated +one) is placed on a different output line; this is called a <em class="dfn">break</em>. +In this manual and in <code class="code">roff</code> discussions generally, a “break” if +not further qualified always refers to the termination of an output +line. When the formatter is filling text, it introduces breaks +automatically to keep output lines from exceeding the configured line +length. After an automatic break, GNU <code class="code">troff</code> adjusts the line if +applicable (see below), and then resumes collecting and filling text on +the next output line. +</p> +<p>Sometimes, a line cannot be broken automatically. This usually does +not happen with natural language text unless the output line length has +been manipulated to be extremely short, but it can with specialized +text like program source code. We can use <code class="code">perl</code> at the shell +prompt to contrive an example of failure to break the line. We also +employ the <samp class="option">-z</samp> option to suppress normal output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ perl -e 'print "#" x 80, "\n";' | nroff -z + error→ warning: cannot break line +</pre></div></div> + +<p>The remedy for these cases is to tell GNU <code class="code">troff</code> where the line +may be broken without hyphens. This is done with the non-printing break +point escape sequence ‘<samp class="samp">\:</samp>’; see <a class="ref" href="#Manipulating-Hyphenation">Manipulating Hyphenation</a>. +</p> +<a class="index-entry-id" id="index-blank-line"></a> +<a class="index-entry-id" id="index-empty-line"></a> +<a class="index-entry-id" id="index-line_002c-blank"></a> +<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029"></a> +<p>What if the document author wants to stop filling lines temporarily, for +instance to start a new paragraph? There are several solutions. A +blank input line not only causes a break, but by default it also outputs +a one-line vertical space (effectively a blank output line). This +behavior can be modified; see <a class="ref" href="#Blank-Line-Traps">Blank Line Traps</a>. Macro packages +may discourage or disable the blank line method of paragraphing in favor +of their own macros. +</p> +<a class="index-entry-id" id="index-leading-spaces"></a> +<a class="index-entry-id" id="index-spaces_002c-leading-and-trailing"></a> +<a class="index-entry-id" id="index-trailing-spaces-on-text-lines"></a> +<a class="index-entry-id" id="index-leading-space-macro-_0028lsm_0029"></a> +<p>A line that begins with one or more spaces causes a break. The spaces +are output at the beginning of the next line without being +<em class="emph">adjusted</em> (see below); however, this behavior can be modified +(see <a class="pxref" href="#Leading-Space-Traps">Leading Space Traps</a>). Again, macro packages may provide other +methods of producing indented paragraphs. Trailing spaces on text lines +are discarded.<a class="footnote" id="DOCF23" href="#FOOT23"><sup>23</sup></a> +</p> +<p>What if the file ends before enough words have been collected to fill an +output line? Or the output line is exactly full but not yet broken, and +there is no more input? GNU <code class="code">troff</code> interprets the end of input as +a break. Certain requests also cause breaks, implicitly or explicitly. +This is discussed in <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Adjustment"> +<div class="nav-panel"> +<p> +Next: <a href="#Tabs-and-Leaders" accesskey="n" rel="next">Tabs and Leaders</a>, Previous: <a href="#Breaking" accesskey="p" rel="prev">Breaking</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Adjustment-1">5.1.5 Adjustment</h4> + +<a class="index-entry-id" id="index-extra-spaces-between-words"></a> +<p>After GNU <code class="code">troff</code> performs an automatic break, it may then +<em class="dfn">adjust</em> the line, widening inter-word spaces until the text reaches +the right margin. Extra spaces between words are preserved. Leading +and trailing spaces are handled as noted above. Text can be aligned to +the left or right margin only, or centered; see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Tabs-and-Leaders"> +<div class="nav-panel"> +<p> +Next: <a href="#Input-Conventions" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="#Adjustment" accesskey="p" rel="prev">Adjustment</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Tabs-and-Leaders-1">5.1.6 Tabs and Leaders</h4> + +<a class="index-entry-id" id="index-horizontal-tab-character"></a> +<a class="index-entry-id" id="index-tab-character"></a> +<a class="index-entry-id" id="index-character_002c-horizontal-tab"></a> +<a class="index-entry-id" id="index-leader-character"></a> +<a class="index-entry-id" id="index-character_002c-leader"></a> +<a class="index-entry-id" id="index-tab-stops"></a> +<a class="index-entry-id" id="index-stops_002c-tab"></a> +<p>GNU <code class="code">troff</code> translates input horizontal tab characters (“tabs”) +and <kbd class="key">Control+A</kbd> characters (“leaders”) into movements to the next +tab stop. Tabs simply move to the next tab stop; leaders place enough +periods to fill the space. Tab stops are by default located every half +inch measured from the drawing position corresponding to the beginning +of the input line; see <a class="ref" href="#Page-Geometry">Page Geometry</a>. Tabs and leaders do not +cause breaks and therefore do not interrupt filling. Below, we use +arrows → and bullets • to indicate input tabs and +leaders, respectively. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">1 +→ 2 → 3 • 4 +→ • 5 +⇒ 1 2 3.......4 ........5 +</pre></div></div> + +<p>Tabs and leaders lend themselves to table construction.<a class="footnote" id="DOCF24" href="#FOOT24"><sup>24</sup></a> The tab and leader glyphs can be +configured, and further facilities for sophisticated table composition +are available; see <a class="ref" href="#Tabs-and-Fields">Tabs and Fields</a>. There are many details to +track when using such low-level features, so most users turn to the +<cite class="cite">tbl<span class="r">(1)</span></cite> preprocessor to lay out tables. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Requests-and-Macros"> +<div class="nav-panel"> +<p> +Next: <a href="#Macro-Packages" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#Tabs-and-Leaders" accesskey="p" rel="prev">Tabs and Leaders</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Requests-and-Macros-1">5.1.7 Requests and Macros</h4> + +<p>We have now encountered almost all of the syntax there is in the +<code class="code">roff</code> language, with an exception already noted in passing. +<a class="index-entry-id" id="index-request"></a> +<a class="index-entry-id" id="index-control-character-_0028_002e_0029"></a> +<a class="index-entry-id" id="index-character_002c-control-_0028_002e_0029"></a> +<a class="index-entry-id" id="index-no_002dbreak-control-character-_0028_0027_0029"></a> +<a class="index-entry-id" id="index-character_002c-no_002dbreak-control-_0028_0027_0029"></a> +<a class="index-entry-id" id="index-control-character_002c-no_002dbreak-_0028_0027_0029"></a> +A <em class="dfn">request</em> is an instruction to the formatter that occurs after a +<em class="dfn">control character</em>, which is recognized at the beginning of an +input line. The regular control character is a dot (<code class="code">.</code>). Its +counterpart, the <em class="dfn">no-break control character</em>, a neutral apostrophe +(<code class="code">'</code>), suppresses the break that is implied by some requests. +These characters were chosen because it is uncommon for lines of text in +natural languages to begin with them. +<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a> +<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a> +If you require a formatted period or apostrophe (closing single +quotation mark) where GNU <code class="code">troff</code> is expecting a control character, +prefix the dot or neutral apostrophe with the dummy character escape +sequence, ‘<samp class="samp">\&</samp>’. +</p> +<a class="index-entry-id" id="index-control-line"></a> +<p>An input line beginning with a control character is called a +<em class="dfn">control line</em>. +<a class="index-entry-id" id="index-text-line"></a> +Every line of input that is not a control line is a <em class="dfn">text +line</em>.<a class="footnote" id="DOCF25" href="#FOOT25"><sup>25</sup></a> +</p> +<a class="index-entry-id" id="index-argument"></a> +<p>Requests often take <em class="dfn">arguments</em>, words (separated from the request +name and each other by spaces) that specify details of the action GNU +<code class="code">troff</code> is expected to perform. If a request is meaningless +without arguments, it is typically ignored. +</p> +<p>GNU <code class="code">troff</code>’s requests and escape sequences comprise the control +language of the formatter. Of key importance are the requests that +define macros. Macros are invoked like requests, enabling the request +repertoire to be extended or overridden.<a class="footnote" id="DOCF26" href="#FOOT26"><sup>26</sup></a> +</p> +<a class="index-entry-id" id="index-macro"></a> +<a class="index-entry-id" id="index-calling-a-macro"></a> +<a class="index-entry-id" id="index-interpolation"></a> +<p>A <em class="dfn">macro</em> can be thought of as an abbreviation you can define for a +collection of control and text lines. When the macro is <em class="dfn">called</em> by +giving its name after a control character, it is replaced with what it +stands for. The process of textual replacement is known as +<em class="dfn">interpolation</em>.<a class="footnote" id="DOCF27" href="#FOOT27"><sup>27</sup></a> Interpolations are handled as soon as they are +recognized, and once performed, a <code class="code">roff</code> formatter scans the +replacement for further requests, macro calls, and escape sequences. +</p> +<p>In <code class="code">roff</code> systems, the <code class="code">de</code> request defines a +macro.<a class="footnote" id="DOCF28" href="#FOOT28"><sup>28</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de DATE +2020-11-14 +.. +</pre></div></div> + +<p>The foregoing input produces no output by itself; all we have done is +store some information. Observe the pair of dots that ends the macro +definition. This is a default; you can specify your own terminator for +the macro definition as the second argument to the <code class="code">de</code> request. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de NAME ENDNAME +Heywood Jabuzzoff +.ENDNAME +</pre></div></div> + +<p>In fact, the ending marker is itself the name of a macro to be +called, or a request to be invoked, if it is defined at the time its +control line is read. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de END +Big Rip +.. +.de START END +Big Bang +.END +.START + ⇒ Big Rip Big Bang +</pre></div></div> + +<p>In the foregoing example, “Big Rip” printed before “Big Bang” +because its macro was <em class="emph">called</em> first. Consider what would happen +if we dropped <code class="code">END</code> from the ‘<samp class="samp">.de START</samp>’ line and added +<code class="code">..</code> after <code class="code">.END</code>. Would the order change? +</p> +<p>Let us consider a more elaborate example. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de DATE +2020-10-05 +.. +. +.de BOSS +D.\& Kruger, +J.\& Peterman +.. +. +.de NOTICE +Approved: +.DATE +by +.BOSS +.. +. +Insert tedious regulatory compliance paragraph here. + +.NOTICE + +Insert tedious liability disclaimer paragraph here. + +.NOTICE + ⇒ Insert tedious regulatory compliance paragraph here. + ⇒ + ⇒ Approved: 2020-10-05 by D. Kruger, J. Peterman + ⇒ + ⇒ Insert tedious liability disclaimer paragraph here. + ⇒ + ⇒ Approved: 2020-10-05 by D. Kruger, J. Peterman +</pre></div></div> + +<p>The above document started with a series of control lines. Three macros +were defined, with a <code class="code">de</code> request declaring each macro’s name, and +the “body” of the macro starting on the next line and continuing until +a line with two dots ‘<samp class="samp"><code class="code">..</code></samp>’ marked its end. The text proper +began only after the macros were defined; this is a common pattern. +Only the <code class="code">NOTICE</code> macro was called “directly” by the document; +<code class="code">DATE</code> and <code class="code">BOSS</code> were called only by <code class="code">NOTICE</code> itself. +Escape sequences were used in <code class="code">BOSS</code>, two levels of macro +interpolation deep. +</p> +<p>The advantage in typing and maintenance economy may not be obvious from +such a short example, but imagine a much longer document with dozens of +such paragraphs, each requiring a notice of managerial approval. +Consider what must happen if you are in charge of generating a new +version of such a document with a different date, for a different boss. +With well-chosen macros, you only have to change each datum in one +place. +</p> +<p>In practice, we would probably use strings (see <a class="pxref" href="#Strings">Strings</a>) instead of +macros for such simple interpolations; what is important here is to +glimpse the potential of macros and the power of recursive +interpolation. +</p> +<p>We could have defined <code class="code">DATE</code> and <code class="code">BOSS</code> in the opposite order; +perhaps less obviously, we could also have defined them <em class="emph">after</em> +<code class="code">NOTICE</code>. “Forward references” like this are acceptable because +the body of a macro definition is not (completely) interpreted, but +stored instead (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). While a macro is being defined (or +appended to), requests are not interpreted and macros not interpolated, +whereas some commonly used escape sequences <em class="emph">are</em> interpreted. +<code class="code">roff</code> systems also support recursive macro calls, as long as you +have a way to break the recursion (see <a class="pxref" href="#Conditionals-and-Loops">Conditionals and Loops</a>). +Maintainable <code class="code">roff</code> documents tend to arrange macro definitions to +minimize forward references. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Macro-Packages"> +<div class="nav-panel"> +<p> +Next: <a href="#Input-Encodings" accesskey="n" rel="next">Input Encodings</a>, Previous: <a href="#Requests-and-Macros" accesskey="p" rel="prev">Requests and Macros</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Macro-Packages-3">5.1.8 Macro Packages</h4> +<a class="index-entry-id" id="index-macro-package"></a> +<a class="index-entry-id" id="index-package_002c-macro"></a> + +<p>Macro definitions can be collected into <em class="dfn">macro files</em>, <code class="code">roff</code> +input files designed to produce no output themselves but instead ease +the preparation of other <code class="code">roff</code> documents. There is no syntactical +difference between a macro file and any other <code class="code">roff</code> document; only +its purpose distinguishes it. When a macro file is installed at a +standard location and suitable for use by a general audience, it is +often termed a <em class="dfn">macro package</em>.<a class="footnote" id="DOCF29" href="#FOOT29"><sup>29</sup></a> Macro packages can be +loaded by supplying the <samp class="option">-m</samp> option to GNU <code class="command">troff</code> or a +<code class="code">groff</code> front end. Alternatively, a document requiring a macro +package can load it with the <code class="code">mso</code> (“macro source”) request. +</p> + + +<hr> +</div> +<div class="subsection-level-extent" id="Input-Encodings"> +<div class="nav-panel"> +<p> +Next: <a href="#Input-Conventions" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="#Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Input-Encodings-1">5.1.9 Input Encodings</h4> + +<p>The <code class="command">groff</code> command’s <samp class="option">-k</samp> option calls the +<code class="command">preconv</code> preprocessor to perform input character encoding +conversions. Input to the GNU <code class="code">troff</code> formatter itself, on the +other hand, must be in one of two encodings it can recognize. +</p> +<dl class="table"> +<dt id='index-encoding_002c-input_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-input_002c-EBCDIC'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-EBCDIC_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-EBCDIC"></a> +<a class="index-entry-id" id="index-encoding_002c-input_002c-code-page-1047"></a> +<a class="index-entry-id" id="index-code-page-1047_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-code-page-1047"></a> +<a class="index-entry-id" id="index-IBM-code-page-1047-input-encoding"></a> +<a class="index-entry-id" id="index-cp1047_002etmac"></a> +<p>The code page 1047 input encoding works only on <abbr class="acronym">EBCDIC</abbr> +platforms (and conversely, the other input encodings don’t work with +<abbr class="acronym">EBCDIC</abbr>); the file <samp class="file">cp1047.tmac</samp> is loaded at startup. +</p> +</dd> +<dt id='index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a> +<a class="index-entry-id" id="index-latin1_002etmac"></a> +<p>ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->, an encoding for Western European languages, is the +default input encoding on non-<abbr class="acronym">EBCDIC</abbr> platforms; the file +<samp class="file">latin1.tmac</samp> is loaded at startup. +</p></dd> +</dl> + +<p>Any document that is encoded in ISO 646:1991 (a descendant of USAS +<span class="w-nolinebreak-text">X3.4-1968</span><!-- /@w --> or “US-ASCII”), or, equivalently, uses only code points +from the “C0 Controls” and “Basic Latin” parts of the Unicode +character set is also a valid ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> document; the standards +are interchangeable in their first 128 code points.<a class="footnote" id="DOCF30" href="#FOOT30"><sup>30</sup></a> +</p> +<p>Other encodings are supported by means of macro packages. +</p> +<dl class="table"> +<dt id='index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'><span><code class="code">latin2</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029"></a> +<a class="index-entry-id" id="index-latin2_002etmac"></a> +<p>To use ISO <span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->, an encoding for Central and Eastern European +languages, invoke ‘<samp class="samp">.mso latin2.tmac</samp>’<!-- /@w --> at the beginning of your +document or supply ‘<samp class="samp">-mlatin2</samp>’ as a command-line argument to +<code class="code">groff</code>. +</p> +</dd> +<dt id='index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'><span><code class="code">latin5</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029"></a> +<a class="index-entry-id" id="index-latin5_002etmac"></a> +<p>To use ISO <span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->, an encoding for the Turkish language, invoke +‘<samp class="samp">.mso latin5.tmac</samp>’<!-- /@w --> at the beginning of your document or +supply ‘<samp class="samp">-mlatin5</samp>’ as a command-line argument to <code class="code">groff</code>. +</p> +</dd> +<dt id='index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'><span><code class="code">latin9</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding"></a> +<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029"></a> +<a class="index-entry-id" id="index-latin9_002etmac"></a> +<p>ISO <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> succeeds <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->; it includes a Euro sign and better +glyph coverage for French. To use this encoding, invoke ‘<samp class="samp">.mso latin9.tmac</samp>’<!-- /@w --> at the beginning of your document or supply +‘<samp class="samp">-mlatin9</samp>’ as a command-line argument to <code class="code">groff</code>. +</p></dd> +</dl> + +<p>Some characters from an input encoding may not be available with a +particular output driver, or their glyphs may not have representation in +the font used. For terminal devices, fallbacks are defined, like +‘<samp class="samp">EUR</samp>’ for the Euro sign and ‘<samp class="samp">(C)</samp>’ for the copyright sign. For +typesetter devices, you may need to “mount” fonts that support glyphs +required by the document. See <a class="xref" href="#Font-Positions">Font Positions</a>. +</p> +<a class="index-entry-id" id="index-freeeuro_002epfa"></a> +<a class="index-entry-id" id="index-ec_002etmac"></a> +<p>Because a Euro glyph was not historically defined in PostScript fonts, +<code class="code">groff</code> comes with a font called <samp class="file">freeeuro.pfa</samp> that provides +the Euro in several styles. Standard PostScript fonts contain the +glyphs from <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> that <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> lacks, so these +encodings are supported for the <samp class="option">ps</samp> and <samp class="option">pdf</samp> output +devices as <code class="code">groff</code> ships, while <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> is not. +</p> +<p>Unicode supports characters from all other input encodings; the +<samp class="option">utf8</samp> output driver for terminals therefore does as well. The +DVI output driver supports the <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> encodings if +the command-line option <samp class="option">-mec</samp> is used as well. <a class="footnote" id="DOCF31" href="#FOOT31"><sup>31</sup></a> +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Input-Conventions"> +<div class="nav-panel"> +<p> +Previous: <a href="#Input-Encodings" accesskey="p" rel="prev">Input Encodings</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Input-Conventions-1">5.1.10 Input Conventions</h4> +<a class="index-entry-id" id="index-input-conventions"></a> +<a class="index-entry-id" id="index-conventions-for-input"></a> + +<p>Since GNU <code class="code">troff</code> fills text automatically, it is common practice +in the <code class="code">roff</code> language to avoid visual composition of text in input +files: the esthetic appeal of the formatted output is what matters. +Therefore, <code class="code">roff</code> input should be arranged such that it is easy for +authors and maintainers to compose and develop the document, understand +the syntax of <code class="code">roff</code> requests, macro calls, and preprocessor +languages used, and predict the behavior of the formatter. Several +traditions have accrued in service of these goals. +</p> +<ul class="itemize mark-bullet"> +<li>Follow sentence endings in the input with newlines to ease their +recognition (see <a class="pxref" href="#Sentences">Sentences</a>). It is frequently convenient to end +text lines after colons and semicolons as well, as these typically +precede independent clauses. Consider doing so after commas; they often +occur in lists that become easy to scan when itemized by line, or +constitute supplements to the sentence that are added, deleted, or +updated to clarify it. Parenthetical and quoted phrases are also good +candidates for placement on text lines by themselves. + +</li><li>Set your text editor’s line length to 72 characters or +fewer.<a class="footnote" id="DOCF32" href="#FOOT32"><sup>32</sup></a> +This limit, combined with the previous item of advice, makes it less +common that an input line will wrap in your text editor, and thus will +help you perceive excessively long constructions in your text. Recall +that natural languages originate in speech, not writing, and that +punctuation is correlated with pauses for breathing and changes in +prosody. + +</li><li>Use <code class="code">\&</code> after ‘<samp class="samp">!</samp>’, ‘<samp class="samp">?</samp>’, and ‘<samp class="samp">.</samp>’ if they are +followed by space, tab, or newline characters and don’t end a sentence. + +</li><li>In filled text lines, use <code class="code">\&</code> before ‘<samp class="samp">.</samp>’ and ‘<samp class="samp">'</samp>’ if they +are preceded by space, so that reflowing the input doesn’t turn them +into control lines. + +</li><li>Do not use spaces to perform indentation or align columns of a table. +Leading spaces are reliable when text is not being filled. + +</li><li>Comment your document. It is never too soon to apply comments to +record information of use to future document maintainers (including your +future self). We thus introduce another escape sequence, <code class="code">\"</code>, +which causes GNU <code class="code">troff</code> to ignore the remainder of the input line. + +</li><li>Use the empty request—a control character followed immediately by a +newline—to visually manage separation of material in input files. +Many of the <code class="code">groff</code> project’s own documents use an empty request +between sentences, after macro definitions, and where a break is +expected, and two empty requests between paragraphs or other requests or +macro calls that will introduce vertical space into the document. + +<p>You can combine the empty request with the comment escape sequence to +include whole-line comments in your document, and even “comment out” +sections of it. +</p></li></ul> + +<p>We conclude this section with an example sufficiently long to illustrate +most of the above suggestions in practice. For the purpose of fitting +the example between the margins of this manual with the font used for +its typeset version, we have shortened the input line length to 56 +columns. As before, an arrow → indicates a tab character. +</p> +<table class="cartouche" border="1"><tr><td> +<div class="example"> +<pre class="example-preformatted">.\" nroff this_file.roff | less +.\" groff -T ps this_file.roff > this_file.ps +→The theory of relativity is intimately connected with +the theory of space and time. +. +I shall therefore begin with a brief investigation of +the origin of our ideas of space and time, +although in doing so I know that I introduce a +controversial subject. \" remainder of paragraph elided +. +. + +→The experiences of an individual appear to us arranged +in a series of events; +in this series the single events which we remember +appear to be ordered according to the criterion of +\[lq]earlier\[rq] and \[lq]later\[rq], \" punct swapped +which cannot be analysed further. +. +There exists, +therefore, +for the individual, +an I-time, +or subjective time. +. +This itself is not measurable. +. +I can, +indeed, +associate numbers with the events, +in such a way that the greater number is associated with +the later event than with an earlier one; +but the nature of this association may be quite +arbitrary. +. +This association I can define by means of a clock by +comparing the order of events furnished by the clock +with the order of a given series of events. +. +We understand by a clock something which provides a +series of events which can be counted, +and which has other properties of which we shall speak +later. +.\" Albert Einstein, _The Meaning of Relativity_, 1922 +</pre></div> +</td></tr></table> + +<hr> +</div> +</div> +<div class="section-level-extent" id="Page-Geometry"> +<div class="nav-panel"> +<p> +Next: <a href="#Measurements" accesskey="n" rel="next">Measurements</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Page-Geometry-1">5.2 Page Geometry</h3> +<a class="index-entry-id" id="index-page_002c-geometry-of"></a> +<a class="index-entry-id" id="index-geometry_002c-page"></a> + +<p><code class="code">roff</code> systems format text under certain assumptions about the size +of the output medium, or page. For the formatter to correctly break a +line it is filling, it must know the line length, which it derives from +the page width (see <a class="pxref" href="#Line-Layout">Line Layout</a>). For it to decide whether to write +an output line to the current page or wait until the next one, it must +know the page length (see <a class="pxref" href="#Page-Layout">Page Layout</a>). +</p> +<a class="index-entry-id" id="index-device-resolution"></a> +<a class="index-entry-id" id="index-resolution_002c-device"></a> +<a class="index-entry-id" id="index-basic-units"></a> +<a class="index-entry-id" id="index-units_002c-basic"></a> +<a class="index-entry-id" id="index-machine-units"></a> +<a class="index-entry-id" id="index-units_002c-machine"></a> +<p>A device’s <em class="dfn">resolution</em> converts practical units like inches or +centimeters to <em class="dfn">basic units</em>, a convenient length measure for the +output device or file format. The formatter and output driver use basic +units to reckon page measurements. The device description file defines +its resolution and page dimensions (see <a class="pxref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>). +</p> +<a class="index-entry-id" id="index-page"></a> +<p>A <em class="dfn">page</em> is a two-dimensional structure upon which a <code class="code">roff</code> +system imposes a rectangular coordinate system with its upper left +corner as the origin. Coordinate values are in basic units and increase +down and to the right. Useful ones are therefore always positive and +within numeric ranges corresponding to the page boundaries. +</p> +<a class="index-entry-id" id="index-drawing-position"></a> +<a class="index-entry-id" id="index-position_002c-drawing"></a> +<p>While the formatter (and, later, output driver) is processing a page, it +keeps track of its <em class="dfn">drawing position</em>, which is the location at +which the next glyph will be written, from which the next motion will be +measured, or where a geometric object will commence rendering. +<a class="index-entry-id" id="index-text-baseline"></a> +<a class="index-entry-id" id="index-baseline_002c-text"></a> +Notionally, glyphs are drawn from the text baseline upward and to the +right.<a class="footnote" id="DOCF33" href="#FOOT33"><sup>33</sup></a> The <em class="dfn">text baseline</em> is a (usually invisible) line upon +which the glyphs of a typeface are aligned. A glyph therefore +“starts” at its bottom-left corner. If drawn at the origin, a typical +letter glyph would lie partially or wholly off the page, depending on +whether, like “g”, it features a descender below the baseline. +</p> +<a class="index-entry-id" id="index-page-offset"></a> +<a class="index-entry-id" id="index-offset_002c-page"></a> +<p>Such a situation is nearly always undesirable. It is furthermore +conventional not to write or draw at the extreme edges of the page. +Therefore the initial drawing position of a <code class="code">roff</code> formatter is not +at the origin, but below and to the right of it. This rightward shift +from the left edge is known as the <em class="dfn">page +offset</em>.<a class="footnote" id="DOCF34" href="#FOOT34"><sup>34</sup></a> The downward shift leaves room for a text output +line. +</p> +<p>Text is arranged on a one-dimensional lattice of text baselines from the +top to the bottom of the page. +<a class="index-entry-id" id="index-vertical-spacing"></a> +<a class="index-entry-id" id="index-spacing_002c-vertical"></a> +<a class="index-entry-id" id="index-vee"></a> +<em class="dfn">Vertical spacing</em> is the distance between adjacent text baselines. +Typographic tradition sets this quantity to 120% of the type size. The +initial drawing position is one unit of vertical spacing below the page +top. Typographers term this unit a <i class="slanted">vee</i>. +</p> +<a class="index-entry-id" id="index-page-break"></a> +<a class="index-entry-id" id="index-break_002c-page"></a> +<a class="index-entry-id" id="index-page-ejection"></a> +<a class="index-entry-id" id="index-ejection_002c-page"></a> +<p>Vertical spacing has an impact on page-breaking decisions. Generally, +when a break occurs, the formatter moves the drawing position to the +next text baseline automatically. If the formatter were already writing +to the last line that would fit on the page, advancing by one vee would +place the next text baseline off the page. Rather than let that happen, +<code class="code">roff</code> formatters instruct the output driver to eject the page, +start a new one, and again set the drawing position to one vee below the +page top; this is a <em class="dfn">page break</em>. +</p> +<p>When the last line of input text corresponds to the last output line +that fits on the page, the break caused by the end of input will also +break the page, producing a useless blank one. Macro packages keep +users from having to confront this difficulty by setting “traps” +(see <a class="pxref" href="#Traps">Traps</a>); moreover, all but the simplest page layouts tend to +have headers and footers, or at least bear vertical margins larger than +one vee. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Measurements"> +<div class="nav-panel"> +<p> +Next: <a href="#Numeric-Expressions" accesskey="n" rel="next">Numeric Expressions</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Measurements-1">5.3 Measurements</h3> +<a class="index-entry-id" id="index-measurements"></a> +<a class="index-entry-id" id="index-scaling-indicator"></a> +<a class="index-entry-id" id="index-indicator_002c-scaling"></a> + +<a class="index-entry-id" id="index-units-of-measurement"></a> +<a class="index-entry-id" id="index-measurement-units"></a> +<p>The formatter sometimes requires the input of numeric parameters to +specify measurements. These are specified as integers or decimal +fractions with an optional <em class="dfn">scaling unit</em> suffixed. A scaling unit +is a letter that immediately follows the last digit of a number. Digits +after the decimal point are optional. Measurement expressions include +‘<samp class="samp">10.5p</samp>’, ‘<samp class="samp">11i</samp>’, and ‘<samp class="samp">3.c</samp>’. +</p> +<a class="index-entry-id" id="index-basic-units_002c-conversion-to"></a> +<a class="index-entry-id" id="index-units_002c-basic_002c-conversion-to"></a> +<a class="index-entry-id" id="index-conversion-to-basic-units"></a> +<p>Measurements are scaled by the scaling unit and stored internally (with +any fractional part discarded) in basic units. +<a class="index-entry-id" id="index-device-resolution_002c-obtaining-in-the-formatter"></a> +<a class="index-entry-id" id="index-resolution_002c-device_002c-obtaining-in-the-formatter"></a> +The device resolution can therefore be obtained by storing a value of +‘<samp class="samp">1i</samp>’ to a register. The only constraint on the basic unit is that +it is at least as small as any other unit. +</p> +<dl class="table"> +<dd><a class="index-entry-id" id="index-basic-scaling-unit-_0028u_0029"></a> +<a class="index-entry-id" id="index-u-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-u"></a> +<a class="index-entry-id" id="index-scaling-unit-u"></a> +</dd> +<dt><code class="code">u</code></dt> +<dd><p>Basic unit. +</p> +</dd> +<dt id='index-inch-scaling-unit-_0028i_0029'><span><code class="code">i</code><a class="copiable-link" href='#index-inch-scaling-unit-_0028i_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-i-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-i"></a> +<a class="index-entry-id" id="index-scaling-unit-i"></a> +<p>Inch; defined as 2.54 centimeters. +</p> +</dd> +<dt id='index-centimeter-scaling-unit-_0028c_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centimeter-scaling-unit-_0028c_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-c-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-c"></a> +<a class="index-entry-id" id="index-scaling-unit-c"></a> +<p>Centimeter; a centimeter is about 0.3937 inches. +</p> +</dd> +<dt id='index-point-scaling-unit-_0028p_0029'><span><code class="code">p</code><a class="copiable-link" href='#index-point-scaling-unit-_0028p_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-p-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-p"></a> +<a class="index-entry-id" id="index-scaling-unit-p"></a> +<p>Point; a typesetter’s unit used for measuring type size. +There are 72 points to an inch. +</p> +</dd> +<dt id='index-pica-scaling-unit-_0028P_0029'><span><code class="code">P</code><a class="copiable-link" href='#index-pica-scaling-unit-_0028P_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-P-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-P"></a> +<a class="index-entry-id" id="index-scaling-unit-P"></a> +<p>Pica; another typesetter’s unit. There are 6 picas to an inch and +12 points to a pica. +</p> +</dd> +<dt><code class="code">s</code></dt> +<dt><code class="code">z</code></dt> +<dd><p>See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>, for a discussion of these units. +</p> +</dd> +<dt><code class="code">f</code></dt> +<dd><p>GNU <code class="code">troff</code> defines this unit to scale decimal fractions in the +interval [0, 1] to 16-bit unsigned integers. It multiplies a quantity +by 65,536. See <a class="xref" href="#Colors">Colors</a>, for usage. +</p></dd> +</dl> + +<p>The magnitudes of other scaling units depend on the text formatting +parameters in effect. These are useful when specifying measurements +that need to scale with the typeface or vertical spacing. +</p> +<dl class="table"> +<dt id='index-em-scaling-unit-_0028m_0029'><span><code class="code">m</code><a class="copiable-link" href='#index-em-scaling-unit-_0028m_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-m-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-m"></a> +<a class="index-entry-id" id="index-scaling-unit-m"></a> +<p>Em; an em is equal to the current type size in points. It is named thus +because it is approximately the width of the letter ‘<samp class="samp">M</samp>’. +</p> +</dd> +<dt id='index-en-scaling-unit-_0028n_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-en-scaling-unit-_0028n_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-n-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-n"></a> +<a class="index-entry-id" id="index-scaling-unit-n"></a> +<p>En; an en is one-half em. +</p> +</dd> +<dt id='index-vertical-space-unit-_0028v_0029'><span><code class="code">v</code><a class="copiable-link" href='#index-vertical-space-unit-_0028v_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-space_002c-vertical_002c-unit-_0028v_0029"></a> +<a class="index-entry-id" id="index-vee-scaling-unit-_0028v_0029"></a> +<a class="index-entry-id" id="index-v-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-v"></a> +<a class="index-entry-id" id="index-scaling-unit-v"></a> +<p>Vee; recall <a class="ref" href="#Page-Geometry">Page Geometry</a>. +</p> +</dd> +<dt id='index-M-scaling-unit'><span><code class="code">M</code><a class="copiable-link" href='#index-M-scaling-unit'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-unit_002c-scaling_002c-M"></a> +<a class="index-entry-id" id="index-scaling-unit-M"></a> +<p>Hundredth of an em. +</p></dd> +</dl> + + + +<ul class="mini-toc"> +<li><a href="#Motion-Quanta" accesskey="1">Motion Quanta</a></li> +<li><a href="#Default-Units" accesskey="2">Default Units</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Motion-Quanta"> +<div class="nav-panel"> +<p> +Next: <a href="#Default-Units" accesskey="n" rel="next">Default Units</a>, Previous: <a href="#Measurements" accesskey="p" rel="prev">Measurements</a>, Up: <a href="#Measurements" accesskey="u" rel="up">Measurements</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Motion-Quanta-1">5.3.1 Motion Quanta</h4> +<a class="index-entry-id" id="index-motion-quanta"></a> +<a class="index-entry-id" id="index-quanta_002c-motion"></a> + +<p>An output device’s basic unit <code class="code">u</code> is not necessarily its smallest +addressable length; <code class="code">u</code> can be smaller to avoid problems with +integer roundoff. The minimum distances that a device can work with in +the horizontal and vertical directions are termed its <em class="dfn">motion +quanta</em>. Measurements are rounded to applicable motion quanta. +Half-quantum fractions round toward zero. +</p> +<a class="index-entry-id" id="index-horizontal-motion-quantum-register-_0028_002eH_0029"></a> +<a class="index-entry-id" id="index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029"></a> +<a class="index-entry-id" id="index-horizontal-resolution-register-_0028_002eH_0029"></a> +<a class="index-entry-id" id="index-resolution_002c-horizontal_002c-register-_0028_002eH_0029"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002eH_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.H]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eH_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eH"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eV_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.V]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eV_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eV"></a> +<p>These read-only registers interpolate the horizontal and vertical motion +quanta, respectively, of the output device in basic units. +</p></dd></dl> + +<p>For example, we might draw short baseline rules on a terminal device as +follows. See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tm \n[.H] + error→ 24 +.nf +\l'36u' 36u +\l'37u' 37u + ⇒ _ 36u + ⇒ __ 37u +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="Default-Units"> +<div class="nav-panel"> +<p> +Previous: <a href="#Motion-Quanta" accesskey="p" rel="prev">Motion Quanta</a>, Up: <a href="#Measurements" accesskey="u" rel="up">Measurements</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Default-Units-1">5.3.2 Default Units</h4> +<a class="index-entry-id" id="index-default-units"></a> +<a class="index-entry-id" id="index-units_002c-default"></a> + +<p>A general-purpose register (one created or updated with the <code class="code">nr</code> +request; see see <a class="pxref" href="#Registers">Registers</a>) is implicitly dimensionless, or reckoned +in basic units if interpreted in a measurement context. But it is +convenient for many requests and escape sequences to infer a scaling +unit for an argument if none is specified. An explicit scaling unit +(not after a closing parenthesis) can override an undesirable default. +Effectively, the default unit is suffixed to the expression if a scaling +unit is not already present. GNU <code class="code">troff</code>’s use of integer +arithmetic should also be kept in mind (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>). +</p> +<p>The <code class="code">ll</code> request interprets its argument in ems by default. +Consider several attempts to set a line length of 3.5 inches when +the type size is 10 points on a terminal device with a resolution +of 240 basic units and horizontal motion quantum of 24. Some +expressions become zero; the request clamps them to that quantum. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 3.5i \" 3.5i (= 840u) +.ll 7/2 \" 7u/2u -> 3u -> 3m -> 0, clamped to 24u +.ll (7 / 2)u \" 7u/2u -> as above +.ll 7/2i \" 7u/2i -> 7u/480u -> 0 -> as above +.ll 7i/2 \" 7i/2u -> 1680u/2m -> 1680u/24u -> 35u +.ll 7i/2u \" 3.5i (= 840u) +</pre></div></div> + +<a class="index-entry-id" id="index-measurements_002c-specifying-safely"></a> +<p>The safest way to specify measurements is to attach a scaling unit. To +multiply or divide by a dimensionless quantity, use ‘<samp class="samp">u</samp>’ as its +scaling unit. +</p> + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Numeric-Expressions"> +<div class="nav-panel"> +<p> +Next: <a href="#Identifiers" accesskey="n" rel="next">Identifiers</a>, Previous: <a href="#Measurements" accesskey="p" rel="prev">Measurements</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Numeric-Expressions-1">5.4 Numeric Expressions</h3> +<a class="index-entry-id" id="index-numeric-expressions"></a> +<a class="index-entry-id" id="index-expressions_002c-numeric"></a> + +<p>A <em class="dfn">numeric expression</em> evaluates to an integer: it can be as +simple as a literal ‘<samp class="samp">0</samp>’ or it can be a complex sequence of register +and string interpolations interleaved with measurements and operators. +</p> +<p>GNU <code class="code">troff</code> provides a set of mathematical and logical operators +familiar to programmers—as well as some unusual ones—but supports +only integer arithmetic.<a class="footnote" id="DOCF35" href="#FOOT35"><sup>35</sup></a> The internal data type +used for computing results is usually a 32-bit signed integer, which +suffices to represent magnitudes within a range of ±2 +billion.<a class="footnote" id="DOCF36" href="#FOOT36"><sup>36</sup></a> +</p> +<a class="index-entry-id" id="index-arithmetic-operators"></a> +<a class="index-entry-id" id="index-operators_002c-arithmetic"></a> +<a class="index-entry-id" id="index-truncating-division"></a> +<a class="index-entry-id" id="index-addition"></a> +<a class="index-entry-id" id="index-subtraction"></a> +<a class="index-entry-id" id="index-multiplication"></a> +<a class="index-entry-id" id="index-division_002c-truncating"></a> +<a class="index-entry-id" id="index-modulus"></a> +<a class="index-entry-id" id="index-_002b"></a> +<a class="index-entry-id" id="index-_002d"></a> +<a class="index-entry-id" id="index-_002a"></a> +<a class="index-entry-id" id="index-_002f"></a> +<a class="index-entry-id" id="index-_0025"></a> +<p>Arithmetic infix operators perform a function on the numeric expressions +to their left and right; they are <code class="code">+</code> (addition), <code class="code">-</code> +(subtraction), <code class="code">*</code> (multiplication), <code class="code">/</code> (truncating +division), and <code class="code">%</code> (modulus). <em class="dfn">Truncating division</em> rounds to +the integer nearer to zero, no matter how large the fractional portion. +Overflow and division (or modulus) by zero are errors and abort +evaluation of a numeric expression. +<a class="index-entry-id" id="index-unary-arithmetic-operators"></a> +<a class="index-entry-id" id="index-operators_002c-unary-arithmetic"></a> +<a class="index-entry-id" id="index-negation"></a> +<a class="index-entry-id" id="index-assertion-_0028arithmetic-operator_0029"></a> +<a class="index-entry-id" id="index-_002d-1"></a> +<a class="index-entry-id" id="index-_002b-1"></a> +<a class="index-entry-id" id="index-if-request_002c-and-the-_0021-operator"></a> +<a class="index-entry-id" id="index-while-request_002c-and-the-_0021-operator"></a> +</p> +<p>Arithmetic unary operators operate on the numeric expression to their +right; they are <code class="code">-</code> (negation) and <code class="code">+</code> (assertion—for +completeness; it does nothing). The unary minus must often be used +with parentheses to avoid confusion with the decrementation operator, +discussed below. +</p> +<p>Observe the rounding behavior and effect of negative operands on the +modulus and truncating division operators. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr T 199/100 +.nr U 5/2 +.nr V (-5)/2 +.nr W 5/-2 +.nr X 5%2 +.nr Y (-5)%2 +.nr Z 5%-2 +T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z] + ⇒ T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1 +</pre></div></div> + +<p>The sign of the modulus of operands of mixed signs is determined by the +sign of the first. Division and modulus operators satisfy the following +property: given a dividend <var class="var">a</var> and a divisor <var class="var">b</var>, a +quotient <var class="var">q</var> formed by ‘<samp class="samp">(a / b)</samp>’ and a +remainder <var class="var">r</var> by ‘<samp class="samp">(a % b)</samp>’, then <em class="math">qb + r = a</em>. +</p> +<a class="index-entry-id" id="index-scaling-operator"></a> +<a class="index-entry-id" id="index-operator_002c-scaling"></a> +<a class="index-entry-id" id="index-_003b"></a> +<p>GNU <code class="code">troff</code>’s scaling operator, used with parentheses as +<code class="code">(<var class="var">c</var>;<var class="var">e</var>)</code>, evaluates a numeric expression <var class="var">e</var> +using <var class="var">c</var> as the default scaling unit. If <var class="var">c</var> is omitted, +scaling units are ignored in the evaluation of <var class="var">e</var>. This +operator can save typing by avoiding the attachment of scaling units to +every operand out of caution. Your macros can select a sensible default +unit in case the user neglects to supply one. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" Indent by amount given in first argument; assume ens. +.de Indent +. in (n;\\$1) +.. +</pre></div></div> + +<p>Without the scaling operator, the foregoing macro would, if called with +a unitless argument, cause indentation by the <code class="code">in</code> request’s +default scaling unit (ems). The result would be twice as much +indentation as expected. +</p> +<a class="index-entry-id" id="index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029"></a> +<a class="index-entry-id" id="index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029"></a> +<a class="index-entry-id" id="index-maximum-operator"></a> +<a class="index-entry-id" id="index-minimum-operator"></a> +<a class="index-entry-id" id="index-_003e_003f"></a> +<a class="index-entry-id" id="index-_003c_003f"></a> +<p>GNU <code class="code">troff</code> also provides a pair of operators to compute the +extrema of two operands: <code class="code">>?</code> (maximum) and <code class="code"><?</code> (minimum). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr slots 5 +.nr candidates 3 +.nr salaries (\n[slots] <? \n[candidates]) +Looks like we'll end up paying \n[salaries] salaries. + ⇒ Looks like we'll end up paying 3 salaries. +</pre></div></div> + +<a class="index-entry-id" id="index-comparison-operators"></a> +<a class="index-entry-id" id="index-operators_002c-comparison"></a> +<a class="index-entry-id" id="index-greater-than-_0028or-equal-to_0029-operator"></a> +<a class="index-entry-id" id="index-less-than-_0028or-equal-to_0029-operator"></a> +<a class="index-entry-id" id="index-equality-operator"></a> +<a class="index-entry-id" id="index-_003c"></a> +<a class="index-entry-id" id="index-_003e"></a> +<a class="index-entry-id" id="index-_003e_003d"></a> +<a class="index-entry-id" id="index-_003c_003d"></a> +<a class="index-entry-id" id="index-_003d"></a> +<a class="index-entry-id" id="index-_003d_003d"></a> +<p>Comparison operators comprise <code class="code"><</code> (less than), <code class="code">></code> (greater +than), <code class="code"><=</code> (less than or equal), <code class="code">>=</code> (greater than or +equal), and <code class="code">=</code> (equal). <code class="code">==</code> is a synonym for <code class="code">=</code>. +When evaluated, a comparison is replaced with ‘<samp class="samp">0</samp>’ if it is false +and ‘<samp class="samp">1</samp>’ if true. In the <code class="code">roff</code> language, positive values are +true, others false. +</p> +<a class="index-entry-id" id="index-logical-operators"></a> +<a class="index-entry-id" id="index-operators_002c-logical"></a> +<a class="index-entry-id" id="index-logical-_0060_0060and_0027_0027-operator"></a> +<a class="index-entry-id" id="index-logical-conjunction-operator"></a> +<a class="index-entry-id" id="index-logical-_0060_0060or_0027_0027-operator"></a> +<a class="index-entry-id" id="index-logical-disjunction-operator"></a> +<a class="index-entry-id" id="index-_0026"></a> +<a class="index-entry-id" id="index-_003a"></a> +<p>We can operate on truth values with the logical operators <code class="code">&</code> +(logical conjunction or “and”) and <code class="code">:</code> (logical disjunction or +“or”). They evaluate as comparison operators do. +</p> +<a class="index-entry-id" id="index-_0021"></a> +<a class="index-entry-id" id="index-complementation_002c-logical"></a> +<a class="index-entry-id" id="index-logical-complementation-operator"></a> +<a class="index-entry-id" id="index-logical-not_002c-limitation-in-expression"></a> +<a class="index-entry-id" id="index-expression_002c-limitation-of-logical-not-in"></a> +<p>A logical complementation (“not”) operator, <code class="code">!</code>, works only +within <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests. +Furthermore, <code class="code">!</code> is recognized only at the beginning of a numeric +expression not contained by another numeric expression. In other words, +it must be the “outermost” operator. Including it elsewhere in the +expression produces a warning in the ‘<samp class="samp">number</samp>’ category +(see <a class="pxref" href="#Warnings">Warnings</a>), and its expression evaluates false. This +unfortunate limitation maintains compatibility with <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>. Test a numeric expression for falsity by +comparing it to a false value.<a class="footnote" id="DOCF37" href="#FOOT37"><sup>37</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr X 1 +.nr Y 0 +.\" This does not work as expected. +.if (\n[X])&(!\n[Y]) .nop A: X is true, Y is false +. +.\" Use this construct instead. +.if (\n[X])&(\n[Y]<=0) .nop B: X is true, Y is false + error→ warning: expected numeric expression, got '!' + ⇒ B: X is true, Y is false +</pre></div></div> + +<a class="index-entry-id" id="index-parentheses"></a> +<a class="index-entry-id" id="index-order-of-evaluation-in-expressions"></a> +<a class="index-entry-id" id="index-expression_002c-order-of-evaluation"></a> +<a class="index-entry-id" id="index-_0028"></a> +<a class="index-entry-id" id="index-_0029"></a> +<p>The <code class="code">roff</code> language has no operator precedence: expressions are +evaluated strictly from left to right, in contrast to schoolhouse +arithmetic. Use parentheses <code class="code">(</code> <code class="code">)</code> to impose a desired +precedence upon subexpressions. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr X 3+5*4 +.nr Y (3+5)*4 +.nr Z 3+(5*4) +X=\n[X] Y=\n[Y] Z=\n[Z] + ⇒ X=32 Y=32 Z=23 +</pre></div></div> + +<a class="index-entry-id" id="index-_002b_002c-and-page-motion"></a> +<a class="index-entry-id" id="index-_002d_002c-and-page-motion"></a> +<a class="index-entry-id" id="index-motion-operators"></a> +<a class="index-entry-id" id="index-operators_002c-motion"></a> +<a class="index-entry-id" id="index-_002b-_0028unary_0029"></a> +<a class="index-entry-id" id="index-_002d-_0028unary_0029"></a> +<p>For many requests and escape sequences that cause motion on the page, +the unary operators <code class="code">+</code> and <code class="code">-</code> work differently when leading +a numeric expression. They then indicate a motion relative to the +drawing position: positive is down in vertical contexts, right in +horizontal ones. +</p> +<a class="index-entry-id" id="index-bp-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-in-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-ll-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-lt-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-nm-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-nr-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-pl-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-pn-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-po-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-ps-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-pvs-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-rt-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-ti-request_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-_005cH_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-_005cR_002c-using-_002b-and-_002d-with"></a> +<a class="index-entry-id" id="index-_005cs_002c-using-_002b-and-_002d-with"></a> +<p><code class="code">+</code> and <code class="code">-</code> are also treated differently by the following +requests and escape sequences: <code class="code">bp</code>, <code class="code">in</code>, <code class="code">ll</code>, +<code class="code">lt</code>, <code class="code">nm</code>, <code class="code">nr</code>, <code class="code">pl</code>, <code class="code">pn</code>, <code class="code">po</code>, +<code class="code">ps</code>, <code class="code">pvs</code>, <code class="code">rt</code>, <code class="code">ti</code>, <code class="code">\H</code>, <code class="code">\R</code>, and +<code class="code">\s</code>. Here, leading plus and minus signs serve as incrementation +and decrementation operators, respectively. To negate an expression, +subtract it from zero or include the unary minus in parentheses with its +argument. See <a class="xref" href="#Setting-Registers">Setting Registers</a>, for examples. +</p> +<a class="index-entry-id" id="index-_007c"></a> +<a class="index-entry-id" id="index-_007c_002c-and-page-motion"></a> +<a class="index-entry-id" id="index-absolute-_0028sic_0029-position-operator-_0028_007c_0029"></a> +<a class="index-entry-id" id="index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029"></a> +<a class="index-entry-id" id="index-boundary_002drelative-motion-operator-_0028_007c_0029"></a> +<p>A leading <code class="code">|</code> operator indicates a motion relative not to the +drawing position but to a boundary. For horizontal motions, the +measurement specifies a distance relative to a drawing position +corresponding to the beginning of the <em class="emph">input</em> line. By default, +tab stops reckon movements in this way. Most escape sequences do not; +<code class="code">|</code> tells them to do so. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Mind the \h'1.2i'gap. +.br +Mind the \h'|1.2i'gap. +.br +Mind the +\h'|1.2i'gap. + ⇒ Mind the gap. + ⇒ Mind the gap. + ⇒ Mind the gap. +</pre></div></div> + +<p>One use of this feature is to define macros whose scope is limited to +the output they format. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" underline word $1 with trailing punctuation $2 +.de Underline +. nop \\$1\l'|0\[ul]'\\$2 +.. +Typographical emphasis is best used +.Underline sparingly . +</pre></div></div> + +<p>In the above example, ‘<samp class="samp">|0</samp>’ specifies a negative motion from the +current position (at the end of the argument just emitted, <code class="code">\$1</code>) +to the beginning of the input line. Thus, the <code class="code">\l</code> escape sequence +in this case draws a line from right to left. A macro call occurs at +the beginning of an input line;<a class="footnote" id="DOCF38" href="#FOOT38"><sup>38</sup></a> if the <code class="code">|</code> +operator were omitted, then the underline would be drawn at zero +distance from the current position, producing device-dependent, and +likely undesirable, results. On the ‘<samp class="samp">ps</samp>’ output device, it +underlines the period. +</p> +<p>For vertical motions, the <code class="code">|</code> operator specifies a distance from +the first text baseline on the page or in the current +diversion,<a class="footnote" id="DOCF39" href="#FOOT39"><sup>39</sup></a> using the current vertical +spacing. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">A +.br +B \Z'C'\v'|0'D + ⇒ A D + ⇒ B C +</pre></div></div> + +<p>In the foregoing example, we’ve used the <code class="code">\Z</code> escape sequence +(see <a class="pxref" href="#Page-Motions">Page Motions</a>) to restore the drawing position after formatting +‘<samp class="samp">C</samp>’, then moved vertically to the first text baseline on the page. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cB_0027anything_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\B<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cB_0027anything_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cB"></a> +<a class="index-entry-id" id="index-numeric-expression_002c-valid"></a> +<a class="index-entry-id" id="index-valid-numeric-expression"></a> +<p>Interpolate 1 if <var class="var">anything</var> is a valid numeric expression, +and 0 otherwise. The delimiter need not be a neutral apostrophe; +see <a class="ref" href="#Delimiters">Delimiters</a>. +</p></dd></dl> + +<p>You might use <code class="code">\B</code> along with the <code class="code">if</code> request to filter out +invalid macro or string arguments. See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" Indent by amount given in first argument; assume ens. +.de Indent +. if \B'\\$1' .in (n;\\$1) +.. +</pre></div></div> + +<p>A register interpolated as an operand in a numeric expression must have +an Arabic format; luckily, this is the default. See <a class="xref" href="#Assigning-Register-Formats">Assigning Register Formats</a>. +</p> +<a class="index-entry-id" id="index-space-characters_002c-in-expressions"></a> +<a class="index-entry-id" id="index-expressions_002c-and-space-characters"></a> +<p>Because spaces separate arguments to requests, spaces are not allowed in +numeric expressions unless the (sub)expression containing them is +surrounded by parentheses. See <a class="xref" href="#Invoking-Requests">Invoking Requests</a>, and +<a class="ref" href="#Conditionals-and-Loops">Conditionals and Loops</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nf +.nr a 1+2 + 2+1 +\na + error→ expected numeric expression, got a space + ⇒ 3 +.nr a 1+(2 + 2)+1 +\na + ⇒ 6 +</pre></div></div> + +<p>The <code class="code">nr</code> request (see <a class="pxref" href="#Setting-Registers">Setting Registers</a>) expects its second and +optional third arguments to be numeric expressions; a bare <code class="code">+</code> does +not qualify, so our first attempt got a warning. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Identifiers"> +<div class="nav-panel"> +<p> +Next: <a href="#Formatter-Instructions" accesskey="n" rel="next">Formatter Instructions</a>, Previous: <a href="#Numeric-Expressions" accesskey="p" rel="prev">Numeric Expressions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Identifiers-1">5.5 Identifiers</h3> +<a class="index-entry-id" id="index-identifiers"></a> + +<p>An <em class="dfn">identifier</em> labels a GNU <code class="code">troff</code> datum such as a register, +name (macro, string, or diversion), typeface, color, special character, +character class, environment, or stream. Valid identifiers consist of +one or more ordinary characters. +<a class="index-entry-id" id="index-ordinary-character"></a> +<a class="index-entry-id" id="index-character_002c-ordinary"></a> +An <i class="slanted">ordinary character</i> is an input character that is not the +escape character, a leader, tab, newline, or invalid as GNU <code class="code">troff</code> +input. +</p> +<a class="index-entry-id" id="index-invalid-input-characters"></a> +<a class="index-entry-id" id="index-input-characters_002c-invalid"></a> +<a class="index-entry-id" id="index-characters_002c-invalid-input"></a> +<a class="index-entry-id" id="index-Unicode"></a> +<p>Invalid input characters are a subset of control characters (from the +sets “C0 Controls” and “C1 Controls” as Unicode describes them). +When GNU <code class="code">troff</code> encounters one in an identifier, it produces a +warning in category ‘<samp class="samp">input</samp>’ (see <a class="pxref" href="#Warnings">Warnings</a>). They are removed +during interpretation: an identifier ‘<samp class="samp">foo</samp>’, followed by an invalid +character and then ‘<samp class="samp">bar</samp>’, is processed as ‘<samp class="samp">foobar</samp>’. +</p> +<p>On a machine using the ISO 646, 8859, or 10646 character encodings, +invalid input characters are <code class="code">0x00</code>, <code class="code">0x08</code>, <code class="code">0x0B</code>, +<code class="code">0x0D</code>–<code class="code">0x1F</code>, and <code class="code">0x80</code>–<code class="code">0x9F</code>. On an +<abbr class="acronym">EBCDIC</abbr> host, they are <code class="code">0x00</code>–<code class="code">0x01</code>, <code class="code">0x08</code>, +<code class="code">0x09</code>, <code class="code">0x0B</code>, <code class="code">0x0D</code>–<code class="code">0x14</code>, +<code class="code">0x17</code>–<code class="code">0x1F</code>, and +<code class="code">0x30</code>–<code class="code">0x3F</code>.<a class="footnote" id="DOCF40" href="#FOOT40"><sup>40</sup></a> Some of these code points are used +by GNU <code class="code">troff</code> internally, making it non-trivial to extend the +program to accept UTF-8 or other encodings that use characters from +these ranges.<a class="footnote" id="DOCF41" href="#FOOT41"><sup>41</sup></a> +</p> +<p>Thus, the identifiers ‘<samp class="samp">br</samp>’, ‘<samp class="samp">PP</samp>’, ‘<samp class="samp">end-list</samp>’, +‘<samp class="samp">ref*normal-print</samp>’, ‘<samp class="samp">|</samp>’, ‘<samp class="samp">@_</samp>’, and ‘<samp class="samp">!"#$%'()*+,-./</samp>’ +are all valid. Discretion should be exercised to prevent confusion. +Identifiers starting with ‘<samp class="samp">(</samp>’ or ‘<samp class="samp">[</samp>’ require care. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr x 9 +.nr y 1 +.nr (x 2 +.nr [y 3 +.nr sum1 (\n(x + \n[y]) + error→ a space character is not allowed in an escape + error→ sequence parameter +A:2+3=\n[sum1] +.nr sum2 (\n((x + \n[[y]) +B:2+3=\n[sum2] +.nr sum3 (\n[(x] + \n([y) +C:2+3=\n[sum3] + ⇒ A:2+3=1 B:2+3=5 C:2+3=5 +</pre></div></div> + +<a class="index-entry-id" id="index-_005d_002c-as-part-of-an-identifier"></a> +<p>An identifier with a closing bracket (‘<samp class="samp">]</samp>’) in its name can’t be +accessed with bracket-form escape sequences that expect an identifier as +a parameter. For example, ‘<samp class="samp">\[foo]]</samp>’ accesses the glyph ‘<samp class="samp">foo</samp>’, +followed by ‘<samp class="samp">]</samp>’ in whatever the surrounding context is, whereas +‘<samp class="samp">\C'foo]'</samp>’ formats a glyph named ‘<samp class="samp">foo]</samp>’. Similarly, the +identifier ‘<samp class="samp">(</samp>’ can’t be interpolated <em class="emph">except</em> with bracket +forms. +</p> +<a class="index-entry-id" id="index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"></a> +<a class="index-entry-id" id="index-_005b_002c-macro-names-starting-with_002c-and-refer"></a> +<a class="index-entry-id" id="index-_005d_002c-macro-names-starting-with_002c-and-refer"></a> +<a class="index-entry-id" id="index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer"></a> +<p>If you begin a macro, string, or diversion name with either of the +characters ‘<samp class="samp">[</samp>’ or ‘<samp class="samp">]</samp>’, you foreclose use of the <code class="code">grefer</code> +preprocessor, which recognizes ‘<samp class="samp">.[</samp>’ and ‘<samp class="samp">.]</samp>’ as bibliographic +reference delimiters. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cA_0027anything_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\A<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cA_0027anything_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cA"></a> +<p>Interpolate 1 if <var class="var">anything</var> is a valid identifier, and 0 +otherwise. The delimiter need not be a neutral apostrophe; see +<a class="ref" href="#Delimiters">Delimiters</a>. Because invalid input characters are removed (see +above), invalid identifiers are empty or contain spaces, tabs, or +newlines. +</p> +<p>You can employ <code class="code">\A</code> to validate a macro argument before using it to +construct another escape sequence or identifier. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" usage: .init-coordinate-pair name val1 val2 +.\" Create a coordinate pair where name!x=val1 and +.\" name!y=val2. +.de init-coordinate-pair +. if \A'\\$1' \{\ +. if \B'\\$2' .nr \\$1!x \\$2 +. if \B'\\$3' .nr \\$1!y \\$3 +. \} +.. +.init-coordinate-pair center 5 10 +The center is at (\n[center!x], \n[center!y]). +.init-coordinate-pair "poi→nt" trash garbage \" ignored +.init-coordinate-pair point trash garbage \" ignored + ⇒ The center is at (5, 10). +</pre></div></div> + +<p>In this example, we also validated the numeric arguments; the registers +‘<samp class="samp">point!x</samp>’ and ‘<samp class="samp">point!y</samp>’ remain undefined. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a> for the <code class="code">\B</code> escape sequence. +</p></dd></dl> + +<a class="index-entry-id" id="index-undefined-identifiers"></a> +<a class="index-entry-id" id="index-identifiers_002c-undefined"></a> +<p>How GNU <code class="code">troff</code> handles the interpretation of an undefined +identifier depends on the context. There is no way to invoke an +undefined request; such syntax is interpreted as a macro call instead. +If the identifier is interpreted as a string, macro, or diversion, GNU +<code class="code">troff</code> emits a warning in category ‘<samp class="samp">mac</samp>’, defines it as +empty, and interpolates nothing. If the identifier is interpreted as a +register, GNU <code class="code">troff</code> emits a warning in category ‘<samp class="samp">reg</samp>’, +initializes it to zero, and interpolates that value. See <a class="xref" href="#Warnings">Warnings</a>, +<a class="ref" href="#Interpolating-Registers">Interpolating Registers</a>, and <a class="ref" href="#Strings">Strings</a>. Attempting to use an +undefined typeface, special character, color, character class, +environment, or stream generally provokes an error diagnostic. +</p> +<a class="index-entry-id" id="index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings"></a> +<a class="index-entry-id" id="index-common-name-space-of-macros_002c-diversions_002c-and-strings"></a> +<a class="index-entry-id" id="index-macros_002c-shared-name-space-with-strings-and-diversions"></a> +<a class="index-entry-id" id="index-strings_002c-shared-name-space-with-macros-and-diversions"></a> +<a class="index-entry-id" id="index-diversions_002c-shared-name-space-with-macros-and-strings"></a> +<p>Identifiers for requests, macros, strings, and diversions share one name +space; special characters and character classes another. No other +object types do. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de xxx +. nop foo +.. +.di xxx +bar +.br +.di +. +.xxx + ⇒ bar +</pre></div></div> + +<p>The foregoing example shows that GNU <code class="code">troff</code> reuses the identifier +‘<samp class="samp">xxx</samp>’, changing it from a macro to a diversion. No warning is +emitted, and the previous contents of ‘<samp class="samp">xxx</samp>’ are lost. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Formatter-Instructions"> +<div class="nav-panel"> +<p> +Next: <a href="#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="#Identifiers" accesskey="p" rel="prev">Identifiers</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Formatter-Instructions-1">5.6 Formatter Instructions</h3> +<a class="index-entry-id" id="index-formatter-instructions"></a> +<a class="index-entry-id" id="index-instructing-the-formatter"></a> + +<p>To support documents that require more than filling, automatic line +breaking and hyphenation, adjustment, and supplemental inter-sentence +space, the <code class="code">roff</code> language offers two means of embedding +instructions to the formatter. +</p> +<a class="index-entry-id" id="index-request-1"></a> +<p>One is a <em class="dfn">request</em>, which begins with a control character and takes +up the remainder of the input line. Requests often perform relatively +large-scale operations such as setting the page length, breaking the +line, or starting a new page. They also conduct internal operations +like defining macros. +</p> +<a class="index-entry-id" id="index-escape-sequence"></a> +<a class="index-entry-id" id="index-sequence_002c-escape"></a> +<p>The other is an <em class="dfn">escape sequence</em>, which begins with the escape +character and can be embedded anywhere in the input, even in arguments +to requests and other escape sequences. Escape sequences interpolate +special characters, strings, or registers, and handle comparatively +minor formatting tasks like sub- and superscripting. +</p> +<p>Some operations, such as font selection and type size alteration, are +available via both requests and escape sequences. +</p> + + +<ul class="mini-toc"> +<li><a href="#Control-Characters" accesskey="1">Control Characters</a></li> +<li><a href="#Invoking-Requests" accesskey="2">Invoking Requests</a></li> +<li><a href="#Calling-Macros" accesskey="3">Calling Macros</a></li> +<li><a href="#Using-Escape-Sequences" accesskey="4">Using Escape Sequences</a></li> +<li><a href="#Delimiters" accesskey="5">Delimiters</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Control-Characters"> +<div class="nav-panel"> +<p> +Next: <a href="#Invoking-Requests" accesskey="n" rel="next">Invoking Requests</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Control-Characters-1">5.6.1 Control Characters</h4> +<a class="index-entry-id" id="index-control-characters"></a> +<a class="index-entry-id" id="index-configuring-control-characters"></a> +<a class="index-entry-id" id="index-changing-control-characters"></a> + +<p>The mechanism of using <code class="code">roff</code>’s control characters to invoke +requests and call macros was introduced in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>. +Control characters are recognized only at the beginning of an input +line, or at the beginning of the branch of a control structure request; +see <a class="ref" href="#Conditionals-and-Loops">Conditionals and Loops</a>. +</p> +<p>A few requests cause a break implicitly; use the no-break control +character to prevent the break. Break suppression is its sole +behavioral distinction. Employing the no-break control character to +invoke requests that don’t cause breaks is harmless but poor style. +See <a class="xref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> +<a class="index-entry-id" id="index-control-character_002c-changing-_0028cc_0029"></a> +<a class="index-entry-id" id="index-character_002c-control_002c-changing-_0028cc_0029"></a> +<a class="index-entry-id" id="index-no_002dbreak-control-character_002c-changing-_0028c2_0029"></a> +<a class="index-entry-id" id="index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029"></a> +<a class="index-entry-id" id="index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029"></a> +<p>The control ‘<samp class="samp">.</samp>’ and no-break control ‘<samp class="samp">'</samp>’ characters can each +be changed to any ordinary character<a class="footnote" id="DOCF42" href="#FOOT42"><sup>42</sup></a> +with the <code class="code">cc</code> and <code class="code">c2</code> requests, respectively. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ecc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cc"></a> +<p>Recognize the ordinary character <var class="var">o</var> as the control character. +If <var class="var">o</var> is absent or invalid, the default control character +‘<samp class="samp">.</samp>’ is selected. The identity of the control character is +associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ec2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.c2</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ec2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-c2"></a> +<p>Recognize the ordinary character <var class="var">o</var> as the no-break control +character. If <var class="var">o</var> is absent or invalid, the default no-break +control character ‘<samp class="samp">'</samp>’ is selected. The identity of the no-break +control character is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<p>When writing a macro, you might wish to know which control character was +used to call it. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002ebr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.br]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ebr_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ebr-1"></a> +<p>This read-only register interpolates 1 if the currently executing +macro was called using the normal control character and 0 +otherwise. If a macro is interpolated as a string, the <code class="code">.br</code> +register’s value is inherited from the context of the string +interpolation. See <a class="xref" href="#Strings">Strings</a>. +</p> +<a class="index-entry-id" id="index-intercepting-requests"></a> +<a class="index-entry-id" id="index-requests_002c-intercepting"></a> +<a class="index-entry-id" id="index-modifying-requests"></a> +<a class="index-entry-id" id="index-requests_002c-modifying"></a> +<p>Use this register to reliably intercept requests that imply breaks. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.als bp*orig bp +.de bp +. ie \\n[.br] .bp*orig +. el 'bp*orig +.. +</pre></div></div> + +<p>Testing the <code class="code">.br</code> register outside of a macro definition makes no +sense. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Invoking-Requests"> +<div class="nav-panel"> +<p> +Next: <a href="#Calling-Macros" accesskey="n" rel="next">Calling Macros</a>, Previous: <a href="#Control-Characters" accesskey="p" rel="prev">Control Characters</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Invoking-Requests-1">5.6.2 Invoking Requests</h4> +<a class="index-entry-id" id="index-invoking-requests"></a> +<a class="index-entry-id" id="index-requests_002c-invoking"></a> + +<p>A control character is optionally followed by tabs and/or spaces and +then an identifier naming a request or macro. The invocation of an +unrecognized request is interpreted as a macro call. Defining a macro +with the same name as a request replaces the request. Deleting a +request name with the <code class="code">rm</code> request makes it unavailable. The +<code class="code">als</code> request can alias requests, permitting them to be wrapped or +non-destructively replaced. See <a class="xref" href="#Strings">Strings</a>. +</p> +<a class="index-entry-id" id="index-request-arguments"></a> +<a class="index-entry-id" id="index-arguments-to-requests"></a> +<a class="index-entry-id" id="index-tabs_002c-and-macro-arguments"></a> +<a class="index-entry-id" id="index-macro-arguments_002c-and-tabs"></a> +<a class="index-entry-id" id="index-arguments-to-macros_002c-and-tabs"></a> +<a class="index-entry-id" id="index-tabs_002c-and-request-arguments"></a> +<a class="index-entry-id" id="index-request-arguments_002c-and-tabs"></a> +<a class="index-entry-id" id="index-arguments-to-requests_002c-and-tabs"></a> +<p>There is no inherent limit on argument length or quantity. Most +requests take one or more arguments, and ignore any they do not expect. +A request may be separated from its arguments by tabs or spaces, but +only spaces can separate an argument from its successor. Only one +between arguments is necessary; any excess is ignored. GNU <code class="code">troff</code> +does not allow tabs for argument separation.<a class="footnote" id="DOCF43" href="#FOOT43"><sup>43</sup></a> +</p> +<p>Generally, a space <em class="emph">within</em> a request argument is not relevant, not +meaningful, or is supported by bespoke provisions, as with the <code class="code">tl</code> +request’s delimiters (see <a class="pxref" href="#Page-Layout">Page Layout</a>). Some requests, like +<code class="code">ds</code>, interpret the remainder of the control line as a single +argument. See <a class="xref" href="#Strings">Strings</a>. +</p> +<a class="index-entry-id" id="index-structuring-source-code-of-documents-or-macro-packages"></a> +<a class="index-entry-id" id="index-documents_002c-structuring-the-source-of"></a> +<a class="index-entry-id" id="index-macro-package_002c-structuring-the-source-of"></a> +<a class="index-entry-id" id="index-package_002c-package_002c-structuring-the-source-of"></a> +<a class="index-entry-id" id="index-indentation_002c-of-roff-source-code"></a> +<p>Spaces and tabs immediately after a control character are ignored. +Commonly, authors structure the source of documents or macro files with +them. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de center +. if \\n[.br] \ +. br +. ce \\$1 +.. +. +. +.de right-align +.→if \\n[.br] \ +.→→br +.→rj \\$1 +.. +</pre></div></div> + +<a class="index-entry-id" id="index-blank-line-trap-_0028blm_0029"></a> +<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-1"></a> +<p>If you assign an empty blank line trap, you can separate macro +definitions (or any input lines) with blank lines. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de do-nothing +.. +.blm do-nothing \" activate blank line trap + +.de center +. if \\n[.br] \ +. br +. ce \\$1 +.. + + +.de right-align +.→if \\n[.br] \ +.→→br +.→rj \\$1 +.. + +.blm \" deactivate blank line trap +</pre></div></div> + +<p>See <a class="xref" href="#Blank-Line-Traps">Blank Line Traps</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Calling-Macros"> +<div class="nav-panel"> +<p> +Next: <a href="#Using-Escape-Sequences" accesskey="n" rel="next">Using Escape Sequences</a>, Previous: <a href="#Invoking-Requests" accesskey="p" rel="prev">Invoking Requests</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Calling-Macros-1">5.6.3 Calling Macros</h4> +<a class="index-entry-id" id="index-calling-macros"></a> +<a class="index-entry-id" id="index-macro-arguments"></a> +<a class="index-entry-id" id="index-arguments-to-macros"></a> + +<p>If a macro of the desired name does not exist when called, it is +created, assigned an empty definition, and a warning in category +‘<samp class="samp">mac</samp>’ is emitted. Calling an undefined macro <em class="emph">does</em> end a +macro definition naming it as its end macro (see <a class="pxref" href="#Writing-Macros">Writing Macros</a>). +</p> +<a class="index-entry-id" id="index-spaces_002c-in-a-macro-argument"></a> +<p>To embed spaces <em class="emph">within</em> a macro argument, enclose the argument in +neutral double quotes <code class="code">"</code>. Horizontal motion escape sequences are +sometimes a better choice for arguments to be formatted as text. +</p> +<p>Consider calls to a hypothetical section heading macro ‘<samp class="samp">uh</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.uh The Mouse Problem +.uh "The Mouse Problem" +.uh The\~Mouse\~Problem +.uh The\ Mouse\ Problem +</pre></div></div> + +<a class="index-entry-id" id="index-_005c_007e_002c-difference-from-_005cSP"></a> +<a class="index-entry-id" id="index-_005cSP_002c-difference-from-_005c_007e"></a> +<p>The first line calls <code class="code">uh</code> with three arguments: ‘<samp class="samp">The</samp>’, +‘<samp class="samp">Mouse</samp>’, and ‘<samp class="samp">Problem</samp>’. The remainder call the <code class="code">uh</code> +macro with one argument, ‘<samp class="samp">The Mouse Problem</samp>’. The last solution, +using escaped spaces, can be found in documents prepared for +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code>. It can cause surprise when text is +adjusted, because <code class="code">\<kbd class="key">SP</kbd></code> inserts a <em class="emph">fixed-width</em>, +non-breaking space. GNU <code class="code">troff</code>’s <code class="code">\~</code> escape sequence +inserts an adjustable, non-breaking space.<a class="footnote" id="DOCF44" href="#FOOT44"><sup>44</sup></a> +</p> +<a class="index-entry-id" id="index-_0022_002c-embedding-in-a-macro-argument"></a> +<a class="index-entry-id" id="index-double-quote_002c-embedding-in-a-macro-argument"></a> +<a class="index-entry-id" id="index-_005c_002c-embedding-in-a-macro-argument"></a> +<a class="index-entry-id" id="index-backslash_002c-embedding-in-a-macro-argument"></a> +<p>The foregoing raises the question of how to embed neutral double quotes +or backslashes in macro arguments when <em class="emph">those</em> characters are +desired as literals. In GNU <code class="code">troff</code>, the special character escape +sequence <code class="code">\[rs]</code> produces a backslash and <code class="code">\[dq]</code> a neutral +double quote. +</p> +<p>In GNU <code class="code">troff</code>’s <abbr class="acronym">AT&T</abbr> compatibility mode, these +characters remain available as <code class="code">\(rs</code> and <code class="code">\(dq</code>, +respectively. <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> did not consistently define +these special characters, +but its descendants can be made to support them. See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>. +</p> +<p>If even that is not feasible, options remain. To obtain a literal +escape character in a macro argument, you can simply type it if you +change or disable the escape character first. See <a class="xref" href="#Using-Escape-Sequences">Using Escape Sequences</a>. Otherwise, you must escape the escape character repeatedly +to a context-dependent extent. See <a class="xref" href="#Copy-Mode">Copy Mode</a>. +</p> +<p>For the (neutral) double quote, you have recourse to an obscure +syntactical feature of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>. Because a double +quote can begin a macro argument, the formatter keeps track of whether +the current argument was started thus, and doesn’t require a space after +the double quote that ends it.<a class="footnote" id="DOCF45" href="#FOOT45"><sup>45</sup></a> In +the argument list to a macro, a double quote that <em class="emph">isn’t</em> preceded +by a space <em class="emph">doesn’t</em> start a macro argument. If not preceded by a +double quote that began an argument, this double quote becomes part of +the argument. Furthermore, within a quoted argument, a pair of adjacent +double quotes becomes a literal double quote. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de eq +. tm arg1:\\$1 arg2:\\$2 arg3:\\$3 +. tm arg4:\\$4 arg5:\\$5 arg6:\\$6 +.. \" 4 backslashes on the next line +.eq a" "b c" "de"f\\\\g" h""i "j""k" + error→ arg1:a" arg2:b c arg3:de + error→ arg4:f\g" arg5:h""i arg6:j"k +</pre></div></div> + +<p>Apart from the complexity of the rules, this traditional solution has +the disadvantage that double quotes don’t survive repeated argument +expansion in <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> or GNU <code class="code">troff</code>’s +compatibility mode. This can frustrate efforts to pass such arguments +intact through multiple macro calls. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cp 1 +.de eq +. tm arg1:\\$1 arg2:\\$2 arg3:\\$3 +. tm arg4:\\$4 arg5:\\$5 arg6:\\$6 +.. +.de xe +. eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 +.. \" 8 backslashes on the next line +.xe a" "b c" "de"f\\\\\\\\g" h""i "j""k" + error→ arg1:a" arg2:b arg3:c + error→ arg4:de arg5:f\g" arg6:h""i +</pre></div></div> + +<a class="index-entry-id" id="index-input-level"></a> +<a class="index-entry-id" id="index-level_002c-input"></a> +<a class="index-entry-id" id="index-interpolation-depth"></a> +<a class="index-entry-id" id="index-depth_002c-interpolation"></a> +<p>Outside of compatibility mode, GNU <code class="code">troff</code> doesn’t exhibit this +problem because it tracks the nesting depth of interpolations. +See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Using-Escape-Sequences"> +<div class="nav-panel"> +<p> +Next: <a href="#Delimiters" accesskey="n" rel="next">Delimiters</a>, Previous: <a href="#Calling-Macros" accesskey="p" rel="prev">Calling Macros</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Using-Escape-Sequences-1">5.6.4 Using Escape Sequences</h4> +<a class="index-entry-id" id="index-using-escape-sequences"></a> +<a class="index-entry-id" id="index-escape-sequences"></a> + +<p>Whereas requests must occur on control lines, escape sequences can occur +intermixed with text and may appear in arguments to requests, macros, +and other escape sequences. +<a class="index-entry-id" id="index-_005c"></a> +An escape sequence is introduced by the escape character, a backslash +<code class="code">\</code> (but see the <code class="code">ec</code> request below). The next character +selects the escape’s function. +</p> +<p>Escape sequences vary in length. Some take an argument, and of those, +some have different syntactical forms for a one-character, +two-character, or arbitrary-length argument. Others accept <em class="emph">only</em> +an arbitrary-length argument. In the former scheme, a one-character +argument follows the function character immediately, an opening +parenthesis ‘<samp class="samp">(</samp>’ introduces a two-character argument (no closing +parenthesis is used), and an argument of arbitrary length is enclosed in +brackets ‘<samp class="samp">[]</samp>’. In the latter scheme, the user selects a delimiter +character. A few escape sequences are idiosyncratic, and support both +of the foregoing conventions (<code class="code">\s</code>), designate their own +termination sequence (<code class="code">\?</code>), consume input until the next newline +(<code class="code">\!</code>, <code class="code">\"</code>, <code class="code">\#</code>), or support an additional modifier +character (<code class="code">\s</code> again, and <code class="code">\n</code>). As with requests, use of +some escape sequences in source documents may interact poorly with a +macro package you use; consult its documentation to learn of “safe” +sequences or alternative facilities it provides to achieve the desired +result. +</p> +<p>If an escape character is followed by a character that does not +identify a defined operation, the escape character is ignored (producing +a diagnostic of the ‘<samp class="samp">escape</samp>’ warning category, which is not enabled +by default) and the following character is processed normally. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ groff -Tps -ww +.nr N 12 +.ds co white +.ds animal elephant +I have \fI\nN \*(co \*[animal]s,\f[] +said \P.\&\~Pseudo Pachyderm. + error→ warning: escape character ignored before 'P' + ⇒ I have <i class="slanted">12 white elephants,</i> said P. Pseudo Pachyderm. +</pre></div></div> + +<p>Escape sequence interpolation is of higher precedence than escape +sequence argument interpretation. This rule affords flexibility in +using escape sequences to construct parameters to other escape +sequences. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds family C\" Courier +.ds style I\" oblique +Choice a typeface \f(\*[family]\*[style]wisely. + ⇒ Choose a typeface <i class="slanted">wisely.</i> +</pre></div></div> + +<p>In the above, the syntax form ‘<samp class="samp">\f(</samp>’ accepts only two characters for +an argument; the example works because the subsequent escape sequences +are interpolated before the selection escape sequence argument is +processed, and strings <code class="code">family</code> and <code class="code">style</code> interpolate one +character each.<a class="footnote" id="DOCF46" href="#FOOT46"><sup>46</sup></a> +</p> +<p>The escape character is nearly always interpreted when encountered; it +is therefore desirable to have a way to interpolate it, disable it, or +change it. +</p> +<a class="index-entry-id" id="index-formatting-the-escape-character-_0028_005ce_0029"></a> +<a class="index-entry-id" id="index-escape-character_002c-formatting-_0028_005ce_0029"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005ce-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\e</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ce-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005ce"></a> +<p>Interpolate the escape character. +</p></dd></dl> + +<a class="index-entry-id" id="index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029"></a> +<a class="index-entry-id" id="index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029"></a> +<p>The <code class="code">\[rs]</code> special character escape sequence formats a backslash +glyph. In macro and string definitions, the input sequences <code class="code">\\</code> +and <code class="code">\E</code> defer interpretation of escape sequences. See <a class="xref" href="#Copy-Mode">Copy Mode</a>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eeo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.eo</code></strong><a class="copiable-link" href='#index-_002eeo'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-eo"></a> +<a class="index-entry-id" id="index-disabling-_005c-_0028eo_0029"></a> +<a class="index-entry-id" id="index-_005c_002c-disabling-_0028eo_0029"></a> +<p>Disable the escape mechanism except in copy mode. Once this request is +invoked, no input character is recognized as starting an escape +sequence in interpretation mode. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ec</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002eec'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ec"></a> +<a class="index-entry-id" id="index-escape-character_002c-changing-_0028ec_0029"></a> +<a class="index-entry-id" id="index-character_002c-escape_002c-changing-_0028ec_0029"></a> +<p>Recognize the ordinary character <var class="var">o</var> as the escape character. +If <var class="var">o</var> is absent or invalid, the default escape character +‘<samp class="samp">\</samp>’ is selected. +</p></dd></dl> + +<p>Switching escape sequence interpretation off to define a macro and back +on afterward can obviate the need to double the escape character within +the definition. See <a class="xref" href="#Writing-Macros">Writing Macros</a>. This technique is not available +if your macro needs to interpolate values at the time it is +<em class="emph">defined</em>—but many do not. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" simplified `BR` macro from the man(7) macro package +.eo +.de BR +. ds result \& +. while (\n[.$] >= 2) \{\ +. as result \fB\$1\fR\$2\" +. shift 2 +. \} +. if \n[.$] .as result \fB\$1\" +\*[result] +. rm result +. ft R +.. +.ec +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecs</code></strong><a class="copiable-link" href='#index-_002eecs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ecs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eecr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecr</code></strong><a class="copiable-link" href='#index-_002eecr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ecr"></a> +<p>The <code class="code">ecs</code> request stores the escape character for recall with +<code class="code">ecr</code>. <code class="code">ecr</code> sets the escape character to ‘<samp class="samp">\</samp>’ if none +has been saved. +</p> +<p>Use these requests together to temporarily change the escape character. +</p></dd></dl> + +<p>Using a different escape character, or disabling it, when calling macros +not under your control will likely cause errors, since GNU <code class="code">troff</code> +has no mechanism to “intern” macros—that is, to convert a macro +definition into a form independent of its +representation.<a class="footnote" id="DOCF47" href="#FOOT47"><sup>47</sup></a> When a +macro is called, its contents are interpreted literally. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Delimiters"> +<div class="nav-panel"> +<p> +Previous: <a href="#Using-Escape-Sequences" accesskey="p" rel="prev">Using Escape Sequences</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Delimiters-1">5.6.5 Delimiters</h4> +<a class="index-entry-id" id="index-delimiting-escape-sequence-arguments"></a> +<a class="index-entry-id" id="index-escape-sequence-argument-delimiters"></a> +<a class="index-entry-id" id="index-delimiters_002c-for-escape-sequence-arguments"></a> +<a class="index-entry-id" id="index-arguments_002c-to-escape-sequences_002c-delimiting"></a> + +<a class="index-entry-id" id="index-_0027_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_0022_002c-as-delimiter"></a> +<p>Some escape sequences that require parameters use delimiters. The +neutral apostrophe <code class="code">'</code> is a popular choice and shown in this +document. The neutral double quote <code class="code">"</code> is also commonly seen. +Letters, numerals, and leaders can be used. Punctuation characters +are likely better choices, except for those defined as infix operators +in numeric expressions; see below. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\l'1.5i\[bu]' \" draw 1.5 inches of bullet glyphs +</pre></div></div> + +<a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cSP_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_007c_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_005e_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_003f_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_0029_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_002c_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_0026_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c_007e_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005c0_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005ca_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cc_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cd_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005ce_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cE_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cp_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cr_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005ct_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_005cu_002c-as-delimiter"></a> +<p>The following escape sequences don’t take arguments and thus are allowed +as delimiters: +<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\%</code>, <code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\{</code>, +<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>, +<code class="code">\?</code>, <code class="code">\)</code>, <code class="code">\/</code>, <code class="code">\,</code>, <code class="code">\&</code>, <code class="code">\:</code>, +<code class="code">\~</code>, <code class="code">\0</code>, <code class="code">\a</code>, <code class="code">\c</code>, <code class="code">\d</code>, <code class="code">\e</code>, +<code class="code">\E</code>, <code class="code">\p</code>, <code class="code">\r</code>, <code class="code">\t</code>, and <code class="code">\u</code>. However, +using them this way is discouraged; they can make the input confusing to +read. +</p> +<a class="index-entry-id" id="index-_005cA_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cb_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005co_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cw_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cX_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cZ_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-newline_002c-as-delimiter"></a> +<p>A few escape sequences, +<code class="code">\A</code>, +<code class="code">\b</code>, +<code class="code">\o</code>, +<code class="code">\w</code>, +<code class="code">\X</code>, +and <code class="code">\Z</code>, accept a newline as a delimiter. Newlines that serve +as delimiters continue to be recognized as input line terminators. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">A caf\o +e\(aa +in Paris + ⇒ A café in Paris +</pre></div></div> + +<p>Use of newlines as delimiters in escape sequences is also discouraged. +</p> +<a class="index-entry-id" id="index-_005cD_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005ch_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cH_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cl_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cL_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cN_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cR_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cs_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cS_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cv_002c-delimiters-allowed-by"></a> +<a class="index-entry-id" id="index-_005cx_002c-delimiters-allowed-by"></a> +<p>Finally, the escape sequences <code class="code">\D</code>, <code class="code">\h</code>, <code class="code">\H</code>, +<code class="code">\l</code>, <code class="code">\L</code>, <code class="code">\N</code>, <code class="code">\R</code>, <code class="code">\s</code>, <code class="code">\S</code>, +<code class="code">\v</code>, and <code class="code">\x</code> prohibit many delimiters. +</p> +<ul class="itemize mark-bullet"> +<li><a class="index-entry-id" id="index-numerals_002c-as-delimiters"></a> +<a class="index-entry-id" id="index-digits_002c-as-delimiters"></a> +<a class="index-entry-id" id="index-_002e_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-decimal-point_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-dot_002c-as-delimiter"></a> +the numerals <code class="code">0</code>-<code class="code">9</code> and the decimal point <code class="code">.</code> + +</li><li><a class="index-entry-id" id="index-operators_002c-as-delimiters"></a> +<a class="index-entry-id" id="index-_002b_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_002d_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_002f_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_002a_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_0025_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_003c_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_003e_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_003d_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_0026_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_003a_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_0028_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-_0029_002c-as-delimiter"></a> +the (single-character) operators ‘<samp class="samp">+-/*%<>=&:()</samp>’ + +</li><li><a class="index-entry-id" id="index-space-character_002c-as-delimiter"></a> +<a class="index-entry-id" id="index-tab-character_002c-as-delimiter"></a> +the space and tab characters + +</li><li><a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005cc_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005ce_002c-as-delimiter-1"></a> +<a class="index-entry-id" id="index-_005cp_002c-as-delimiter-1"></a> +any escape sequences other than <code class="code">\%</code>, <code class="code">\:</code>, <code class="code">\{</code>, +<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>, +<code class="code">\/</code>, <code class="code">\c</code>, <code class="code">\e</code>, and <code class="code">\p</code> +</li></ul> + +<p>Delimiter syntax is complex and flexible primarily for historical +reasons; the foregoing restrictions need be kept in mind mainly when +using <code class="code">groff</code> in <abbr class="acronym">AT&T</abbr> compatibility mode. GNU +<code class="code">troff</code> keeps track of the nesting depth of escape sequence +interpolations, so the only characters you need to avoid using as +delimiters are those that appear in the arguments you input, not any +that result from interpolation. Typically, <code class="code">'</code> works fine. +See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ groff -Tps +.de Mw +. nr wd \w'\\$1' +. tm "\\$1" is \\n(wd units wide. +.. +.Mw Wet'suwet'en +.Mw Wet+200i +.cp 1 \" turn on compatibility mode +.Mw Wet'suwet'en +.Mw Wet' +.Mw Wet+200i + error→ "Wet'suwet'en" is 54740 units wide. + error→ "Wet'+200i" is 42610 units wide. + error→ "Wet'suwet'en" is 15860 units wide. + error→ "Wet'" is 15860 units wide. + error→ "Wet'+200i" is 14415860 units wide. +</pre></div></div> + +<p>We see here that in compatibility mode, the part of the argument after +the <code class="code">'</code> delimiter escapes from its context and, if nefariously +crafted, influences the computation of the <var class="var">wd</var> register’s value in +a surprising way. +</p> +<hr> +</div> +</div> +<div class="section-level-extent" id="Comments"> +<div class="nav-panel"> +<p> +Next: <a href="#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Comments-1">5.7 Comments</h3> +<a class="index-entry-id" id="index-comments"></a> + +<p>One of the most common forms of escape sequence is the +comment.<a class="footnote" id="DOCF48" href="#FOOT48"><sup>48</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0022-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\"</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0022-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0022"></a> +<p>Start a comment. Everything up to the next newline is ignored. +</p> +<p>This may sound simple, but it can be tricky to keep the comments from +interfering with the appearance of the output. +<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-comments"></a> +<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-comments"></a> +If the escape sequence is to the right of some text or a request, that +portion of the line is ignored, but spaces preceding it are processed +normally by GNU <code class="code">troff</code>. This affects only the <code class="code">ds</code> and +<code class="code">as</code> requests and their variants. +</p> +<a class="index-entry-id" id="index-tabs_002c-before-comments"></a> +<a class="index-entry-id" id="index-comments_002c-lining-up-with-tabs"></a> +<p>One possibly irritating idiosyncrasy is that tabs should not be used to +vertically align comments in the source document. Tab characters are +not treated as separators between a request name and its first argument, +nor between arguments. +</p> +<a class="index-entry-id" id="index-undefined-request"></a> +<a class="index-entry-id" id="index-request_002c-undefined"></a> +<p>A comment on a line by itself is treated as a blank line, because after +eliminating the comment, that is all that remains. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Test +\" comment +Test + ⇒ Test + ⇒ + ⇒ Test +</pre></div></div> + +<p>To avoid this, it is common to combine the empty request with the +comment escape sequence as ‘<samp class="samp">.\"</samp>’, causing the input line to be +ignored. +</p> +<a class="index-entry-id" id="index-_0027_002c-as-a-comment"></a> +<p>Another commenting scheme sometimes seen is three consecutive single +quotes (<code class="code">'''</code>) at the beginning of a line. This works, but GNU +<code class="code">troff</code> emits a warning diagnostic (if enabled) about an undefined +macro (namely ‘<samp class="samp">''</samp>’). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0023-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\#</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0023-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0023"></a> +<p>Start a comment; everything up to and including the next newline is +ignored. This <code class="code">groff</code> extension was introduced to avoid the +problems described above. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Test +\# comment +Test + ⇒ Test Test +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eig"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ig</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eig'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ig"></a> +<p>Ignore input until, in the current conditional block (if +any),<a class="footnote" id="DOCF49" href="#FOOT49"><sup>49</sup></a> the macro <var class="var">end</var> is called +at the start of a control line, or the control line ‘<samp class="samp">..</samp>’ is +encountered if <var class="var">end</var> is not specified. <code class="code">ig</code> is parsed as if it +were a macro definition, but its contents are discarded, not +stored.<a class="footnote" id="DOCF50" href="#FOOT50"><sup>50</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">hand\c +.de TX +fasting +.. +.ig TX +This is part of a large block of input that has been +temporarily(?) commented out. +We can restore it simply by removing the .ig request and +the call of its end macro. +.TX +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ handfasting +</pre></div></div> +</dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Registers"> +<div class="nav-panel"> +<p> +Next: <a href="#Manipulating-Filling-and-Adjustment" accesskey="n" rel="next">Manipulating Filling and Adjustment</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Registers-1">5.8 Registers</h3> +<a class="index-entry-id" id="index-registers"></a> + +<p>In the <code class="code">roff</code> language, numbers can be stored in <em class="dfn">registers</em>. +Many built-in registers exist, supplying anything from the date to +details of formatting parameters. You can also define your own. +See <a class="xref" href="#Identifiers">Identifiers</a>, for information on constructing a valid name for a +register. +</p> + + +<ul class="mini-toc"> +<li><a href="#Setting-Registers" accesskey="1">Setting Registers</a></li> +<li><a href="#Interpolating-Registers" accesskey="2">Interpolating Registers</a></li> +<li><a href="#Auto_002dincrement" accesskey="3">Auto-increment</a></li> +<li><a href="#Assigning-Register-Formats" accesskey="4">Assigning Register Formats</a></li> +<li><a href="#Built_002din-Registers" accesskey="5">Built-in Registers</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Setting-Registers"> +<div class="nav-panel"> +<p> +Next: <a href="#Interpolating-Registers" accesskey="n" rel="next">Interpolating Registers</a>, Previous: <a href="#Registers" accesskey="p" rel="prev">Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Setting-Registers-1">5.8.1 Setting Registers</h4> +<a class="index-entry-id" id="index-setting-registers-_0028nr_002c-_005cR_0029"></a> +<a class="index-entry-id" id="index-registers_002c-setting-_0028nr_002c-_005cR_0029"></a> + +<p>Define registers and update their values with the <code class="code">nr</code> request or +the <code class="code">\R</code> escape sequence. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enr-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value</var><a class="copiable-link" href='#index-_002enr-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nr-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-value_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-value_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cR"></a> +<p>Set register <var class="var">ident</var> to <var class="var">value</var>. If <var class="var">ident</var> doesn’t exist, +GNU <code class="code">troff</code> creates it. In the <code class="code">\R</code> escape sequence, the +delimiter need not be a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. It +also does not produce an input token in GNU <code class="code">troff</code>. See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a (((17 + (3 * 4))) % 4) +\n[a] +.\R'a (((17 + (3 * 4))) % 4)' +\n[a] + ⇒ 1 1 +</pre></div></div> + +<p>(Later, we will discuss additional forms of <code class="code">nr</code> and <code class="code">\R</code> that +can change a register’s value after it is dereferenced but before it is +interpolated. See <a class="xref" href="#Auto_002dincrement">Auto-increment</a>.) +</p> +<p>The complete transparency of <code class="code">\R</code> can cause surprising effects if +you use registers like <code class="code">.k</code>, which get evaluated at the time they +are accessed. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 1.6i +. +aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]' +.tm :k == \n[:k] + ⇒ :k == 126950 +. +.br +. +aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]' +.tm :k == \n[:k] + ⇒ :k == 15000 +</pre></div></div> + +<p>If you process this with the PostScript device (<code class="code">-Tps</code>), there will +be a line break eventually after <code class="code">ggg</code> in both input lines. +However, after processing the space after <code class="code">ggg</code>, the partially +collected line is not overfull yet, so GNU <code class="code">troff</code> continues to +collect input until it sees the space (or in this case, the newline) +after <code class="code">hhh</code>. At this point, the line is longer than the line +length, and the line gets broken. +</p> +<p>In the first input line, since the <code class="code">\R</code> escape sequence leaves no +traces, the check for the overfull line hasn’t been done yet at the +point where <code class="code">\R</code> gets handled, and you get a value for the +<code class="code">.k</code> register that is even greater than the current line length. +</p> +<p>In the second input line, the insertion of <code class="code">\h'0'</code> to cause a +zero-width motion forces GNU <code class="code">troff</code> to check the line length, +which in turn causes the start of a new output line. Now <code class="code">.k</code> +returns the expected value. +</p></dd></dl> + +<p><code class="code">nr</code> and <code class="code">\R</code> each have two additional special forms to +increment or decrement a register. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enr-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">+</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nr-2"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002enr-3"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">-</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-3'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002bvalue_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">+</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002bvalue_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cR-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002dvalue_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">-</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002dvalue_0027'> ¶</a></span></dt> +<dd><p>Increment (decrement) register <var class="var">ident</var> by <var class="var">value</var>. In the +<code class="code">\R</code> escape sequence, the delimiter need not be a neutral +apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 1 +.nr a +1 +\na + ⇒ 2 +</pre></div></div> + +<a class="index-entry-id" id="index-negating-register-values"></a> +<p>A leading minus sign in <var class="var">value</var> is always interpreted as a +decrementation operator, not an algebraic sign. To assign a register a +negative value or the negated value of another register, you can +force GNU <code class="code">troff</code> to interpret ‘<samp class="samp">-</samp>’ as a negation or minus, +rather than decrementation, operator: enclose it with its operand in +parentheses or subtract it from zero. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 7 +.nr b 3 +.nr a -\nb +\na + ⇒ 4 +.nr a (-\nb) +\na + ⇒ -3 +.nr a 0-\nb +\na + ⇒ -3 +</pre></div></div> + +<p>If a register’s prior value does not exist (the register was undefined), +an increment or decrement is applied as if to 0. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002err"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rr</code></strong> <var class="def-var-arguments">ident</var><a class="copiable-link" href='#index-_002err'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rr"></a> +<a class="index-entry-id" id="index-removing-a-register-_0028rr_0029"></a> +<a class="index-entry-id" id="index-register_002c-removing-_0028rr_0029"></a> +<p>Remove register <var class="var">ident</var>. If <var class="var">ident</var> doesn’t exist, the request +is ignored. Technically, only the name is removed; the register’s +contents are still accessible under aliases created with <code class="code">aln</code>, if +any. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ernn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rnn</code></strong> <var class="def-var-arguments">ident1 ident2</var><a class="copiable-link" href='#index-_002ernn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rnn"></a> +<a class="index-entry-id" id="index-renaming-a-register-_0028rnn_0029"></a> +<a class="index-entry-id" id="index-register_002c-renaming-_0028rnn_0029"></a> +<p>Rename register <var class="var">ident1</var> to <var class="var">ident2</var>. If <var class="var">ident1</var> doesn’t +exist, the request is ignored. Renaming a built-in register does not +otherwise alter its properties. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ealn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.aln</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002ealn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-aln"></a> +<a class="index-entry-id" id="index-alias_002c-register_002c-creating-_0028aln_0029"></a> +<a class="index-entry-id" id="index-creating-alias-for-register-_0028aln_0029"></a> +<a class="index-entry-id" id="index-register_002c-creating-alias-for-_0028aln_0029"></a> +<p>Create an alias <var class="var">new</var> for an existing register <var class="var">old</var>, causing +the names to refer to the same stored object. If <var class="var">old</var> is +undefined, a warning in category ‘<samp class="samp">reg</samp>’ is produced and the request +is ignored. See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and +suppression of warnings. +</p> +<a class="index-entry-id" id="index-alias_002c-register_002c-removing-_0028rr_0029"></a> +<a class="index-entry-id" id="index-removing-alias-for-register-_0028rr_0029"></a> +<a class="index-entry-id" id="index-register_002c-removing-alias-for-_0028rr_0029"></a> +<p>To remove a register alias, invoke <code class="code">rr</code> on its name. A register’s +contents do not become inaccessible until it has no more names. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Interpolating-Registers"> +<div class="nav-panel"> +<p> +Next: <a href="#Auto_002dincrement" accesskey="n" rel="next">Auto-increment</a>, Previous: <a href="#Setting-Registers" accesskey="p" rel="prev">Setting Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Interpolating-Registers-1">5.8.2 Interpolating Registers</h4> +<a class="index-entry-id" id="index-interpolating-registers-_0028_005cn_0029"></a> +<a class="index-entry-id" id="index-registers_002c-interpolating-_0028_005cn_0029"></a> + +<p>Register contents are interpolated with the <code class="code">\n</code> escape sequence. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cni"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cni'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_0028id"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_0028id'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005bident_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_005bident_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nested-assignments"></a> +<a class="index-entry-id" id="index-assignments_002c-nested"></a> +<a class="index-entry-id" id="index-indirect-assignments"></a> +<a class="index-entry-id" id="index-assignments_002c-indirect"></a> +<p>Interpolate register with name <var class="var">ident</var> (one-character +name <var class="var">i</var>, two-character name <var class="var">id</var>). <code class="code">\n</code> is +interpreted even in copy mode (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). If the register is +undefined, it is created and assigned a value of ‘<samp class="samp">0</samp>’, that +value is interpolated, and a warning in category ‘<samp class="samp">reg</samp>’ is emitted. +See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of +warnings. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 5 +.nr as \na+\na +\n(as + ⇒ 10 +</pre></div></div> + +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a1 5 +.nr ab 6 +.ds str b +.ds num 1 +\n[a\n[num]] + ⇒ 5 +\n[a\*[str]] + ⇒ 6 +</pre></div></div> +</dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Auto_002dincrement"> +<div class="nav-panel"> +<p> +Next: <a href="#Assigning-Register-Formats" accesskey="n" rel="next">Assigning Register Formats</a>, Previous: <a href="#Interpolating-Registers" accesskey="p" rel="prev">Interpolating Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Auto_002dincrement-1">5.8.3 Auto-increment</h4> +<a class="index-entry-id" id="index-auto_002dincrementation-of-a-register"></a> +<a class="index-entry-id" id="index-incrementation_002c-automatic_002c-of-a-register"></a> +<a class="index-entry-id" id="index-decrementation_002c-automatic_002c-of-a-register"></a> + +<p>Registers can also be incremented or decremented by a configured amount +at the time they are interpolated. The value of the increment is +specified with a third argument to the <code class="code">nr</code> request, and a special +interpolation syntax is used to alter and then retrieve the register’s +value. Together, these features are called +<em class="dfn">auto-increment</em>.<a class="footnote" id="DOCF51" href="#FOOT51"><sup>51</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enr-4"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value incr</var><a class="copiable-link" href='#index-_002enr-4'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nr-3"></a> +<a class="index-entry-id" id="index-_005cR_002c-difference-from-nr"></a> +<p>Set register <var class="var">ident</var> to <var class="var">value</var> and its auto-incrementation +amount to to <var class="var">incr</var>. The <code class="code">\R</code> escape sequence doesn’t support +an <var class="var">incr</var> argument. +</p></dd></dl> + +<p>Auto-incrementation is not <em class="emph">completely</em> automatic; the <code class="code">\n</code> +escape sequence in its basic form never alters the value of a register. +To apply auto-incrementation to a register, interpolate it with +‘<samp class="samp">\n±</samp>’. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_002bi"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n+</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002bi'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cn-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_002di"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n-</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002di'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_0028id"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n+(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002b_0028id'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_0028id"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n-(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002d_0028id'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_005bident_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n+[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002b_005bident_005d'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_005bident_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\n-[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002d_005bident_005d'> ¶</a></span></dt> +<dd><p>Increment or decrement <var class="var">ident</var> (one-character +name <var class="var">i</var>, two-character name <var class="var">id</var>) by the register’s +auto-incrementation value and then interpolate the new register value. +If <var class="var">ident</var> has no auto-incrementation value, interpolate as with +<code class="code">\n</code>. +</p></dd></dl> + +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 0 1 +.nr xx 0 5 +.nr foo 0 -2 +\n+a, \n+a, \n+a, \n+a, \n+a +.br +\n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx +.br +\n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo] + ⇒ 1, 2, 3, 4, 5 + ⇒ -5, -10, -15, -20, -25 + ⇒ -2, -4, -6, -8, -10 +</pre></div></div> + +<a class="index-entry-id" id="index-increment-value-without-changing-the-register"></a> +<a class="index-entry-id" id="index-value_002c-incrementing-without-changing-the-register"></a> +<p>To change the increment value without changing the value of a register, +assign the register’s value to itself by interpolating it, and specify +the desired increment normally. Apply an increment of ‘<samp class="samp">0</samp>’ to +disable auto-incrementation of the register. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Assigning-Register-Formats"> +<div class="nav-panel"> +<p> +Next: <a href="#Built_002din-Registers" accesskey="n" rel="next">Built-in Registers</a>, Previous: <a href="#Auto_002dincrement" accesskey="p" rel="prev">Auto-increment</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Assigning-Register-Formats-1">5.8.4 Assigning Register Formats</h4> +<a class="index-entry-id" id="index-assign-number-format-to-register-_0028af_0029"></a> +<a class="index-entry-id" id="index-number-formats_002c-assigning-to-register-_0028af_0029"></a> +<a class="index-entry-id" id="index-register_002c-assigning-number-format-to-_0028af_0029"></a> + +<p>A writable register’s value can be interpolated in several number +formats. By default, conventional Arabic numerals are used. +Other formats see use in sectioning and outlining schemes and +alternative page numbering arrangements. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eaf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.af</code></strong> <var class="def-var-arguments">reg fmt</var><a class="copiable-link" href='#index-_002eaf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-af"></a> +<p>Use number format <var class="var">fmt</var> when interpolating register <var class="var">reg</var>. +Valid number formats are as follows. +</p> +<dl class="table"> +<dt><code class="code">0<span class="r">…</span></code></dt> +<dd><p>Arabic numerals 0, 1, 2, and so on. +Any decimal digit is equivalent to ‘<samp class="samp">0</samp>’; the formatter merely counts +the digits specified. Multiple Arabic numerals in <var class="var">fmt</var> cause +interpolations to be zero-padded on the left if necessary to at least as +many digits as specified (interpolations never truncate a register +value). A register with format ‘<samp class="samp">00</samp>’ interpolates values 1, 2, 3 as +‘<samp class="samp">01</samp>’, ‘<samp class="samp">02</samp>’, ‘<samp class="samp">03</samp>’. The default format for all writable +registers is ‘<samp class="samp">0</samp>’. +</p> +</dd> +<dt id='index-Roman-numerals'><span><code class="code">I</code><a class="copiable-link" href='#index-Roman-numerals'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-numerals_002c-Roman"></a> +<p>Uppercase Roman numerals: 0, I, II, III, IV, <small class="enddots">...</small> +</p> +</dd> +<dt><code class="code">i</code></dt> +<dd><p>Lowercase Roman numerals: 0, i, ii, iii, iv, <small class="enddots">...</small> +</p> +</dd> +<dt><code class="code">A</code></dt> +<dd><p>Uppercase letters: 0, A, B, C, …, Z, AA, AB, <small class="enddots">...</small> +</p> +</dd> +<dt><code class="code">a</code></dt> +<dd><p>Lowercase letters: 0, a, b, c, …, z, aa, ab, <small class="enddots">...</small> +</p></dd> +</dl> + +<p>Omitting <var class="var">fmt</var> causes a warning in category ‘<samp class="samp">missing</samp>’. +See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of +warnings. Specifying an unrecognized format is an error. +</p> +<p>Zero values are interpolated as ‘<samp class="samp">0</samp>’ in non-Arabic formats. +Negative quantities are prefixed with ‘<samp class="samp">-</samp>’ irrespective of format. +In Arabic formats, the sign supplements the field width. If <var class="var">reg</var> +doesn’t exist, it is created with a zero value. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 10 +.af a 0 \" the default format +\na, +.af a I +\na, +.af a 321 +.nr a (-\na) +\na, +.af a a +\na + ⇒ 10, X, -010, -j +</pre></div></div> + +<a class="index-entry-id" id="index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029"></a> +<a class="index-entry-id" id="index-extreme-values-representable-with-Roman-numerals"></a> +<a class="index-entry-id" id="index-maximum-value-representable-with-Roman-numerals"></a> +<a class="index-entry-id" id="index-minimum-value-representable-with-Roman-numerals"></a> +<p>The representable extrema in the ‘<samp class="samp">i</samp>’ and ‘<samp class="samp">I</samp>’ formats +correspond to Arabic ±39,999. GNU <code class="code">troff</code> uses ‘<samp class="samp">w</samp>’ and +‘<samp class="samp">z</samp>’ to represent 5,000 and 10,000 in Roman numerals, respectively, +following the convention of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>—currently, the +correct glyphs for Roman numerals five thousand (<code class="code">U+2181</code>) and ten +thousand (<code class="code">U+2182</code>) are not used. +</p> +<a class="index-entry-id" id="index-read_002donly-register_002c-changing-format"></a> +<a class="index-entry-id" id="index-changing-format_002c-and-read_002donly-registers"></a> +<p>Assigning the format of a read-only register is an error. Instead, copy +the read-only register’s value to, and assign the format of, a writable +register. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cgr"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\g</code><span class="r"><i class="slanted">r</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cgr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cg"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cg_0028rg"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\g(</code><span class="r"><i class="slanted">rg</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cg_0028rg'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cg_005breg_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\g[</code><span class="r"><i class="slanted">reg</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cg_005breg_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-format-of-register-_0028_005cg_0029"></a> +<a class="index-entry-id" id="index-register_002c-format-_0028_005cg_0029"></a> +<p>Interpolate the format of the register <var class="var">reg</var> (one-character +name <var class="var">r</var>, two-character name <var class="var">rg</var>). Zeroes represent +Arabic formats. If <var class="var">reg</var> is not defined, <var class="var">reg</var> is not created +and nothing is interpolated. <code class="code">\g</code> is interpreted even in copy mode +(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). +</p></dd></dl> + +<a class="index-entry-id" id="index-register-format_002c-in-expressions"></a> +<a class="index-entry-id" id="index-expressions_002c-and-register-format"></a> +<p>GNU <code class="code">troff</code> interprets only Arabic numerals. The Roman numeral or +alphabetic formats cannot be used as operands to arithmetic operators in +expressions (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>). For instance, it may be +desirable to test the page number independently of its format. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.af % i \" front matter +.de header-trap +. \" To test the page number, we need it in Arabic. +. ds saved-page-number-format \\g%\" +. af % 0 +. nr page-number-in-decimal \\n% +. af % \\*[saved-page-number-format] +. ie \\n[page-number-in-decimal]=1 .do-first-page-stuff +. el \{\ +. ie o .do-odd-numbered-page-stuff +. el .do-even-numbered-page-stuff +. \} +. rm saved-page-number-format +.. +.wh 0 header-trap +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="Built_002din-Registers"> +<div class="nav-panel"> +<p> +Previous: <a href="#Assigning-Register-Formats" accesskey="p" rel="prev">Assigning Register Formats</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Built_002din-Registers-1">5.8.5 Built-in Registers</h4> +<a class="index-entry-id" id="index-built_002din-registers"></a> +<a class="index-entry-id" id="index-registers_002c-built_002din"></a> + +<p>Predefined registers whose identifiers start with a dot are read-only. +Many are Boolean-valued, interpolating a true or false value testable +with the <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code> requests. Some read-only +registers are string-valued, meaning that they interpolate text. +</p> +<a class="index-entry-id" id="index-removing-a-built_002din-register"></a> +<a class="index-entry-id" id="index-register_002c-built_002din_002c-removing"></a> +<a class="index-entry-id" id="index-built_002din-register_002c-removing"></a> +<p><strong class="strong">Caution:</strong> Built-in registers are subject to removal like +others; once removed, they can be recreated only as normal writable +registers and will not reflect formatter state. +</p> +<p>A register name (without the dot) is often associated with a request of +the same name. A complete listing of all built-in registers can be +found in <a class="ref" href="#Register-Index">Register Index</a>. +</p> +<p>We present here a few built-in registers that are not described +elsewhere in this manual; they have to do with invariant properties of +GNU <code class="code">troff</code>, or obtain information about the formatter’s +command-line options, processing progress, or the operating environment. +</p> +<dl class="table"> +<dt id='index-_002eA'><span><code class="code">\n[.A]</code><a class="copiable-link" href='#index-_002eA'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-approximation-output-register-_0028_002eA_0029"></a> +<a class="index-entry-id" id="index-plain-text-approximation-output-register-_0028_002eA_0029-1"></a> +<p>Approximate output is being formatted (Boolean-valued); see +<code class="command">groff</code> <samp class="option">-a</samp> option (<a class="ref" href="#Groff-Options">Options</a>). +</p> +</dd> +<dt id='index-c_002e'><span><code class="code">\n[.c]</code><a class="copiable-link" href='#index-c_002e'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ec"></a> +</dd> +<dt><code class="code">\n[c.]</code></dt> +<dd><a class="index-entry-id" id="index-input-line-number-register-_0028_002ec_002c-c_002e_0029"></a> +<a class="index-entry-id" id="index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029"></a> +<p>Input line number. ‘<samp class="samp">c.</samp>’ is a writable synonym, +affecting subsequent interpolations of both ‘<samp class="samp">.c</samp>’ and ‘<samp class="samp">c.</samp>’. +</p> +</dd> +<dt id='index-current-input-file-name-register-_0028_002eF_0029'><span><code class="code">\n[.F]</code><a class="copiable-link" href='#index-current-input-file-name-register-_0028_002eF_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-input-file-name_002c-current_002c-register-_0028_002eF_0029"></a> +<a class="index-entry-id" id="index-_002eF"></a> +<p>Name of input file (string-valued). +</p> +</dd> +<dt id='index-_002eg'><span><code class="code">\n[.g]</code><a class="copiable-link" href='#index-_002eg'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-GNU-troff_002c-identification-register-_0028_002eg_0029"></a> +<a class="index-entry-id" id="index-GNU_002dspecific-register-_0028_002eg_0029"></a> +<p>Always true in GNU <code class="code">troff</code> (Boolean-valued). Documents can use +this to ask the formatter if it claims <code class="code">groff</code> compatibility. +</p> +</dd> +<dt id='index-_002eP'><span><code class="code">\n[.P]</code><a class="copiable-link" href='#index-_002eP'> ¶</a></span></dt> +<dd><p>Output page selection status (Boolean-valued); see <code class="command">groff</code> +<samp class="option">-o</samp> option (<a class="ref" href="#Groff-Options">Options</a>). +</p> +</dd> +<dt id='index-number-of-registers-register-_0028_002eR_0029'><span><code class="code">\n[.R]</code><a class="copiable-link" href='#index-number-of-registers-register-_0028_002eR_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-registers_002c-number-of_002c-register-_0028_002eR_0029"></a> +<a class="index-entry-id" id="index-_002eR-2"></a> +<p>Count of available unused registers; always 10,000 in GNU +<code class="code">troff</code>.<a class="footnote" id="DOCF52" href="#FOOT52"><sup>52</sup></a> +</p> +</dd> +<dt id='index-_002eT-2'><span><code class="code">\n[.T]</code><a class="copiable-link" href='#index-_002eT-2'> ¶</a></span></dt> +<dd><p>Indicator of output device selection (Boolean-valued); see +<code class="command">groff</code> <samp class="option">-T</samp> option (<a class="ref" href="#Groff-Options">Options</a>). +</p> +</dd> +<dt id='index-safer-mode-2'><span><code class="code">\n[.U]</code><a class="copiable-link" href='#index-safer-mode-2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-mode_002c-safer-2"></a> +<a class="index-entry-id" id="index-unsafe-mode-2"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-2"></a> +<a class="index-entry-id" id="index-_002eU"></a> +<p>Unsafe mode enablement status (Boolean-valued); see <code class="command">groff</code> +<samp class="option">-U</samp> option (<a class="ref" href="#Groff-Options">Options</a>). +</p> +</dd> +<dt id='index-_002ex'><span><code class="code">\n[.x]</code><a class="copiable-link" href='#index-_002ex'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-major-version-number-register-_0028_002ex_0029"></a> +<a class="index-entry-id" id="index-version-number_002c-major_002c-register-_0028_002ex_0029"></a> +<p>Major version number of the running GNU <code class="code">troff</code> formatter. For +example, if the version number is 1.23.0, then <code class="code">.x</code> +contains ‘<samp class="samp">1</samp>’. +</p> +</dd> +<dt id='index-_002ey'><span><code class="code">\n[.y]</code><a class="copiable-link" href='#index-_002ey'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-minor-version-number-register-_0028_002ey_0029"></a> +<a class="index-entry-id" id="index-version-number_002c-minor_002c-register-_0028_002ey_0029"></a> +<p>Minor version number of the running GNU <code class="code">troff</code> formatter. For +example, if the version number is 1.23.0, then <code class="code">.y</code> +contains ‘<samp class="samp">23</samp>’. +</p> +</dd> +<dt id='index-_002eY'><span><code class="code">\n[.Y]</code><a class="copiable-link" href='#index-_002eY'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-revision-number-register-_0028_002eY_0029"></a> +<p>Revision number of the running GNU <code class="code">troff</code> formatter. For example, +if the version number is 1.23.0, then <code class="code">.Y</code> contains ‘<samp class="samp">0</samp>’. +</p> +</dd> +<dt id='index-_0024_0024'><span><code class="code">\n[$$]</code><a class="copiable-link" href='#index-_0024_0024'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029"></a> +<a class="index-entry-id" id="index-PID-of-GNU-troff-register-_0028_0024_0024_0029"></a> +<a class="index-entry-id" id="index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029"></a> +<a class="index-entry-id" id="index-GNU-troff_002c-PID-register-_0028_0024_0024_0029"></a> +<p>Process identifier (PID) of the GNU <code class="code">troff</code> program in its +operating environment. +</p></dd> +</dl> + +<p>Date- and time-related registers are set per the local time as +determined by <cite class="cite">localtime<span class="r">(3)</span></cite> when the formatter launches. This +initialization can be overridden by <code class="env">SOURCE_DATE_EPOCH</code> and +<code class="env">TZ</code>; see <a class="ref" href="#Environment">Environment</a>. +</p> +<dl class="table"> +<dt id='index-seconds_002c-current-time-_0028seconds_0029'><span><code class="code">\n[seconds]</code><a class="copiable-link" href='#index-seconds_002c-current-time-_0028seconds_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-time_002c-current_002c-seconds-_0028seconds_0029"></a> +<a class="index-entry-id" id="index-current-time_002c-seconds-_0028seconds_0029"></a> +<a class="index-entry-id" id="index-seconds"></a> +<p>Count of seconds elapsed in the minute (0–60). </p> +</dd> +<dt id='index-minutes_002c-current-time-_0028minutes_0029'><span><code class="code">\n[minutes]</code><a class="copiable-link" href='#index-minutes_002c-current-time-_0028minutes_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-time_002c-current_002c-minutes-_0028minutes_0029"></a> +<a class="index-entry-id" id="index-current-time_002c-minutes-_0028minutes_0029"></a> +<a class="index-entry-id" id="index-minutes"></a> +<p>Count of minutes elapsed in the hour (0–59). +</p> +</dd> +<dt id='index-hours_002c-current-time-_0028hours_0029'><span><code class="code">\n[hours]</code><a class="copiable-link" href='#index-hours_002c-current-time-_0028hours_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-time_002c-current_002c-hours-_0028hours_0029"></a> +<a class="index-entry-id" id="index-current-time_002c-hours-_0028hours_0029"></a> +<a class="index-entry-id" id="index-hours"></a> +<p>Count of hours elapsed since midnight (0–23). +</p> +</dd> +<dt id='index-day-of-the-week-register-_0028dw_0029'><span><code class="code">\n[dw]</code><a class="copiable-link" href='#index-day-of-the-week-register-_0028dw_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-date_002c-day-of-the-week-register-_0028dw_0029"></a> +<a class="index-entry-id" id="index-dw"></a> +<p>Day of the week (1–7; 1 is Sunday). +</p> +</dd> +<dt id='index-day-of-the-month-register-_0028dy_0029'><span><code class="code">\n[dy]</code><a class="copiable-link" href='#index-day-of-the-month-register-_0028dy_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-date_002c-day-of-the-month-register-_0028dy_0029"></a> +<a class="index-entry-id" id="index-dy"></a> +<p>Day of the month (1–31). +</p> +</dd> +<dt id='index-month-of-the-year-register-_0028mo_0029'><span><code class="code">\n[mo]</code><a class="copiable-link" href='#index-month-of-the-year-register-_0028mo_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-date_002c-month-of-the-year-register-_0028mo_0029"></a> +<a class="index-entry-id" id="index-mo"></a> +<p>Month of the year (1–12). +</p> +</dd> +<dt id='index-date_002c-year-register-_0028year_002c-yr_0029'><span><code class="code">\n[year]</code><a class="copiable-link" href='#index-date_002c-year-register-_0028year_002c-yr_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-year_002c-current_002c-register-_0028year_002c-yr_0029"></a> +<a class="index-entry-id" id="index-year"></a> +<p>Gregorian year. +</p> +<a class="index-entry-id" id="index-CSTR-_002354-errata"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-yr-register"></a> +</dd> +<dt id='index-yr'><span><code class="code">\n[yr]</code><a class="copiable-link" href='#index-yr'> ¶</a></span></dt> +<dd><p>Gregorian year minus 1900. This register is incorrectly documented +in the <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> manual as storing the last two digits +of the current year. That claim stopped being true in 2000. Old +<code class="code">troff</code> input that looks like: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">'\" The year number is a surprise after 1999. +This document was formatted in 19\n(yr. +</pre></div></div> + +<p>can be corrected to: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">This document was formatted in \n[year]. +</pre></div></div> + +<p>or, for portability across many <code class="code">roff</code> programs, to the following. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr y4 1900+\n(yr +This document was formatted in \n(y4. +</pre></div></div> +</dd> +</dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Manipulating-Filling-and-Adjustment"> +<div class="nav-panel"> +<p> +Next: <a href="#Manipulating-Hyphenation" accesskey="n" rel="next">Manipulating Hyphenation</a>, Previous: <a href="#Registers" accesskey="p" rel="prev">Registers</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Manipulating-Filling-and-Adjustment-1">5.9 Manipulating Filling and Adjustment</h3> +<a class="index-entry-id" id="index-manipulating-filling-and-adjustment"></a> +<a class="index-entry-id" id="index-filling-and-adjustment_002c-manipulating"></a> +<a class="index-entry-id" id="index-adjustment-and-filling_002c-manipulating"></a> +<a class="index-entry-id" id="index-justifying-text"></a> +<a class="index-entry-id" id="index-text_002c-justifying"></a> + +<a class="index-entry-id" id="index-break-1"></a> +<a class="index-entry-id" id="index-line-break"></a> +<a class="index-entry-id" id="index-bp-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-ce-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-cf-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-fi-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-fl-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-in-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-nf-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-rj-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-sp-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-ti-request_002c-causing-implicit-break"></a> +<a class="index-entry-id" id="index-trf-request_002c-causing-implicit-break"></a> +<p>When an output line is pending (see below), a break moves the drawing +position to the beginning of the next text baseline, interrupting +filling. Various ways of causing breaks were shown in <a class="ref" href="#Breaking">Breaking</a>. +The <code class="code">br</code> request likewise causes a break. Several other requests +imply breaks: <code class="code">bp</code>, <code class="code">ce</code>, <code class="code">cf</code>, <code class="code">fi</code>, <code class="code">fl</code>, +<code class="code">in</code>, <code class="code">nf</code>, <code class="code">rj</code>, <code class="code">sp</code>, <code class="code">ti</code>, and <code class="code">trf</code>. +If the no-break control character is used with any of these requests, +GNU <code class="code">troff</code> suppresses the break; instead the requested operation +takes effect at the next break. ‘<samp class="samp">'br</samp>’ does nothing. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 55n +This line is normally filled and adjusted. +.br +A line's alignment is decided +'ce \" Center the next input line (no break). +when it is output. +This line returns to normal filling and adjustment. + ⇒ This line is normally filled and adjusted. + ⇒ A line's alignment is decided when it is output. + ⇒ This line returns to normal filling and adjustment. +</pre></div></div> + +<a class="index-entry-id" id="index-pending-output-line"></a> +<a class="index-entry-id" id="index-partially-collected-line"></a> +<a class="index-entry-id" id="index-output-line-properties"></a> +<a class="index-entry-id" id="index-properties-of-output-lines"></a> +<p>Output line properties like page offset, indentation, adjustment, and +even the location of its text baseline, are not determined until the +line has been broken. An output line is said to be <em class="dfn">pending</em> if +some input has been collected but an output line corresponding to it has +not yet been written; such an output line is also termed <em class="dfn">partially +collected</em>. If no output line is pending, it is as if a break has +already happened; additional breaks, whether explicit or implicit, have +no effect. If the vertical drawing position is negative—as it is when +the formatter starts up—a break starts a new page (even if no output +line is pending) unless an end-of-input macro is being interpreted. +See <a class="xref" href="#End_002dof_002dinput-Traps">End-of-input Traps</a>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.br</code></strong><a class="copiable-link" href='#index-_002ebr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-br"></a> +<p>Break the line: emit any pending output line without adjustment. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">foo bar +.br +baz +'br +qux + ⇒ foo bar + ⇒ baz qux +</pre></div></div> +</dd></dl> + +<p>Sometimes you want to prevent a break within a phrase or between a +quantity and its units. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_007e-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\~</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007e-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_007e"></a> +<a class="index-entry-id" id="index-unbreakable-space-_0028_005c_007e_0029"></a> +<a class="index-entry-id" id="index-space_002c-unbreakable-_0028_005c_007e_0029"></a> +<p>Insert an unbreakable space that is adjustable like an ordinary space. +It is discarded from the end of an output line if a break is forced. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Set the output speed to\~1. +There are 1,024\~bytes in 1\~KiB. +J.\~F.\~Ossanna wrote the original CSTR\~#54. +</pre></div></div> +</dd></dl> + +<p>By default, GNU <code class="code">troff</code> fills text and adjusts it to reach the +output line length. The <code class="code">nf</code> request disables filling; the +<code class="code">fi</code> request reënables it. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fi</code></strong><a class="copiable-link" href='#index-_002efi'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fi"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eu_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.u]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eu_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eu"></a> +<a class="index-entry-id" id="index-filling-of-output_002c-enabling-_0028fi_0029"></a> +<a class="index-entry-id" id="index-output_002c-filling_002c-enablement-of-_0028fi_0029"></a> +<a class="index-entry-id" id="index-fill-mode-_0028fi_0029_002c-enabling"></a> +<a class="index-entry-id" id="index-mode_002c-fill-_0028fi_0029_002c-enabling"></a> +<p>Enable filling of output lines; a pending output line is broken. The +read-only register <code class="code">.u</code> is set to 1. The filling enablement +status, sometimes called <em class="dfn">fill mode</em>, is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). See <a class="xref" href="#Line-Continuation">Line Continuation</a>, for +interaction with the <code class="code">\c</code> escape sequence. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nf</code></strong><a class="copiable-link" href='#index-_002enf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nf"></a> +<a class="index-entry-id" id="index-filling-of-output_002c-disabling-_0028nf_0029"></a> +<a class="index-entry-id" id="index-output_002c-filling_002c-disablement-of-_0028nf_0029"></a> +<a class="index-entry-id" id="index-no_002dfill-mode"></a> +<a class="index-entry-id" id="index-mode_002c-no_002dfill"></a> +<a class="index-entry-id" id="index-fill-mode_002c-disabling"></a> +<a class="index-entry-id" id="index-mode_002c-fill_002c-disabling"></a> +<p>Disable filling of output lines: the output line length (see <a class="pxref" href="#Line-Layout">Line Layout</a>) is ignored and output lines are broken where the input lines +are. A pending output line is broken and adjustment is suppressed. The +read-only register <code class="code">.u</code> is set to 0. The filling enablement +status is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). See +<a class="ref" href="#Line-Continuation">Line Continuation</a>, for interaction with the <code class="code">\c</code> escape +sequence. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ead"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ad</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ead'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ad"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ej_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.j]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ej_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ej"></a> +<p>Enable output line adjustment in <var class="var">mode</var>, taking effect when the +pending (or next) output line is broken. Adjustment is suppressed when +filling is. <var class="var">mode</var> can have one of the following values. +</p> +<dl class="table"> +<dt><code class="code">b</code></dt> +<dt><code class="code">n</code></dt> +<dd><p>Adjust “normally”: if the output line does not consume the distance +between the indentation and the configured output line length, GNU +<code class="code">troff</code> stretches adjustable spaces within the line until that +length is reached. When the indentation is zero, this mode spreads the +line to both the left and right margins. This is the GNU <code class="code">troff</code> +default. +</p> +</dd> +<dt id='index-centered-text-_0028filled_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centered-text-_0028filled_0029'> ¶</a></span></dt> +<dd><p>Center filled text. Contrast with the <code class="code">ce</code> request, which centers +text <em class="emph">without</em> filling it. +</p> +</dd> +<dt id='index-ragged_002dright-text'><span><code class="code">l</code><a class="copiable-link" href='#index-ragged_002dright-text'> ¶</a></span></dt> +<dd><p>Align text to the left without adjusting it. +</p> +</dd> +<dt id='index-ragged_002dleft-text'><span><code class="code">r</code><a class="copiable-link" href='#index-ragged_002dleft-text'> ¶</a></span></dt> +<dd><p>Align text to the right without adjusting it. +</p></dd> +</dl> + +<p><var class="var">mode</var> can also be a value previously stored in the <code class="code">.j</code> +register. Using <code class="code">ad</code> without an argument is the same as ‘<samp class="samp">.ad +\n[.j]</samp>’; unless filling is disabled, GNU <code class="code">troff</code> resumes adjusting +lines in the same way it did before adjustment was disabled by +invocation of the <code class="code">na</code> request. +</p> +<a class="index-entry-id" id="index-adjustment-mode-register-_0028_002ej_0029"></a> +<p>The adjustment mode and enablement status are encoded in the read-only +register <code class="code">.j</code>. These parameters are associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>The value of <code class="code">.j</code> for any adjustment mode is an implementation +detail and should not be relied upon as a programmer’s interface. Do +not write logic to interpret or perform arithmetic on it. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 48n +.de AD +. br +. ad \\$1 +.. +.de NA +. br +. na +.. +left +.AD r +.nr ad \n(.j +right +.AD c +center +.NA +left +.AD +center +.AD \n(ad +right +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ left + ⇒ right + ⇒ center + ⇒ left + ⇒ center + ⇒ right +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.na</code></strong><a class="copiable-link" href='#index-_002ena'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-na"></a> +<p>Disable output line adjustment. This produces the same output as +left-alignment, but the value of the adjustment mode register <code class="code">.j</code> +is altered differently. The adjustment mode and enablement status are +associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebrp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.brp</code></strong><a class="copiable-link" href='#index-_002ebrp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-brp"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cp-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\p</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cp-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cp"></a> +<p>Break, adjusting the line per the current adjustment mode. <code class="code">\p</code> +schedules a break with adjustment at the next word boundary. The escape +sequence is itself neither a break nor a space of any kind; it can thus +be placed in the middle of a word to cause a break at the end of that +word. +</p> +<p>Breaking with immediate adjustment can produce ugly results since GNU +<code class="code">troff</code> doesn’t have a sophisticated paragraph-building algorithm, +as TeX has, for example. Instead, GNU <code class="code">troff</code> fills and adjusts +a paragraph line by line. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 4.5i +This is an uninteresting sentence. +This is an uninteresting sentence.\p +This is an uninteresting sentence. +</pre></div></div> + +<p>is formatted as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">This is an uninteresting sentence. This is +an uninteresting sentence. +This is an uninteresting sentence. +</pre></div></div> +</dd></dl> + +<a class="index-entry-id" id="index-productive-input-line"></a> +<a class="index-entry-id" id="index-input-line_002c-productive"></a> +<a class="index-entry-id" id="index-line_002c-productive-input"></a> +<p>To clearly present the next couple of requests, we must introduce the +concept of “productive” input lines. A <em class="dfn">productive input line</em> is +one that directly produces formatted output. Text lines produce +output,<a class="footnote" id="DOCF53" href="#FOOT53"><sup>53</sup></a> as do control +lines containing requests like <code class="code">tl</code> or escape sequences like +<code class="code">\D</code>. Macro calls are not <em class="emph">directly</em> productive, and thus not +counted, but their interpolated contents can be. Empty requests, and +requests and escape sequences that define registers or strings or alter +the formatting environment (as with changes to the size, face, height, +slant, or color of the type) are not productive. We will also preview +the output line continuation escape sequence, <code class="code">\c</code>, which +“connects” two input lines that would otherwise be counted separately. +<a class="footnote" id="DOCF54" href="#FOOT54"><sup>54</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de hello +Hello, world! +.. +.ce \" center output of next productive input line +. +.nr junk-reg 1 +.ft I +Chorus: \c +.ft +.hello +Went the day well? + ⇒ <i class="slanted">Chorus:</i> Hello, world! + ⇒ Went the day well? +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ece"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ce</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ece'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ce"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ece_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ce]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ece_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ece-1"></a> +<a class="index-entry-id" id="index-centered-text-_0028unfilled_0029"></a> +<a class="index-entry-id" id="index-centering-lines-_0028ce_0029"></a> +<a class="index-entry-id" id="index-lines_002c-centering-_0028ce_0029"></a> +<p>Break (unless the no-break control character is used), center the output +of the next <var class="var">n</var> productive input lines with respect to the line +length and indentation without filling, then break again regardless of +the invoking control character. +If the argument is not positive, centering is disabled. Omitting the +argument implies an <var class="var">n</var> of ‘<samp class="samp">1</samp>’. The count of lines remaining +to be centered is stored in the read-only register <code class="code">.ce</code> and is +associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<a class="index-entry-id" id="index-ce-request_002c-difference-from-_002ead-c"></a> +<p>While the ‘<samp class="samp">.ad c</samp>’<!-- /@w --> request also centers text, it fills the text +as well. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de FR +This is a small text fragment that shows the differences +between the `.ce' and the `.ad c' requests. +.. +.ll 4i +.ce 1000 +.FR +.ce 0 + +.ad c +.FR + ⇒ This is a small text fragment that shows + ⇒ the differences + ⇒ between the ‘.ce’ and the ‘.ad c’ requests. + ⇒ + ⇒ This is a small text fragment that shows + ⇒ the differences between the ‘.ce’ and + ⇒ the ‘.ad c’ requests. +</pre></div></div> + +<p>The previous example illustrates a common idiom of turning centering on +for a quantity of lines far in excess of what is required, and off again +after the text to be centered. This technique relieves humans of +counting lines for requests that take a count of input lines as an +argument. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002erj"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rj</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002erj'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rj"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002erj_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.rj]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002erj_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002erj-1"></a> +<a class="index-entry-id" id="index-justifying-text-_0028rj_0029"></a> +<a class="index-entry-id" id="index-text_002c-justifying-_0028rj_0029"></a> +<a class="index-entry-id" id="index-right_002djustifying-_0028rj_0029"></a> +<p>Break (unless the no-break control character is used), align the output +of the next <var class="var">n</var> productive input lines to the right margin without +filling, then break again regardless of the control character. +If the argument is not positive, right-alignment is disabled. Omitting +the argument implies an <var class="var">n</var> of ‘<samp class="samp">1</samp>’. The count of lines +remaining to be right-aligned is stored in the read-only register +<code class="code">.rj</code> and is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 49n +.rj 3 +At first I hoped that such a technically unsound +project would collapse but I soon realized it was +doomed to success. \[em] C. A. R. Hoare + ⇒ At first I hoped that such a technically unsound + ⇒ project would collapse but I soon realized it was + ⇒ doomed to success. -- C. A. R. Hoare +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ess"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ss</code></strong> <var class="def-var-arguments">word-space-size [<span class="r"><i class="slanted">additional-sentence-space-size</i></span>]</var><a class="copiable-link" href='#index-_002ess'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ss"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ess_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ess_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ess-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esss_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002esss"></a> +<a class="index-entry-id" id="index-word-space-size-register-_0028_002ess_0029"></a> +<a class="index-entry-id" id="index-size-of-word-space-register-_0028_002ess_0029"></a> +<a class="index-entry-id" id="index-space-between-words-register-_0028_002ess_0029"></a> +<a class="index-entry-id" id="index-inter_002dsentence-space-size-register-_0028_002esss_0029"></a> +<a class="index-entry-id" id="index-sentence-space-size-register-_0028_002esss_0029"></a> +<a class="index-entry-id" id="index-size-of-sentence-space-register-_0028_002esss_0029"></a> +<a class="index-entry-id" id="index-space-between-sentences-register-_0028_002esss_0029"></a> +<p>Set the sizes of spaces between words and +sentences<a class="footnote" id="DOCF55" href="#FOOT55"><sup>55</sup></a> in twelfths +of font’s space width (typically one-fourth to one-third em for Western +scripts). The default for both parameters is 12. Negative values +are erroneous. +<a class="index-entry-id" id="index-inter_002dword-spacing_002c-minimal"></a> +<a class="index-entry-id" id="index-minimal-inter_002dword-spacing"></a> +<a class="index-entry-id" id="index-space_002c-between-words"></a> +The first argument is a minimum; if an output line undergoes adjustment, +such spaces may increase in width. +<a class="index-entry-id" id="index-inter_002dsentence-space_002c-additional"></a> +<a class="index-entry-id" id="index-additional-inter_002dsentence-space"></a> +<a class="index-entry-id" id="index-space_002c-between-sentences"></a> +The optional second argument sets the amount of additional space +separating sentences on the same output line. If omitted, this amount +is set to <var class="var">word-space-size</var>. The request is ignored if there are no +parameters. +</p> +<a class="index-entry-id" id="index-filling_002c-and-inter_002dsentence-space"></a> +<a class="index-entry-id" id="index-mode_002c-fill_002c-and-inter_002dsentence-space"></a> +<p>Additional inter-sentence space is used only if the output line is not +full when the end of a sentence occurs in the input. If a sentence ends +at the end of an input line, then both an inter-word space and an +inter-sentence space are added to the output; if two spaces follow the +end of a sentence in the middle of an input line, then the second space +becomes an inter-sentence space in the output. Additional +inter-sentence space is not adjusted, but the inter-word space that +always precedes it may be. Further input spaces after the second, if +present, are adjusted as normal. +</p> +<p>The read-only registers <code class="code">.ss</code> and <code class="code">.sss</code> hold the minimal +inter-word space and additional inter-sentence space amounts, +respectively. These parameters are part of the environment +(see <a class="pxref" href="#Environments">Environments</a>), and rounded down to the nearest multiple +of 12 on terminals. +</p> +<a class="index-entry-id" id="index-discardable-horizontal-space"></a> +<a class="index-entry-id" id="index-space_002c-discardable_002c-horizontal"></a> +<a class="index-entry-id" id="index-horizontal-discardable-space"></a> +<p>The <code class="code">ss</code> request can insert discardable horizontal space; that is, +space that is discarded at a break. For example, some footnote styles +collect the notes into a single paragraph with large gaps between +each note. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 48n +1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14. +.ss 12 48 \" applies to next sentence ending +Reprints no longer available through FCS. +.ss 12 \" go back to normal +2.\~Better known for other work. + ⇒ 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints + ⇒ no longer available through FCS. 2. Better + ⇒ known for other work. +</pre></div></div> + +<p>If <em class="emph">undiscardable</em> space is required, use the <code class="code">\h</code> escape +sequence. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Manipulating-Hyphenation"> +<div class="nav-panel"> +<p> +Next: <a href="#Manipulating-Spacing" accesskey="n" rel="next">Manipulating Spacing</a>, Previous: <a href="#Manipulating-Filling-and-Adjustment" accesskey="p" rel="prev">Manipulating Filling and Adjustment</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Manipulating-Hyphenation-1">5.10 Manipulating Hyphenation</h3> +<a class="index-entry-id" id="index-manipulating-hyphenation"></a> +<a class="index-entry-id" id="index-hyphenation_002c-manipulating"></a> + +<a class="index-entry-id" id="index-hyphenation_002c-automatic"></a> +<a class="index-entry-id" id="index-automatic-hyphenation"></a> +<p>When filling, GNU <code class="code">troff</code> hyphenates words as needed at +user-specified and automatically determined hyphenation points. The +machine-driven determination of hyphenation points in words requires +algorithms and data, and is susceptible to conventions and preferences. +Before tackling such <em class="dfn">automatic hyphenation</em>, let us consider how +hyphenation points can be set explicitly. +</p> +<a class="index-entry-id" id="index-hyphenation_002c-explicit"></a> +<a class="index-entry-id" id="index-explicit-hyphenation"></a> +<a class="index-entry-id" id="index-hyphenation_002c-manual"></a> +<a class="index-entry-id" id="index-manual-hyphenation"></a> +<p>Explicitly hyphenated words such as “mother-in-law” are eligible for +breaking after each of their hyphens. Relatively few words in a +language offer such obvious break points, however, and automatic +detection of syllabic (or phonetic) boundaries for hyphenation is not +perfect,<a class="footnote" id="DOCF56" href="#FOOT56"><sup>56</sup></a> particularly for +unusual words found in technical literature. We can instruct GNU +<code class="code">troff</code> how to hyphenate specific words if the need arises. +</p> +<a class="index-entry-id" id="index-hyphenation-exceptions"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehw"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hw</code></strong> <var class="def-var-arguments">word …</var><a class="copiable-link" href='#index-_002ehw'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hw"></a> +<p>Define each <em class="dfn">hyphenation exception</em> <var class="var">word</var> with each hyphen ‘-’ +in the word indicating a hyphenation point. For example, the request +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.hw in-sa-lub-rious alpha +</pre></div></div> + +<p>marks potential hyphenation points in “insalubrious”, and prevents +“alpha” from being hyphenated at all. +</p> +<p>Besides the space character, any character whose hyphenation code is +zero can be used to separate the arguments of <code class="code">hw</code> (see the +<code class="code">hcode</code> request below). In addition, this request can be used more +than once. +</p> +<a class="index-entry-id" id="index-hw-request_002c-and-hy-restrictions"></a> +<p>Hyphenation points specified with <code class="code">hw</code> are not subject to the +within-word placement restrictions imposed by the <code class="code">hy</code> request (see +below). +</p> +<p>Hyphenation exceptions specified with the <code class="code">hw</code> request are +associated with the hyphenation language (see the <code class="code">hla</code> request +below) and environment (see <a class="pxref" href="#Environments">Environments</a>); invoking the <code class="code">hw</code> +request in the absence of a hyphenation language is an error. +</p> +<p>The request is ignored if there are no parameters. +</p></dd></dl> + +<p>These are known as hyphenation <i class="slanted">exceptions</i> in the expectation +that most users will avail themselves of automatic hyphenation; these +exceptions override any rules that would normally apply to a word +matching a hyphenation exception defined with <code class="code">hw</code>. +</p> +<p>Situations also arise when only a specific occurrence of a word needs +its hyphenation altered or suppressed, or when a URL or similar string +needs to be breakable in sensible places without hyphenation. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0025-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\%</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0025-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0025"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003a-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\:</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_003a-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_003a"></a> +<a class="index-entry-id" id="index-hyphenation-character-_0028_005c_0025_0029"></a> +<a class="index-entry-id" id="index-character_002c-hyphenation-_0028_005c_0025_0029"></a> +<a class="index-entry-id" id="index-disabling-hyphenation-_0028_005c_0025_0029"></a> +<a class="index-entry-id" id="index-hyphenation_002c-disabling-_0028_005c_0025_0029"></a> +<p>To tell GNU <code class="code">troff</code> how to hyphenate words as they occur in input, +use the <code class="code">\%</code> escape sequence; it is the default <em class="dfn">hyphenation +character</em>. Each instance within a word indicates to GNU <code class="code">troff</code> +that the word may be hyphenated at that point, while prefixing a word +with this escape sequence prevents it from being otherwise hyphenated. +This mechanism affects only that occurrence of the word; to change the +hyphenation of a word for the remainder of input processing, use the +<code class="code">hw</code> request. +</p> +<a class="index-entry-id" id="index-_005cX_002c-followed-by-_005c_0025"></a> +<a class="index-entry-id" id="index-_005cY_002c-followed-by-_005c_0025"></a> +<a class="index-entry-id" id="index-_005c_0025_002c-following-_005cX-or-_005cY"></a> +<p>GNU <code class="code">troff</code> regards the escape sequences <code class="code">\X</code> and <code class="code">\Y</code> as +starting a word; that is, the <code class="code">\%</code> escape sequence in, say, +‘<samp class="samp">\X'...'\%foobar</samp>’<!-- /@w --> or ‘<samp class="samp">\Y'...'\%foobar</samp>’<!-- /@w --> no longer +prevents hyphenation of ‘<samp class="samp">foobar</samp>’ but inserts a hyphenation point +just prior to it; most likely this isn’t what you want. +See <a class="xref" href="#Postprocessor-Access">Postprocessor Access</a>. +</p> +<a class="index-entry-id" id="index-non_002dprinting-break-point-_0028_005c_003a_0029"></a> +<a class="index-entry-id" id="index-breaking-without-hyphens-_0028_005c_003a_0029"></a> +<a class="index-entry-id" id="index-file-names_002c-breaking-_0028_005c_003a_0029"></a> +<a class="index-entry-id" id="index-breaking-file-names-_0028_005c_003a_0029"></a> +<a class="index-entry-id" id="index-URLs_002c-breaking-_0028_005c_003a_0029"></a> +<a class="index-entry-id" id="index-breaking-URLs-_0028_005c_003a_0029"></a> +<p><code class="code">\:</code> inserts a non-printing break point; that is, a word can break +there, but the soft hyphen glyph (see below) is not written to the +output if it does. This escape sequence is an input word boundary, so +the remainder of the word is subject to hyphenation as normal. +</p> +<p>You can combine <code class="code">\:</code> and <code class="code">\%</code> to control breaking of a file +name or URL, or to permit hyphenation only after certain explicit +hyphens within a word. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce +was, in retrospect, inevitable once the contents of +\%/var/log/\:\%httpd/\:\%access_log on the family web +server came to light, revealing visitors from Hogwarts. +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002ehc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hc"></a> +<p>Change the hyphenation character to <var class="var">char</var>. This character then +works as the <code class="code">\%</code> escape sequence normally does, and thus no longer +appears in the output.<a class="footnote" id="DOCF57" href="#FOOT57"><sup>57</sup></a> Without an +argument, <code class="code">hc</code> resets the hyphenation character to <code class="code">\%</code> (the +default). The hyphenation character is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eshc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002eshc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-shc"></a> +<a class="index-entry-id" id="index-soft-hyphen-character_002c-setting-_0028shc_0029"></a> +<a class="index-entry-id" id="index-character_002c-soft-hyphen_002c-setting-_0028shc_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-soft-hyphen-_0028hy_0029"></a> +<a class="index-entry-id" id="index-soft-hyphen-glyph-_0028hy_0029"></a> +<a class="index-entry-id" id="index-char-request_002c-and-soft-hyphen-character"></a> +<a class="index-entry-id" id="index-tr-request_002c-and-soft-hyphen-character"></a> +<p>Set the <em class="dfn">soft hyphen character</em>, inserted when a word is hyphenated +automatically or at a hyphenation character, to the ordinary or special +character <var class="var">c</var>.<a class="footnote" id="DOCF58" href="#FOOT58"><sup>58</sup></a> If the argument is omitted, the soft +hyphen character is set to the default, <code class="code">\[hy]</code>. If no glyph for +<var class="var">c</var> exists in the font in use at a potential hyphenation point, then +the line is not broken there. Neither character definitions (specified +with the <code class="code">char</code> and similar requests) nor translations (specified +with the <code class="code">tr</code> request) are applied to <var class="var">c</var>. +</p></dd></dl> + +<a class="index-entry-id" id="index-hyphenation-parameters_002c-automatic"></a> +<a class="index-entry-id" id="index-automatic-hyphenation-parameters"></a> +<p>Several requests influence automatic hyphenation. Because conventions +vary, a variety of hyphenation modes is available to the <code class="code">hy</code> +request; these determine whether hyphenation will apply to a +word prior to breaking a line at the end of a page (more or less; see +below for details), and at which positions within that word +automatically determined hyphenation points are permissible. The places +within a word that are eligible for hyphenation are determined by +language-specific data and lettercase relationships. Furthermore, +hyphenation of a word might be suppressed due to a limit on +consecutive hyphenated lines (<code class="code">hlm</code>), a minimum line length +threshold (<code class="code">hym</code>), or because the line can instead be adjusted with +additional inter-word space (<code class="code">hys</code>). +</p> +<a class="index-entry-id" id="index-hyphenation-mode-register-_0028_002ehy_0029"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hy</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ehy'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hy"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehy_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hy]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehy_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehy-1"></a> +<p>Set automatic hyphenation mode to <var class="var">mode</var>, an integer encoding +conditions for hyphenation; if omitted, ‘<samp class="samp">1</samp>’ is implied. The +hyphenation mode is available in the read-only register ‘<samp class="samp">.hy</samp>’; it +is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). The default +hyphenation mode depends on the localization file loaded when GNU +<code class="code">troff</code> starts up; see the <code class="code">hpf</code> request below. +</p> +<p>Typesetting practice generally does not avail itself of every +opportunity for hyphenation, but the details differ by language and site +mandates. The hyphenation modes of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> were +implemented with English-language publishing practices of the 1970s in +mind, not a scrupulous enumeration of conceivable parameters. GNU +<code class="code">troff</code> extends those modes such that finer-grained control is +possible, favoring compatibility with older implementations over a more +intuitive arrangement. The means of hyphenation mode control is a set +of numbers that can be added up to encode the behavior +sought.<a class="footnote" id="DOCF59" href="#FOOT59"><sup>59</sup></a> The entries in the +following table are termed <em class="dfn">values</em>; the sum of the desired +values is the <em class="dfn">mode</em>. +</p> +<dl class="table"> +<dt><code class="code">0</code></dt> +<dd><p>disables hyphenation. +</p> +</dd> +<dt><code class="code">1</code></dt> +<dd><p>enables hyphenation except after the first and before the last character +of a word. +</p></dd> +</dl> + +<p>The remaining values “imply” 1; that is, they enable hyphenation +under the same conditions as ‘<samp class="samp">.hy 1</samp>’, and then apply or lift +restrictions relative to that basis. +</p> +<dl class="table"> +<dt><code class="code">2</code></dt> +<dd><p>disables hyphenation of the last word on a page,<a class="footnote" id="DOCF60" href="#FOOT60"><sup>60</sup></a> even for explicitly hyphenated words. +</p> +</dd> +<dt><code class="code">4</code></dt> +<dd><p>disables hyphenation before the last two characters of a word. +</p> +</dd> +<dt><code class="code">8</code></dt> +<dd><p>disables hyphenation after the first two characters of a word. +</p> +</dd> +<dt><code class="code">16</code></dt> +<dd><p>enables hyphenation before the last character of a word. +</p> +</dd> +<dt><code class="code">32</code></dt> +<dd><p>enables hyphenation after the first character of a word. +</p></dd> +</dl> + +<p>Apart from value 2, restrictions imposed by the hyphenation mode +are <em class="emph">not</em> respected for words whose hyphenations have been +specified with the hyphenation character (‘<samp class="samp">\%</samp>’ by default) or the +<code class="code">hw</code> request. +</p> +<p>Nonzero values in the previous table are additive. For example, +mode 12 causes GNU <code class="code">troff</code> to hyphenate neither the last two +nor the first two characters of a word. Some values cannot be used +together because they contradict; for instance, values 4 and 16, +and values 8 and 32. As noted, it is superfluous to add 1 to any +non-zero even mode. +</p> +<a class="index-entry-id" id="index-hyphenation-pattern-files"></a> +<a class="index-entry-id" id="index-pattern-files_002c-for-hyphenation"></a> +<p>The automatic placement of hyphens in words is determined by +<em class="dfn">pattern files</em>, which are derived from TeX and available for +several languages. The number of characters at the beginning of a word +after which the first hyphenation point should be inserted is determined +by the patterns themselves; it can’t be reduced further without +introducing additional, invalid hyphenation points (unfortunately, this +information is not part of a pattern file—you have to know it in +advance). The same is true for the number of characters at the end of +a word before the last hyphenation point should be inserted. For +example, you can supply the following input to ‘<samp class="samp">echo $(nroff)</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 1 +.hy 48 +splitting +</pre></div></div> + +<p>You will get +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">s- plit- t- in- g +</pre></div></div> + +<p>instead of the correct ‘split- ting’. English patterns as distributed +with GNU <code class="code">troff</code> need two characters at the beginning and three +characters at the end; this means that value 4 of <code class="code">hy</code> is +mandatory. Value 8 is possible as an additional restriction, but +values 16 and 32 should be avoided, as should mode 1. +Modes 4 and 6 are typical. +</p> +<p>A table of left and right minimum character counts for hyphenation as +needed by the patterns distributed with GNU <code class="code">troff</code> follows; see +the <cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for more information on GNU +<code class="code">troff</code>’s language macro files. +</p> +<table class="multitable"> +<thead><tr><th>language</th><th>pattern name</th><th>left min</th><th>right min</th></tr></thead> +<tbody><tr><td>Czech</td><td>cs</td><td>2</td><td>2</td></tr> +<tr><td>English</td><td>en</td><td>2</td><td>3</td></tr> +<tr><td>French</td><td>fr</td><td>2</td><td>3</td></tr> +<tr><td>German traditional</td><td>det</td><td>2</td><td>2</td></tr> +<tr><td>German reformed</td><td>den</td><td>2</td><td>2</td></tr> +<tr><td>Italian</td><td>it</td><td>2</td><td>2</td></tr> +<tr><td>Swedish</td><td>sv</td><td>1</td><td>2</td></tr> +</tbody> +</table> + +<p>Hyphenation exceptions within pattern files (i.e., the words within a +TeX <code class="code">\hyphenation</code> group) obey the hyphenation restrictions +given by <code class="code">hy</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nh</code></strong><a class="copiable-link" href='#index-_002enh'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nh"></a> +<p>Disable automatic hyphenation; i.e., set the hyphenation mode to 0 +(see above). The hyphenation mode of the last call to <code class="code">hy</code> is not +remembered. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehpf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpf</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hpf"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfa</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpfa'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hpfa"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfcode</code></strong> <var class="def-var-arguments">a b [c d] …</var><a class="copiable-link" href='#index-_002ehpfcode'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hpfcode"></a> +<a class="index-entry-id" id="index-hyphenation-patterns-_0028hpf_0029"></a> +<a class="index-entry-id" id="index-patterns-for-hyphenation-_0028hpf_0029"></a> +<p>Read hyphenation patterns from <var class="var">pattern-file</var>, which is sought +in the same way that macro files are with the <code class="code">mso</code> request or the +<samp class="option">-m<var class="var">name</var></samp> command-line option to <code class="code">groff</code>. The +<var class="var">pattern-file</var> should have the same format as (simple) TeX +pattern files. More specifically, the following scanning rules are +implemented. +</p> +<ul class="itemize mark-bullet"> +<li>A percent sign starts a comment (up to the end of the line) even if +preceded by a backslash. + +</li><li>“Digraphs” like <code class="code">\$</code> are not supported. + +</li><li><code class="code">^^<var class="var">xx</var></code> (where each <var class="var">x</var> is 0–9 or a–f) and +<code class="code">^^<var class="var">c</var></code> (character <var class="var">c</var> in the code point range 0–127 +decimal) are recognized; other uses of <code class="code">^</code> cause an error. + +</li><li>No macro expansion is performed. + +</li><li><code class="code">hpf</code> checks for the expression <code class="code">\patterns{…}</code> +(possibly with whitespace before or after the braces). Everything +between the braces is taken as hyphenation patterns. Consequently, +<code class="code">{</code> and <code class="code">}</code> are not allowed in patterns. + +</li><li>Similarly, <code class="code">\hyphenation{…}</code> gives a list of hyphenation +exceptions. + +</li><li><code class="code">\endinput</code> is recognized also. + +</li><li>For backward compatibility, if <code class="code">\patterns</code> is missing, the whole +file is treated as a list of hyphenation patterns (except that the +<code class="code">%</code> character is recognized as the start of a comment). +</li></ul> + +<p>The <code class="code">hpfa</code> request appends a file of patterns to the current list. +</p> +<p>The <code class="code">hpfcode</code> request defines mapping values for character codes in +pattern files. It is an older mechanism no longer used by GNU +<code class="code">troff</code>’s own macro files; for its successor, see <code class="code">hcode</code> +below. <code class="code">hpf</code> or <code class="code">hpfa</code> apply the mapping after reading the +patterns but before replacing or appending to the active list of +patterns. Its arguments are pairs of character codes—integers from 0 +to 255. The request maps character code <var class="var">a</var> to +code <var class="var">b</var>, code <var class="var">c</var> to code <var class="var">d</var>, and so on. +Character codes that would otherwise be invalid in GNU <code class="code">troff</code> can +be used. By default, every code maps to itself except those for letters +‘A’ to ‘Z’, which map to those for ‘a’ to ‘z’. +</p> +<a class="index-entry-id" id="index-localization"></a> +<a class="index-entry-id" id="index-troffrc-2"></a> +<a class="index-entry-id" id="index-cs_002etmac"></a> +<a class="index-entry-id" id="index-de_002etmac"></a> +<a class="index-entry-id" id="index-en_002etmac"></a> +<a class="index-entry-id" id="index-fr_002etmac"></a> +<a class="index-entry-id" id="index-it_002etmac"></a> +<a class="index-entry-id" id="index-ja_002etmac"></a> +<a class="index-entry-id" id="index-sv_002etmac"></a> +<a class="index-entry-id" id="index-zh_002etmac"></a> +<p>The set of hyphenation patterns is associated with the language set by +the <code class="code">hla</code> request (see below). The <code class="code">hpf</code> request is usually +invoked by a localization file loaded by the <samp class="file">troffrc</samp> +file.<a class="footnote" id="DOCF61" href="#FOOT61"><sup>61</sup></a> +</p> +<p>A second call to <code class="code">hpf</code> (for the same language) replaces the +hyphenation patterns with the new ones. Invoking <code class="code">hpf</code> or +<code class="code">hpfa</code> causes an error if there is no hyphenation language. If no +<code class="code">hpf</code> request is specified (either in the document, in a file +loaded at startup, or in a macro package), GNU <code class="code">troff</code> won’t +automatically hyphenate at all. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hcode</code></strong> <var class="def-var-arguments">c1 code1 [c2 code2] …</var><a class="copiable-link" href='#index-_002ehcode'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hcode"></a> +<a class="index-entry-id" id="index-hyphenation-code-_0028hcode_0029"></a> +<a class="index-entry-id" id="index-code_002c-hyphenation-_0028hcode_0029"></a> +<p>Set the hyphenation code of character <var class="var">c1</var> to <var class="var">code1</var>, that of +<var class="var">c2</var> to <var class="var">code2</var>, and so on. A hyphenation code must be an +ordinary character (not a special character escape sequence) other than +a digit or a space. The request is ignored if given no arguments. +</p> +<p>For hyphenation to work, hyphenation codes must be set up. At +startup, GNU <code class="code">troff</code> assigns hyphenation codes to the letters +‘<samp class="samp">a</samp>’–‘<samp class="samp">z</samp>’ (mapped to themselves), to the letters +‘<samp class="samp">A</samp>’–‘<samp class="samp">Z</samp>’ (mapped to ‘<samp class="samp">a</samp>’–‘<samp class="samp">z</samp>’), and zero to all other +characters. Normally, hyphenation patterns contain only lowercase +letters which should be applied regardless of case. In other words, +they assume that the words ‘FOO’ and ‘Foo’ should be hyphenated exactly +as ‘foo’ is. The <code class="code">hcode</code> request extends this principle to letters +outside the Unicode basic Latin alphabet; without it, words containing +such letters won’t be hyphenated properly even if the corresponding +hyphenation patterns contain them. +</p> +<p>For example, the following <code class="code">hcode</code> requests are necessary to assign +hyphenation codes to the letters ‘<samp class="samp">ÄäÖöÜüß</samp>’, needed for German. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.hcode ä ä Ä ä +.hcode ö ö Ö ö +.hcode ü ü Ü ü +.hcode ß ß +</pre></div></div> + +<p>Without these assignments, GNU <code class="code">troff</code> treats the German word +‘Kindergärten’<!-- /@w --> (the plural form of ‘kindergarten’) as two words +‘kinderg’<!-- /@w --> and ‘rten’<!-- /@w --> because the hyphenation code of the +umlaut a is zero by default, just like a space. There is a German +hyphenation pattern that covers ‘kinder’<!-- /@w -->, so GNU <code class="code">troff</code> finds +the hyphenation ‘kin-der’. The other two hyphenation points +(‘kin-der-gär-ten’) are missed. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehla"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hla</code></strong> <var class="def-var-arguments">lang</var><a class="copiable-link" href='#index-_002ehla'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hla"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehla_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hla]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehla_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehla-1"></a> +<a class="index-entry-id" id="index-hpf-request_002c-and-hyphenation-language"></a> +<a class="index-entry-id" id="index-hw-request_002c-and-hyphenation-language"></a> +<a class="index-entry-id" id="index-troffrc-3"></a> +<a class="index-entry-id" id="index-troffrc_002dend-1"></a> +<p>Set the hyphenation language to <var class="var">lang</var>. Hyphenation exceptions +specified with the <code class="code">hw</code> request and hyphenation patterns and +exceptions specified with the <code class="code">hpf</code> and <code class="code">hpfa</code> requests are +associated with the hyphenation language. The <code class="code">hla</code> request is +usually invoked by a localization file, which is turn loaded by the +<samp class="file">troffrc</samp> or <samp class="file">troffrc-end</samp> file; see the <code class="code">hpf</code> request +above. +</p> +<a class="index-entry-id" id="index-hyphenation-language-register-_0028_002ehla_0029"></a> +<p>The hyphenation language is available in the read-only string-valued +register ‘<samp class="samp">.hla</samp>’; it is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehlm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hlm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ehlm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hlm"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlm_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehlm-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlc_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehlc"></a> +<a class="index-entry-id" id="index-explicit-hyphen-_0028_005c_0025_0029"></a> +<a class="index-entry-id" id="index-hyphen_002c-explicit-_0028_005c_0025_0029"></a> +<a class="index-entry-id" id="index-consecutive-hyphenated-lines-_0028hlm_0029"></a> +<a class="index-entry-id" id="index-lines_002c-consecutive-hyphenated-_0028hlm_0029"></a> +<a class="index-entry-id" id="index-hyphenated-lines_002c-consecutive-_0028hlm_0029"></a> +<p>Set the maximum quantity of consecutive hyphenated lines to <var class="var">n</var>. If +<var class="var">n</var> is negative, there is no maximum. If omitted, <var class="var">n</var> +is −1. This value is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). Only lines output from a given environment +count toward the maximum associated with that environment. Hyphens +resulting from <code class="code">\%</code> are counted; explicit hyphens are not. +</p> +<a class="index-entry-id" id="index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029"></a> +<a class="index-entry-id" id="index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029"></a> +<p>The <code class="code">.hlm</code> read-only register stores this maximum. The count of +immediately preceding consecutive hyphenated lines is available in the +read-only register <code class="code">.hlc</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehym"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hym</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ehym'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hym"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehym_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hym]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehym_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehym-1"></a> +<a class="index-entry-id" id="index-hyphenation-margin-_0028hym_0029"></a> +<a class="index-entry-id" id="index-margin-for-hyphenation-_0028hym_0029"></a> +<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-margin"></a> +<p>Set the (right) hyphenation margin to <var class="var">length</var>. If the adjustment +mode is not ‘<samp class="samp">b</samp>’ or ‘<samp class="samp">n</samp>’, the line is not hyphenated if it is +shorter than <var class="var">length</var>. Without an argument, the hyphenation margin +is reset to its default value, 0. The default scaling unit is ‘<samp class="samp">m</samp>’. +The hyphenation margin is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>A negative argument resets the hyphenation margin to zero, emitting a +warning in category ‘<samp class="samp">range</samp>’. +</p> +<a class="index-entry-id" id="index-hyphenation-margin-register-_0028_002ehym_0029"></a> +<p>The hyphenation margin is available in the <code class="code">.hym</code> read-only +register. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ehys"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hys</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">hyphenation-space</i></span>]</var><a class="copiable-link" href='#index-_002ehys'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hys"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehys_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hys]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehys_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ehys-1"></a> +<a class="index-entry-id" id="index-hyphenation-space-_0028hys_0029"></a> +<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold"></a> +<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-space"></a> +<p>Suppress hyphenation of the line in adjustment modes ‘<samp class="samp">b</samp>’ or +‘<samp class="samp">n</samp>’ if it can be justified by adding no more than +<var class="var">hyphenation-space</var> extra space to each inter-word space. Without +an argument, the hyphenation space adjustment threshold is set to its +default value, 0. The default scaling unit is ‘<samp class="samp">m</samp>’. The +hyphenation space adjustment threshold is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>A negative argument resets the hyphenation space adjustment threshold to +zero, emitting a warning in category ‘<samp class="samp">range</samp>’. +</p> +<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029"></a> +<p>The hyphenation space adjustment threshold is available in the +<code class="code">.hys</code> read-only register. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Manipulating-Spacing"> +<div class="nav-panel"> +<p> +Next: <a href="#Tabs-and-Fields" accesskey="n" rel="next">Tabs and Fields</a>, Previous: <a href="#Manipulating-Hyphenation" accesskey="p" rel="prev">Manipulating Hyphenation</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Manipulating-Spacing-1">5.11 Manipulating Spacing</h3> +<a class="index-entry-id" id="index-manipulating-spacing"></a> +<a class="index-entry-id" id="index-spacing_002c-manipulating"></a> + +<p>A break causes the formatter to update the vertical drawing position at +which the new text baseline is aligned. You can alter this location. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002esp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sp"></a> +<p>Break and move the next text baseline down by <var class="var">distance</var>, or until +springing a page location trap.<a class="footnote" id="DOCF62" href="#FOOT62"><sup>62</sup></a> +If invoked with the no-break control character, <code class="code">sp</code> moves the +pending output line’s text baseline by <var class="var">distance</var>. A negative +<var class="var">distance</var> will not reduce the position of the text baseline below +zero. Inside a diversion, any <var class="var">distance</var> argument is ignored. The +default scaling unit is ‘<samp class="samp">v</samp>’. If <var class="var">distance</var> is not specified, +‘<samp class="samp">1v</samp>’ is assumed. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.pl 5v \" Set page length to 5 vees. +.de xx +\-\-\- +. br +.. +.wh 0 xx \" Set a trap at the top of the page. +foo on page \n% +.sp 2v +bar on page \n% +.sp 50v \" This will cause a page break. +baz on page \n% +.pl \n(nlu \" Truncate page to current position. + ⇒ --- + ⇒ foo on page 1 + ⇒ + ⇒ + ⇒ bar on page 1 + ⇒ --- + ⇒ baz on page 2 +</pre></div></div> + +<p>You might use the following macros to set the baseline of the next +output text at a given distance from the top or the bottom of the page. +We subtract one line height (<code class="code">\n[.v]</code>) because the <code class="code">|</code> +operator moves to one vee below the page top (recall <a class="ref" href="#Numeric-Expressions">Numeric Expressions</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de y-from-top-down +. sp |\\$1-\\n[.v]u +.. +. +.de y-from-bot-up +. sp |\\n[.p]u-\\$1-\\n[.v]u +.. +</pre></div></div> + +<p>A call to ‘<samp class="samp">.y-from-bot-up 10c</samp>’ means that the next text baseline +will be 10 cm from the bottom edge of the paper. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002els"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ls</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">count</i></span>]</var><a class="copiable-link" href='#index-_002els'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ls"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.L]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eL_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eL"></a> +<a class="index-entry-id" id="index-double_002dspacing-_0028ls_0029"></a> +<p>Set the line spacing; add <var class="var">count</var>−1<!-- /@w --> blank lines after each +line of text. With no argument, GNU <code class="code">troff</code> uses the previous +value before the last <code class="code">ls</code> call. The default is <code class="code">1</code>. +</p> + +<a class="index-entry-id" id="index-line-spacing-register-_0028_002eL_0029"></a> +<p>The read-only register <code class="code">.L</code> contains the current line spacing; it +is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<p>The <code class="code">ls</code> request is a coarse mechanism. See <a class="xref" href="#Changing-the-Type-Size">Changing the Type Size</a>, for the requests <code class="code">vs</code> and <code class="code">pvs</code> as alternatives to +<code class="code">ls</code>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cx_0027spacing_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\x<code class="code">'</code></code><span class="r"><i class="slanted">spacing</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cx_0027spacing_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cx"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ea_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.a]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ea_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ea"></a> +<p>Sometimes, an output line requires additional vertical spacing, for +instance to allow room for a tall construct like an inline equation with +exponents or subscripts (particularly if they are iterated). The +<code class="code">\x</code> escape sequence takes a delimited measurement (like +‘<samp class="samp">\x'3p'</samp>’) to increase the vertical spacing of the pending output +line. The default scaling unit is ‘<samp class="samp">v</samp>’. If the measurement is +positive, extra vertical space is inserted below the current line; a +negative measurement adds space above. If <code class="code">\x</code> is applied to the +pending output line multiple times, the maxima of the positive and +negative adjustments are separately applied. The delimiter need not be +a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. +</p> +<a class="index-entry-id" id="index-extra-post_002dvertical-line-space-register-_0028_002ea_0029"></a> +<p>The <code class="code">.a</code> read-only register contains the extra vertical spacing +<em class="emph">after</em> the text baseline of the most recently emitted output line. +(In other words, it is the largest positive argument to <code class="code">\x</code> +encountered on that line.) This quantity is exposed via a register +because if an output line requires this “extra post-vertical line +spacing”, and the subsequent output line requires “extra pre-vertical +line spacing” (a negative argument to <code class="code">\x</code>), then applying both +can lead to excessive spacing between the output lines. Text that is +piling high on line <var class="var">n</var> might not require (as much) extra +pre-vertical line spacing if line <var class="var">n</var>−1 carries extra +post-vertical line spacing. +</p> +<p>Use of <code class="code">\x</code> can be necessary in combination with the +bracket-building escape sequence <code class="code">\b</code>,<a class="footnote" id="DOCF63" href="#FOOT63"><sup>63</sup></a> as the following example shows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nf +This is a test of \[rs]b (1). +This is a test of \[rs]b (2). +This is a test of \b'xyz'\x'-1m'\x'1m' (3). +This is a test of \[rs]b (4). +This is a test of \[rs]b (5). + ⇒ This is a test of \b (1). + ⇒ This is a test of \b (2). + ⇒ x + ⇒ This is a test of y (3). + ⇒ z + ⇒ This is a test of \b (4). + ⇒ This is a test of \b (5). +</pre></div></div> +</dd></dl> + +<p>Without <code class="code">\x</code>, the backslashes on the lines marked ‘<samp class="samp">(2)</samp>’ and +‘<samp class="samp">(4)</samp>’ would be overprinted. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ens"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ns</code></strong><a class="copiable-link" href='#index-_002ens'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ns"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ers"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rs</code></strong><a class="copiable-link" href='#index-_002ers'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ens_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ns]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ens_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ens-1"></a> +<a class="index-entry-id" id="index-sp-request_002c-and-no_002dspace-mode"></a> +<a class="index-entry-id" id="index-no_002dspace-mode-_0028ns_0029"></a> +<a class="index-entry-id" id="index-mode_002c-no_002dspace-_0028ns_0029"></a> +<a class="index-entry-id" id="index-blank-lines_002c-disabling"></a> +<a class="index-entry-id" id="index-lines_002c-blank_002c-disabling"></a> +<p>Enable <em class="dfn">no-space mode</em>. Vertical spacing, whether by <code class="code">sp</code> +requests or blank input lines, is disabled. The <code class="code">bp</code> request to +advance to the next page is also disabled, unless it is accompanied by a +page number (see <a class="pxref" href="#Page-Control">Page Control</a>). No-space mode ends automatically +when text<a class="footnote" id="DOCF64" href="#FOOT64"><sup>64</sup></a> is formatted for output <a class="footnote" id="DOCF65" href="#FOOT65"><sup>65</sup></a> or the <code class="code">rs</code> request is invoked, which ends +no-space mode. The read-only register <code class="code">.ns</code> interpolates a Boolean +value indicating the enablement of no-space mode. +</p> +<p>A paragraphing macro might ordinarily insert vertical space to separate +paragraphs. A section heading macro could invoke <code class="code">ns</code> to suppress +this spacing for the first paragraph in a section. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Tabs-and-Fields"> +<div class="nav-panel"> +<p> +Next: <a href="#Character-Translations" accesskey="n" rel="next">Character Translations</a>, Previous: <a href="#Manipulating-Spacing" accesskey="p" rel="prev">Manipulating Spacing</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Tabs-and-Fields-1">5.12 Tabs and Fields</h3> +<a class="index-entry-id" id="index-tabs_002c-and-fields"></a> +<a class="index-entry-id" id="index-fields_002c-and-tabs"></a> + +<a class="index-entry-id" id="index-tab-character-encoding"></a> +<p>A tab character (<abbr class="acronym">ISO</abbr> code point 9, <abbr class="acronym">EBCDIC</abbr> +code point 5) causes a horizontal movement to the next tab stop, if +any. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005ct-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\t</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ct-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005ct"></a> +<a class="index-entry-id" id="index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029"></a> +<a class="index-entry-id" id="index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029"></a> +<a class="index-entry-id" id="index-_005ct_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005ct"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ct"></a> +<p>Interpolate a tab in copy mode; see <a class="ref" href="#Copy-Mode">Copy Mode</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eta"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ta</code></strong> <var class="def-var-arguments">[[<span class="r"><i class="slanted">n1</i></span> <span class="r"><i class="slanted">n2</i></span> … <span class="r"><i class="slanted">nn</i></span> ]<code class="t">T</code> <span class="r"><i class="slanted">r1</i></span> <span class="r"><i class="slanted">r2</i></span> … <span class="r"><i class="slanted">rn</i></span>]</var><a class="copiable-link" href='#index-_002eta'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ta"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002etabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.tabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etabs_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002etabs"></a> +<p>Change tab stop positions. This request takes a series of tab +specifiers as arguments (optionally divided into two groups with the +letter ‘<samp class="samp">T</samp>’) that indicate where each tab stop is to be, overriding +any previous settings. The default scaling unit is ‘<samp class="samp">m</samp>’. Invoking +<code class="code">ta</code> without an argument removes all tab stops. +<a class="index-entry-id" id="index-default-tab-stops"></a> +<a class="index-entry-id" id="index-tab-stops_002c-default"></a> +GNU <code class="code">troff</code>’s startup value is ‘<samp class="samp">T 0.5i</samp>’<!-- /@w -->. +</p> +<p>Tab stops can be specified absolutely—as distances from the left +margin. The following example sets six tab stops, one every inch. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ta 1i 2i 3i 4i 5i 6i +</pre></div></div> + +<p>Tab stops can also be specified using a leading ‘<samp class="samp">+</samp>’, which means +that the specified tab stop is set relative to the previous tab stop. +For example, the following is equivalent to the previous example. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ta 1i +1i +1i +1i +1i +1i +</pre></div></div> + +<p>GNU <code class="code">troff</code> supports an extended syntax to specify repeating tab +stops. These stops appear after a ‘<samp class="samp">T</samp>’ argument. Their values are +always taken as distances relative to the previous tab stop. This is +the idiomatic way to specify tab stops at equal intervals in +<code class="code">groff</code>. The following is, yet again, the same as the previous +examples. It does more, in fact, since it defines an infinite number of +tab stops at one-inch intervals. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ta T 1i +</pre></div></div> + +<p>Now we are ready to interpret the full syntax given above. The +<code class="code">ta</code> request sets tabs at positions <var class="var">n1</var>, <var class="var">n2</var>, …, +<var class="var">nn</var>, then at <var class="var">nn</var>+<var class="var">r1</var>, <var class="var">nn</var>+<var class="var">r2</var>, …, +<var class="var">nn</var>+<var class="var">rn</var>, then at <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r1</var>, +<var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r2</var>, …, <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">rn</var>, and so +on. +</p> +<p>For example, ‘<samp class="samp">4c +6c T 3c 5c 2c</samp>’ is equivalent to ‘<samp class="samp">4c 10c 13c +18c 20c 23c 28c 30c …</samp>’. +</p> +<p>Text written to a tab column (i.e., between two tab stops, or between a +tab stop and an output line boundary) may be aligned to the right or +left, or centered in the column. This alignment is determined by +appending ‘<samp class="samp">R</samp>’, ‘<samp class="samp">L</samp>’, or ‘<samp class="samp">C</samp>’ to the tab specifier. The +default is ‘<samp class="samp">L</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ta 1i 2iC 3iR +</pre></div></div> + +<p>The beginning of an output line is not a tab stop; the text that begins +an output line is placed according to the configured alignment and +indentation; see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a> and <a class="ref" href="#Line-Layout">Line Layout</a>. +</p> +<p>A tab stop is converted into a non-breakable horizontal movement that +cannot be adjusted. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 2i +.ds foo a\tb\tc +.ta T 1i +\*[foo] + error→ warning: cannot break line + ⇒ a b c +</pre></div></div> + +<p>The above creates a single output line that is a bit longer than two +inches (we use a string to show exactly where the tab stops are). +Now consider the following. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 2i +.ds bar a\tb c\td +.ta T 1i +\*[bar] + error→ warning: cannot adjust line + ⇒ a b + ⇒ c d +</pre></div></div> + +<p>GNU <code class="code">troff</code> first converts the line’s tab stops into unbreakable +horizontal movements, then breaks after ‘<samp class="samp">b</samp>’. This usually isn’t +what you want. +</p> +<p>Superfluous tab characters—those that do not correspond to a tab +stop—are ignored except for the first, which delimits the characters +belonging to the last tab stop for right-alignment or centering. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds Z foo\tbar\tbaz +.ds ZZ foo\tbar\tbazqux +.ds ZZZ foo\tbar\tbaz\tqux +.ta 2i 4iR +\*[Z] +.br +\*[ZZ] +.br +\*[ZZZ] +.br + ⇒ foo bar baz + ⇒ foo bar bazqux + ⇒ foo bar bazqux +</pre></div></div> + +<p>The first line right-aligns “baz” within the second tab stop. The +second line right-aligns “bazqux” within it. The third line +right-aligns only “baz” because of the additional tab character, which +marks the end of the text occupying the last tab stop defined. +</p> +<p>Tab stops are associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<a class="index-entry-id" id="index-tab-stop-settings-register-_0028_002etabs_0029"></a> +<a class="index-entry-id" id="index-_002eS-register_002c-Plan-9-alias-for-_002etabs"></a> +<a class="index-entry-id" id="index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"></a> +<p>The read-only register <code class="code">.tabs</code> contains a string +representation of the current tab settings suitable for use as an +argument to the <code class="code">ta</code> request.<a class="footnote" id="DOCF66" href="#FOOT66"><sup>66</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds tab-string \n[.tabs] +\*[tab-string] + ⇒ T120u +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002etc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tc"></a> +<a class="index-entry-id" id="index-tab-repetition-character-_0028tc_0029"></a> +<a class="index-entry-id" id="index-character_002c-tab-repetition-_0028tc_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-tab-repetition-_0028tc_0029"></a> +<p>Set the tab repetition character to the ordinary or special character +<var class="var">c</var>; normally, no glyph is written when moving to a tab stop (and +some output devices may output space characters to achieve this motion). +A <em class="dfn">tab repetition character</em> causes the formatter to write as many +instances of <var class="var">c</var> as are necessary to occupy the interval from the +horizontal drawing position to the next tab stop. With no argument, GNU +<code class="code">troff</code> reverts to the default behavior. The tab repetition +character is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +Only a single character of <var class="var">c</var> is recognized; any excess is ignored. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elinetabs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.linetabs</code></strong> <var class="def-var-arguments">n</var><a class="copiable-link" href='#index-_002elinetabs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-linetabs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elinetabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.linetabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elinetabs_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002elinetabs-1"></a> +<a class="index-entry-id" id="index-tab_002c-line_002dtabs-mode"></a> +<a class="index-entry-id" id="index-line_002dtabs-mode"></a> +<a class="index-entry-id" id="index-mode_002c-line_002dtabs"></a> +<p>If <var class="var">n</var> is missing or non-zero, activate <em class="dfn">line-tabs</em>; deactivate +it otherwise (the default). Active line-tabs cause GNU <code class="code">troff</code> +to compute tab distances relative to the start of the output line +instead of the input line. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de Tabs +. ds x a\t\c +. ds y b\t\c +. ds z c +. ta 1i 3i +\\*x +\\*y +\\*z +.. +.Tabs +.br +.linetabs +.Tabs + ⇒ a b c + ⇒ a b c +</pre></div></div> + +<p>Line-tabs activation is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). The read-only register <code class="code">.linetabs</code> +interpolates 1 if line-tabs are active, and 0 otherwise. +</p></dd></dl> + + + +<ul class="mini-toc"> +<li><a href="#Leaders" accesskey="1">Leaders</a></li> +<li><a href="#Fields" accesskey="2">Fields</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Leaders"> +<div class="nav-panel"> +<p> +Next: <a href="#Fields" accesskey="n" rel="next">Fields</a>, Previous: <a href="#Tabs-and-Fields" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="#Tabs-and-Fields" accesskey="u" rel="up">Tabs and Fields</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Leaders-1">5.12.1 Leaders</h4> +<a class="index-entry-id" id="index-leaders"></a> + +<p>Sometimes it is desirable to fill a tab stop with a given glyph, +but also use tab stops normally on the same output line. An example is +a table of contents entry that uses dots to bridge the entry name with +its page number, which is itself aligned between tab stops. The +<code class="code">roff</code> language provides <em class="dfn">leaders</em> for this +purpose.<a class="footnote" id="DOCF67" href="#FOOT67"><sup>67</sup></a> +</p> +<a class="index-entry-id" id="index-leader-character-1"></a> +<p>A leader character (<abbr class="acronym">ISO</abbr> and <abbr class="acronym">EBCDIC</abbr> code +point 1, also known as <abbr class="acronym">SOH</abbr> or “start of heading”), +behaves similarly to a tab character: it moves to the next tab stop. +The difference is that for this movement, the default fill character is +a period ‘<samp class="samp">.</samp>’. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005ca-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\a</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ca-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005ca"></a> +<a class="index-entry-id" id="index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029"></a> +<a class="index-entry-id" id="index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029"></a> +<a class="index-entry-id" id="index-_005ca_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005ca"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ca"></a> +<p>Interpolate a leader in copy mode; see <a class="ref" href="#Copy-Mode">Copy Mode</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002elc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lc"></a> +<a class="index-entry-id" id="index-leader-repetition-character-_0028lc_0029"></a> +<a class="index-entry-id" id="index-character_002c-leader-repetition-_0028lc_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-leader-repetition-_0028lc_0029"></a> +<p>Set the leader repetition character to the ordinary or special character +<var class="var">c</var>. Recall <a class="ref" href="#Tabs-and-Leaders">Tabs and Leaders</a>: when encountering a leader +character in the input, the formatter writes as many dots ‘<samp class="samp">.</samp>’ as +are necessary until +reaching the next tab stop; this is the <em class="dfn">leader definition +character</em>. Omitting <var class="var">c</var> unsets the leader +character. With no argument, GNU <code class="code">troff</code> treats leaders the same +as tabs. The leader repetition character is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). Only a single <var class="var">c</var> is +recognized; any excess is ignored. +</p></dd></dl> + +<a class="index-entry-id" id="index-table-of-contents-1"></a> +<a class="index-entry-id" id="index-contents_002c-table-of-1"></a> +<p>A table of contents, for example, may define tab stops after a section +number, a title, and a gap to be filled with leader dots. The page +number follows the leader, after a right-aligned final tab stop wide +enough to house the largest page number occurring in the document. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds entry1 19.\tThe Prophet\a\t98 +.ds entry2 20.\tAll Astir\a\t101 +.ta .5i 4.5i +.5iR +.nf +\*[entry1] +\*[entry2] + ⇒ 19. The Prophet............................. 98 + ⇒ 20. All Astir............................... 101 +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="Fields"> +<div class="nav-panel"> +<p> +Previous: <a href="#Leaders" accesskey="p" rel="prev">Leaders</a>, Up: <a href="#Tabs-and-Fields" accesskey="u" rel="up">Tabs and Fields</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Fields-1">5.12.2 Fields</h4> +<a class="index-entry-id" id="index-fields"></a> + +<a class="index-entry-id" id="index-field-delimiting-character-_0028fc_0029"></a> +<a class="index-entry-id" id="index-delimiting-character_002c-for-fields-_0028fc_0029"></a> +<a class="index-entry-id" id="index-character_002c-field-delimiting-_0028fc_0029"></a> +<a class="index-entry-id" id="index-field-padding-character-_0028fc_0029"></a> +<a class="index-entry-id" id="index-padding-character_002c-for-fields-_0028fc_0029"></a> +<a class="index-entry-id" id="index-character_002c-field-padding-_0028fc_0029"></a> +<p><em class="dfn">Fields</em> are a more general way of laying out tabular data. A field +is defined as the data between a pair of <em class="dfn">delimiting characters</em>. +It contains substrings that are separated by <em class="dfn">padding characters</em>. +The width of a field is the distance on the <em class="emph">input</em> line from the +position where the field starts to the next tab stop. A padding +character inserts an adjustable space similar to TeX’s <code class="code">\hss</code> +command (thus it can even be negative) to make the sum of all substring +lengths plus the adjustable space equal to the field width. If more +than one padding character is inserted, the available space is evenly +distributed among them. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">delim-char</i></span> [<span class="r"><i class="slanted">padding-char</i></span>]]</var><a class="copiable-link" href='#index-_002efc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fc"></a> +<p>Define a delimiting and a padding character for fields. If the latter +is missing, the padding character defaults to a space character. If +there is no argument at all, the field mechanism is disabled (which is +the default). In contrast to, e.g., the tab repetition character, +delimiting and padding characters are <em class="emph">not</em> associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.fc # ^ +.ta T 3i +#foo^bar^smurf# +.br +#foo^^bar^smurf# + ⇒ foo bar smurf + ⇒ foo bar smurf +</pre></div></div> +</dd></dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Character-Translations"> +<div class="nav-panel"> +<p> +Next: <a href="#troff-and-nroff-Modes" accesskey="n" rel="next"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Previous: <a href="#Tabs-and-Fields" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Character-Translations-1">5.13 Character Translations</h3> +<a class="index-entry-id" id="index-character-translations"></a> +<a class="index-entry-id" id="index-translations-of-characters"></a> + +<p>A <em class="dfn">translation</em> is a mapping of an input character to an output +glyph. The mapping occurs at output time, i.e., the input character +gets assigned the metric information of the mapped output character +right before input tokens are converted to nodes (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>, for more on this process). +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tr</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>…</var><a class="copiable-link" href='#index-_002etr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tr"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002etrin"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trin</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>…</var><a class="copiable-link" href='#index-_002etrin'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-trin"></a> +<p>Translate character <var class="var">a</var> to glyph <var class="var">b</var>, character <var class="var">c</var> to +glyph <var class="var">d</var>, and so on. If there is an odd number of characters +in the argument, the last one is translated to a fixed-width space (the +same one obtained by the <code class="code">\<kbd class="key">SP</kbd></code> escape sequence). +</p> +<p>The <code class="code">trin</code> request is identical to <code class="code">tr</code>, but when you unformat +a diversion with <code class="code">asciify</code> it ignores the translation. +See <a class="xref" href="#Diversions">Diversions</a>, for details about the <code class="code">asciify</code> request. +</p> +<p>Some notes: +</p> +<ul class="itemize mark-bullet"> +<li><a class="index-entry-id" id="index-_005c_0028_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_005b_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_0027_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_0060_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_002d_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_005f_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005cC_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005cN_002c-and-translations"></a> +<a class="index-entry-id" id="index-char-request_002c-and-translations"></a> +<a class="index-entry-id" id="index-special-characters-1"></a> +<a class="index-entry-id" id="index-character_002c-special"></a> +<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029"></a> +Special characters (<code class="code">\(<var class="var">xx</var></code>, <code class="code">\[<var class="var">xxx</var>]</code>, +<code class="code">\C'<var class="var">xxx</var>'</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>), +glyphs defined with the <code class="code">char</code> request, and numbered glyphs +(<code class="code">\N'<var class="var">xxx</var>'</code>) can be translated also. + +</li><li><a class="index-entry-id" id="index-_005ce_002c-and-translations"></a> +The <code class="code">\e</code> escape can be translated also. + +</li><li><a class="index-entry-id" id="index-_005c_0025_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005c_007e_002c-and-translations"></a> +Characters can be mapped onto the <code class="code">\%</code> and <code class="code">\~</code> escape +sequences (but <code class="code">\%</code> and <code class="code">\~</code> can’t be mapped onto another +glyph). + +</li><li><a class="index-entry-id" id="index-backspace-character_002c-and-translations"></a> +<a class="index-entry-id" id="index-character_002c-backspace_002c-and-translations"></a> +<a class="index-entry-id" id="index-leader-character_002c-and-translations"></a> +<a class="index-entry-id" id="index-character_002c-leader_002c-and-translations"></a> +<a class="index-entry-id" id="index-newline-character_002c-and-translations"></a> +<a class="index-entry-id" id="index-character_002c-newline_002c-and-translations"></a> +<a class="index-entry-id" id="index-tab-character_002c-and-translations"></a> +<a class="index-entry-id" id="index-character_002c-tab_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005ca_002c-and-translations"></a> +<a class="index-entry-id" id="index-_005ct_002c-and-translations"></a> +The following characters can’t be translated: space (with one exception, +see below), backspace, newline, leader (and <code class="code">\a</code>), tab (and +<code class="code">\t</code>). + +</li><li><a class="index-entry-id" id="index-shc-request_002c-and-translations"></a> +Translations are not considered for finding the soft hyphen character +set with the <code class="code">shc</code> request. + +</li><li><a class="index-entry-id" id="index-_005c_0026_002c-and-translations"></a> +The pair ‘<samp class="samp"><var class="var">c</var>\&</samp>’ (an arbitrary character <var class="var">c</var> followed +by the dummy character) maps this character to “nothing”. + +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr a\& +foo bar + ⇒ foo br +</pre></div></div> + +<p>Even the space character can be mapped to the dummy character. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr aa \& +foo bar + ⇒ foobar +</pre></div></div> + +<p>As shown in the example, the space character can’t be the first +character/glyph pair as an argument of <code class="code">tr</code>. Additionally, it is +not possible to map the space character to any other glyph; requests +like ‘<samp class="samp">.tr aa x</samp>’<!-- /@w --> undo ‘<samp class="samp">.tr aa \&</samp>’<!-- /@w --> instead. +</p> +<p>If justification is active, lines are justified in spite of the ‘empty’ +space character (but there is no minimal distance, i.e., the space +character, between words). +</p> +</li><li>After an output glyph has been constructed (this happens at the moment +immediately before the glyph is appended to an output glyph list, either +by direct output, in a macro, diversion, or string), it is no longer +affected by <code class="code">tr</code>. + +</li><li>Translating character to glyphs where one of them or both are undefined +is possible also; <code class="code">tr</code> does not check whether the elements of its +argument exist. + +<p>See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>. +</p> +</li><li>Without an argument, the <code class="code">tr</code> request is ignored. +</li></ul> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etrnt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trnt</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>…</var><a class="copiable-link" href='#index-_002etrnt'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-trnt"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-and-trnt"></a> +<p><code class="code">trnt</code> is the same as the <code class="code">tr</code> request except that the +translations do not apply to text that is transparently throughput into +a diversion with <code class="code">\!</code>. See <a class="xref" href="#Diversions">Diversions</a>. +</p> +<p>For example, +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr ab +.di x +\!.tm a +.di +.x +</pre></div></div> + +<p>prints ‘<samp class="samp">b</samp>’ to the standard error stream; if <code class="code">trnt</code> is used +instead of <code class="code">tr</code> it prints ‘<samp class="samp">a</samp>’. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="troff-and-nroff-Modes"> +<div class="nav-panel"> +<p> +Next: <a href="#Line-Layout" accesskey="n" rel="next">Line Layout</a>, Previous: <a href="#Character-Translations" accesskey="p" rel="prev">Character Translations</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="troff-and-nroff-Modes-1">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</h3> +<a class="index-entry-id" id="index-troff-mode"></a> +<a class="index-entry-id" id="index-mode_002c-troff"></a> +<a class="index-entry-id" id="index-nroff-mode"></a> +<a class="index-entry-id" id="index-mode_002c-nroff"></a> + +<p>Historically, <code class="code">nroff</code> and <code class="code">troff</code> were two separate programs; +the former for terminal output, the latter for typesetters. GNU +<code class="code">troff</code> merges both functions into one executable<a class="footnote" id="DOCF68" href="#FOOT68"><sup>68</sup></a> that sends its output to a +device driver (<code class="code">grotty</code> for terminal devices, <code class="code">grops</code> for +PostScript, and so on) which interprets this intermediate output format. +When discussing <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, it makes sense to talk +about <em class="dfn"><code class="code">nroff</code> mode</em> and <em class="dfn"><code class="code">troff</code> mode</em> since the +differences are hard-coded. GNU <code class="code">troff</code> takes information from +device and font description files without handling requests specially if +a terminal output device is used, so such a strong distinction is +unnecessary. +</p> +<p>Usually, a macro package can be used with all output devices. +Nevertheless, it is sometimes necessary to make a distinction between +terminal and non-terminal devices: GNU <code class="code">troff</code> provides two +built-in conditions ‘<samp class="samp">n</samp>’ and ‘<samp class="samp">t</samp>’ for the <code class="code">if</code>, <code class="code">ie</code>, +and <code class="code">while</code> requests to decide whether GNU <code class="code">troff</code> shall +behave like <code class="code">nroff</code> or like <code class="code">troff</code>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.troff</code></strong><a class="copiable-link" href='#index-_002etroff'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-troff"></a> +<a class="index-entry-id" id="index-troffrc-4"></a> +<a class="index-entry-id" id="index-troffrc_002dend-2"></a> +<p>Make the ‘<samp class="samp">t</samp>’ built-in condition true (and the ‘<samp class="samp">n</samp>’ built-in +condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional +requests. This is the default if GNU <code class="code">troff</code> (<em class="emph">not</em> +<code class="code">groff</code>) is started with the <samp class="option">-R</samp> switch to avoid loading of +the startup files <samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp>. Without +<samp class="option">-R</samp>, GNU <code class="code">troff</code> stays in <code class="code">troff</code> mode if the output +device is not a terminal (e.g., ‘ps’). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nroff</code></strong><a class="copiable-link" href='#index-_002enroff'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nroff"></a> +<a class="index-entry-id" id="index-tty_002etmac"></a> +<p>Make the ‘<samp class="samp">n</samp>’ built-in condition true (and the ‘<samp class="samp">t</samp>’ built-in +condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional +requests. This is the default if GNU <code class="code">troff</code> uses a terminal +output device; the code for switching to <code class="code">nroff</code> mode is in the +file <samp class="file">tty.tmac</samp>, which is loaded by the startup file +<code class="code">troffrc</code>. +</p></dd></dl> + +<p>See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>, for more details on built-in conditions. +</p> + + +<hr> +</div> +<div class="section-level-extent" id="Line-Layout"> +<div class="nav-panel"> +<p> +Next: <a href="#Line-Continuation" accesskey="n" rel="next">Line Continuation</a>, Previous: <a href="#troff-and-nroff-Modes" accesskey="p" rel="prev"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Line-Layout-1">5.15 Line Layout</h3> +<a class="index-entry-id" id="index-line-layout"></a> +<a class="index-entry-id" id="index-layout_002c-line"></a> + +<a class="index-entry-id" id="index-dimensions_002c-line"></a> +<a class="index-entry-id" id="index-line-dimensions"></a> +<p>The following drawing shows the dimensions that <code class="code">gtroff</code> uses for +placing a line of output onto the page. They are labeled with the +request that manipulates each dimension. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> -->| in |<-- + |<-----------ll------------>| + +----+----+----------------------+----+ + | : : : | + +----+----+----------------------+----+ +-->| po |<-- + |<--------paper width---------------->| +</pre></div></div> + +<p>These dimensions are: +</p> +<dl class="ftable"> +<dt id='index-po'><span><code class="code">po</code><a class="copiable-link" href='#index-po'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-left-margin-_0028po_0029"></a> +<a class="index-entry-id" id="index-margin_002c-left-_0028po_0029"></a> +<a class="index-entry-id" id="index-page-offset-_0028po_0029"></a> +<a class="index-entry-id" id="index-offset_002c-page-_0028po_0029"></a> +<p><em class="dfn">Page offset</em>—this is the leftmost position of text on the final +output, defining the <em class="dfn">left margin</em>. +</p> +</dd> +<dt id='index-in'><span><code class="code">in</code><a class="copiable-link" href='#index-in'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-indentation-_0028in_0029"></a> +<a class="index-entry-id" id="index-line-indentation-_0028in_0029"></a> +<p><em class="dfn">Indentation</em>—this is the distance from the left margin where +text is printed. +</p> +</dd> +<dt id='index-ll'><span><code class="code">ll</code><a class="copiable-link" href='#index-ll'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-line-length-_0028ll_0029"></a> +<a class="index-entry-id" id="index-length-of-line-_0028ll_0029"></a> +<p><em class="dfn">Line length</em>—this is the distance from the left margin to right +margin. +</p></dd> +</dl> + +<a class="index-entry-id" id="index-margin_002c-right"></a> +<a class="index-entry-id" id="index-right-margin"></a> +<p>The right margin is not explicitly configured; the combination of page +offset and line length provides the information necessary to derive it. +</p> +<p>A simple demonstration: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 3i +This is text without indentation. +The line length has been set to 3\~inches. +.in +.5i +.ll -.5i +Now the left and right margins are both increased. +.in +.ll +Calling .in and .ll without parameters restores +the previous values. +</pre></div></div> + +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ This is text without indenta- + ⇒ tion. The line length has + ⇒ been set to 3 inches. + ⇒ Now the left and + ⇒ right margins are + ⇒ both increased. + ⇒ Calling .in and .ll without + ⇒ parameters restores the previ- + ⇒ ous values. +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002epo'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-po-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002epo-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002epo-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eo_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.o]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eo_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eo"></a> +<a class="index-entry-id" id="index-tty_002etmac-1"></a> +<p>Set page offset to <var class="var">offset</var> (or increment or decrement its current +value by <var class="var">offset</var>). If invoked without an argument, the page offset +is restored to the value before the previous <code class="code">po</code> request. +This request does not cause a break; the page offset in effect when an +output line is broken prevails (see <a class="pxref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>). The initial value is 1<span class="dmn">i</span> and the default scaling +unit is ‘<samp class="samp">m</samp>’. On terminal devices, the page offset is set to zero +by a driver-specific macro file, <samp class="file">tty.tmac</samp>. The current page +offset can be found in the read-only register ‘<samp class="samp">.o</samp>’. +<a class="index-entry-id" id="index-CSTR-_002354-errata-1"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-po-request"></a> +This request is incorrectly documented in the <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> manual as using a default scaling unit of ‘<samp class="samp">v</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.po 3i +\n[.o] + ⇒ 720 +.po -1i +\n[.o] + ⇒ 480 +.po +\n[.o] + ⇒ 720 +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ein"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002ein'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-in-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ein-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002ein-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ei_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.i]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ei_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ei"></a> +<p>Set indentation to <var class="var">indent</var> (or increment or decrement the current +value by <var class="var">indent</var>). This request causes a break. Initially, there +is no indentation. +</p> +<p>If <code class="code">in</code> is called without an argument, the indentation is reset to +the previous value before the last call to <code class="code">in</code>. The default +scaling unit is ‘<samp class="samp">m</samp>’. +</p> +<p>If a negative indentation value is specified (which is not allowed), +<code class="code">gtroff</code> emits a warning in category ‘<samp class="samp">range</samp>’ and sets the +indentation to zero. +</p> +<p>The effect of <code class="code">in</code> is delayed until a partially collected line (if +it exists) is output. A temporary indentation value is reset to zero +also. +</p> +<p>The current indentation (as set by <code class="code">in</code>) can be found in the +read-only register ‘<samp class="samp">.i</samp>’. The indentation is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eti"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments">offset</var><a class="copiable-link" href='#index-_002eti'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ti"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eti-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002eti-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ein_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.in]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ein_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ein-3"></a> +<p>Temporarily indent the next output line by <var class="var">offset</var>. If an +increment or decrement value is specified, adjust the temporary +indentation relative to the value set by the <code class="code">in</code> request. +</p> +<p>This request causes a break; its value is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). The default scaling unit is +‘<samp class="samp">m</samp>’. A call of <code class="code">ti</code> without an argument is ignored. +</p> +<p>If the total indentation value is negative (which is not allowed), +<code class="code">gtroff</code> emits a warning in category ‘<samp class="samp">range</samp>’ and sets the +temporary indentation to zero. ‘Total indentation’ is either +<var class="var">offset</var> if specified as an absolute value, or the temporary plus +normal indentation, if <var class="var">offset</var> is given as a relative value. +</p> +<p>The effect of <code class="code">ti</code> is delayed until a partially collected line (if +it exists) is output. +</p> +<p>The read-only register <code class="code">.in</code> is the indentation that applies to the +current output line. +</p> +<p>The difference between <code class="code">.i</code> and <code class="code">.in</code> is that the latter takes +into account whether a partially collected line still uses the old +indentation value or a temporary indentation value is active. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ell"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ell'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ll-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ell-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002ell-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002el_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.l]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002el_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002el"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ell_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ll]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ell_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ell-3"></a> +<p>Set the line length to <var class="var">length</var> (or increment or decrement the +current value by <var class="var">length</var>). Initially, the line length is set to +6.5<span class="dmn">i</span>. The effect of <code class="code">ll</code> is delayed until a partially +collected line (if it exists) is output. The default scaling unit is +‘<samp class="samp">m</samp>’. +</p> +<p>If <code class="code">ll</code> is called without an argument, the line length is reset to +the previous value before the last call to <code class="code">ll</code>. If a negative +line length is specified (which is not allowed), <code class="code">gtroff</code> emits a +warning in category ‘<samp class="samp">range</samp>’ and sets the line length to zero. The +line length is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<a class="index-entry-id" id="index-line-length-register-_0028_002el_0029"></a> +<p>The current line length (as set by <code class="code">ll</code>) can be found in the +read-only register ‘<samp class="samp">.l</samp>’. The read-only register <code class="code">.ll</code> is the +line length that applies to the current output line. +</p> +<p>Similar to <code class="code">.i</code> and <code class="code">.in</code>, the difference between <code class="code">.l</code> +and <code class="code">.ll</code> is that the latter takes into account whether a partially +collected line still uses the old line length value. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Line-Continuation"> +<div class="nav-panel"> +<p> +Next: <a href="#Page-Layout" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="#Line-Layout" accesskey="p" rel="prev">Line Layout</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Line-Continuation-1">5.16 Line Continuation</h3> +<a class="index-entry-id" id="index-line-control"></a> +<a class="index-entry-id" id="index-control_002c-line"></a> + +<p>When filling is enabled, input and output line breaks generally do not +correspond. The <code class="code">roff</code> language therefore distinguishes input and +output line continuation. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cRET-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">RET</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cRET-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cRET"></a> +<a class="index-entry-id" id="index-input-line-continuation-_0028_005cRET_0029"></a> +<a class="index-entry-id" id="index-line_002c-input_002c-continuation-_0028_005cRET_0029"></a> +<a class="index-entry-id" id="index-continuation_002c-input-line-_0028_005cRET_0029"></a> +<a class="index-entry-id" id="index-_005cnewline"></a> +<p><code class="code">\<kbd class="key">RET</kbd></code> (a backslash immediately followed by a newline) +suppresses the effects of that newline in the input. The next input +line thus retains the classification of its predecessor as a control or +text line. <code class="code">\<kbd class="key">RET</kbd></code> is useful for managing line lengths in the +input during document maintenance; you can break an input line in the +middle of a request invocation, macro call, or escape sequence. Input +line continuation is invisible to the formatter, with two exceptions: +the <code class="code">|</code> operator recognizes the new input line +(see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>), and the input line counter register +<code class="code">.c</code> is incremented. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 50n +.de I +. ft I +. nop \\$* +. ft +.. +Our film class watched +.I The Effect of Gamma Rays on Man-in-the-Moon +Marigolds. \" whoops, the input line wrapped +.br +.I My own opus begins on line \n[.c] \ +and ends on line \n[.c]. +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ Our film class watched <i class="i">The Effect of Gamma Rays on</i> + ⇒ <i class="i">Man-in-the-Moon</i> Marigolds. + ⇒ <i class="i">My own opus begins on line 11 and ends on line 12.</i> +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cc-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\c</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cc-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cc"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eint_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.int]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eint_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eint"></a> +<a class="index-entry-id" id="index-output-line_002c-continuation-_0028_005cc_0029"></a> +<a class="index-entry-id" id="index-line_002c-output_002c-continuation-_0028_005cc_0029"></a> +<a class="index-entry-id" id="index-continuation_002c-output-line-_0028_005cc_0029"></a> +<a class="index-entry-id" id="index-interrupted-line"></a> +<a class="index-entry-id" id="index-line_002c-interrupted"></a> +<a class="index-entry-id" id="index-_005cR_002c-after-_005cc"></a> +<p><code class="code">\c</code> continues an output line. Nothing after it on the input line +is formatted. In contrast to <code class="code">\<kbd class="key">RET</kbd></code>, a line after <code class="code">\c</code> +remains a new input line, so a control character is recognized at its +beginning. The visual results depend on whether filling is enabled; see +<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> +<ul class="itemize mark-bullet"> +<li><a class="index-entry-id" id="index-_005cc_002c-when-filling-enabled"></a> +<a class="index-entry-id" id="index-fill-mode_002c-and-_005cc"></a> +<a class="index-entry-id" id="index-mode_002c-fill_002c-and-_005cc"></a> +If filling is enabled, a word interrupted with <code class="code">\c</code> is continued +with the text on the next input text line, without an intervening space. + +<div class="example"> +<div class="group"><pre class="example-preformatted">This is a te\c +st. + ⇒ This is a test. +</pre></div></div> + +</li><li><a class="index-entry-id" id="index-_005cc_002c-when-filling-disabled"></a> +<a class="index-entry-id" id="index-no_002dfill-mode_002c-and-_005cc"></a> +<a class="index-entry-id" id="index-mode_002c-no_002dfill_002c-and-_005cc"></a> +If filling is disabled, the next input text line after <code class="code">\c</code> is +handled as a continuation of the same input text line. + +<div class="example"> +<div class="group"><pre class="example-preformatted">.nf +This is a \c +test. + ⇒ This is a test. +</pre></div></div> +</li></ul> + +<p>An intervening control line that causes a break overrides <code class="code">\c</code>, +flushing out the pending output line in the usual way. +</p> +<a class="index-entry-id" id="index-interrupted-line-register-_0028_002eint_0029"></a> +<a class="index-entry-id" id="index-continued-output-line-register-_0028_002eint_0029"></a> +<p>The <code class="code">.int</code> register contains a positive value if the last output +line was continued with <code class="code">\c</code>; this datum is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>).<a class="footnote" id="DOCF69" href="#FOOT69"><sup>69</sup></a> +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Page-Layout"> +<div class="nav-panel"> +<p> +Next: <a href="#Page-Control" accesskey="n" rel="next">Page Control</a>, Previous: <a href="#Line-Continuation" accesskey="p" rel="prev">Line Continuation</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Page-Layout-2">5.17 Page Layout</h3> +<a class="index-entry-id" id="index-page-layout"></a> +<a class="index-entry-id" id="index-layout_002c-page"></a> + +<p>The formatter permits configuration of the page length and page number. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002epl'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pl"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002epl-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002epl-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ep_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.p]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ep_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ep"></a> +<a class="index-entry-id" id="index-page-length_002c-configuring-_0028pl_0029"></a> +<a class="index-entry-id" id="index-length-of-the-page_002c-configuring-_0028pl_0029"></a> +<a class="index-entry-id" id="index-configuring-the-page-length-_0028pl_0029"></a> +<a class="index-entry-id" id="index-setting-the-page-length-_0028pl_0029"></a> +<p>Change (increase or decrease) the page length per the numeric expression +<var class="var">length</var>. The default scaling unit is ‘<samp class="samp">v</samp>’. A negative +<var class="var">length</var> is valid, but an uncommon application: it prevents page +location traps from being sprung,<a class="footnote" id="DOCF70" href="#FOOT70"><sup>70</sup></a> and each +output line is placed on a new page. If <var class="var">length</var> is invalid, GNU +<code class="code">troff</code> emits a warning in category ‘<samp class="samp">number</samp>’. If <var class="var">length</var> +is absent or invalid, ‘<samp class="samp">11i</samp>’ is assumed. +</p> +<a class="index-entry-id" id="index-page-length-register-_0028_002ep_0029"></a> +<p>The read-only register ‘<samp class="samp">.p</samp>’ interpolates the current page length. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments">num</var><a class="copiable-link" href='#index-_002epn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002epn-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002epn-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002epn-3"></a> +<a class="index-entry-id" id="index-page-number_002c-configuring-next-_0028pn_0029"></a> +<a class="index-entry-id" id="index-next-page-number_002c-configuring-_0028pn_0029"></a> +<a class="index-entry-id" id="index-number_002c-page_002c-next_002c-configuring-_0028pn_0029"></a> +<p>Change (increase or decrease) the page number of the <em class="emph">next</em> page +per the numeric expression <var class="var">num</var>. If <var class="var">num</var> is invalid, GNU +<code class="code">troff</code> emits a warning in category ‘<samp class="samp">number</samp>’ and ignores the +request. Without an argument, <code class="code">pn</code> is ignored. +</p> +<a class="index-entry-id" id="index-next-page-number-register-_0028_002epn_0029"></a> +<a class="index-entry-id" id="index-page-number_002c-next_002c-register-_0028_002epn_0029"></a> +<p>The read-only register <code class="code">.pn</code> interpolates <var class="var">num</var> if set by +<code class="code">pn</code> on the current page, or the current page number plus 1. +</p></dd></dl> + +<a class="index-entry-id" id="index-headers"></a> +<a class="index-entry-id" id="index-footers"></a> +<a class="index-entry-id" id="index-titles"></a> +<p>The formatter offers special support for typesetting headers and +footers, collectively termed <em class="dfn">titles</em>. Titles have an independent +line length, and their placement on the page is not restricted. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tl</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002etl'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tl"></a> +<a class="index-entry-id" id="index-title-line_002c-formatting-_0028tl_0029"></a> +<a class="index-entry-id" id="index-formatting-a-title-line-_0028tl_0029"></a> +<a class="index-entry-id" id="index-three_002dpart-title-_0028tl_0029"></a> +<a class="index-entry-id" id="index-page-number-character-_0028_0025_0029"></a> +<p>Format an output line as a title consisting of <var class="var">left</var>, <var class="var">center</var>, +and <var class="var">right</var>, each aligned accordingly. The delimiter need not be a +neutral apostrophe: <code class="code">tl</code> accepts the same delimiters as most escape +sequences; see <a class="ref" href="#Delimiters">Delimiters</a>. If not used as the delimiter, any +<em class="dfn">page number character</em> character is replaced with the current page +number; the default is ‘<samp class="samp">%</samp>’; see the the <code class="code">pc</code> request below. +Without an argument, <code class="code">tl</code> is ignored. <code class="code">tl</code> writes the title +line immediately, ignoring any partially collected line. +</p> +<p>It is not an error to omit delimiters after the first. For example, +‘<samp class="samp">.tl /Thesis</samp>’<!-- /@w --> is interpreted as ‘<samp class="samp">.tl /Thesis///</samp>’<!-- /@w -->: it +sets a title line comprising only the left-aligned word ‘<samp class="samp">Thesis</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002elt'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lt"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002elt-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002elt-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elt_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002elt-3"></a> +<a class="index-entry-id" id="index-length-of-title-line_002c-configuring-_0028lt_0029"></a> +<a class="index-entry-id" id="index-title-length_002c-configuring-_0028lt_0029"></a> +<p>Change (increase or decrease) the line length used by titles per the +numeric expression <var class="var">length</var>. The default scaling unit is ‘<samp class="samp">m</samp>’. +If <var class="var">length</var> is negative, GNU emits a warning in category +‘<samp class="samp">range</samp>’ and treats <var class="var">length</var> as ‘<samp class="samp">0</samp>’. If <var class="var">length</var> is +invalid, GNU <code class="code">troff</code> emits a warning in category ‘<samp class="samp">number</samp>’ and +ignores the request. The formatter’s default title length is +‘<samp class="samp">6.5i</samp>’. With no argument, the title length is restored to the +previous value. The title length is is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p> +<a class="index-entry-id" id="index-title-line-length-register-_0028_002elt_0029"></a> +<p>The read-only register ‘<samp class="samp">.lt</samp>’ interpolates the title line length. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002epc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pc"></a> +<a class="index-entry-id" id="index-changing-the-page-number-character-_0028pc_0029"></a> +<a class="index-entry-id" id="index-page-number-character_002c-changing-_0028pc_0029"></a> +<a class="index-entry-id" id="index-_0025-1"></a> +<p>Set the page number character to <var class="var">char</var>. With no argument, the page +number character is disabled. <code class="code">pc</code> does not affect the +register <code class="code">%</code>. +</p></dd></dl> + +<p>The following example exercises title features. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.lt 50n +This is my partially collected +.tl 'Isomers 2023'%'Dextrose Edition' +line. + ⇒ Isomers 2023 1 Dextrose Edition + ⇒ This is my partially collected line. +</pre></div></div> + +<p>We most often see titles used in page header and footer traps. +See <a class="xref" href="#Traps">Traps</a>. +</p> + +<hr> +</div> +<div class="section-level-extent" id="Page-Control"> +<div class="nav-panel"> +<p> +Next: <a href="#Using-Fonts" accesskey="n" rel="next">Using Fonts</a>, Previous: <a href="#Page-Layout" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Page-Control-1">5.18 Page Control</h3> +<a class="index-entry-id" id="index-page-control"></a> +<a class="index-entry-id" id="index-control_002c-page"></a> + +<a class="index-entry-id" id="index-page-break-1"></a> +<a class="index-entry-id" id="index-break_002c-page-1"></a> +<a class="index-entry-id" id="index-page-ejection-1"></a> +<a class="index-entry-id" id="index-ejection_002c-page-1"></a> +<p>Discretionary page breaks can prevent the unwanted separation of +content. A new page number takes effect during page ejection; see +<a class="ref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002ebp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-bp"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebp-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002ebp-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_0025_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[%]</code></strong><a class="copiable-link" href='#index-_005cn_005b_0025_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_0025-2"></a> +<a class="index-entry-id" id="index-new-page-_0028bp_0029"></a> +<a class="index-entry-id" id="index-page_002c-new-_0028bp_0029"></a> +<p>Break the page and change (increase or decrease) the next page number +per the numeric expression <var class="var">page-number</var>. If <var class="var">page-number</var> is +invalid, GNU <code class="code">troff</code> emits a warning in category ‘<samp class="samp">number</samp>’ and +ignores the argument. This request causes a break. A page break +advances the vertical drawing position to the bottom of the page, +springing traps. See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>. +<a class="index-entry-id" id="index-bp-request_002c-and-top_002dlevel-diversion"></a> +<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-bp"></a> +<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-bp"></a> +<code class="code">bp</code> has effect only if invoked within the top-level +diversion.<a class="footnote" id="DOCF71" href="#FOOT71"><sup>71</sup></a> +<a class="index-entry-id" id="index-CSTR-_002354-errata-2"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-bp-request"></a> +This request is incorrectly documented in the <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> manual as having a default scaling unit of ‘<samp class="samp">v</samp>’. +</p> +<a class="index-entry-id" id="index-page-number-register-_0028_0025_0029"></a> +<a class="index-entry-id" id="index-current-page-number-_0028_0025_0029"></a> +<p>The register <code class="code">%</code> interpolates the current page number. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de BP +' bp \" schedule page break once current line is output +.. +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ene"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ne</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002ene'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ne"></a> +<a class="index-entry-id" id="index-orphan-lines_002c-preventing-with-ne"></a> +<a class="index-entry-id" id="index-conditional-page-break-_0028ne_0029"></a> +<a class="index-entry-id" id="index-page-break_002c-conditional-_0028ne_0029"></a> +<p>Force a page break if insufficient vertical space is available (assert +“needed” space). <code class="code">ne</code> tests the distance to the next page +location trap; see <a class="ref" href="#Page-Location-Traps">Page Location Traps</a>, and breaks the page if +that amount is less than <var class="var">space</var>. The default scaling unit is +‘<samp class="samp">v</samp>’. If <var class="var">space</var> is invalid, GNU <code class="code">troff</code> emits a warning +in category ‘<samp class="samp">number</samp>’ and ignores the argument. If <var class="var">space</var> is +not specified, ‘<samp class="samp">1v</samp>’ is assumed. +</p> +<a class="index-entry-id" id="index-widow"></a> +<p>We can require space for at least the first two output lines of a +paragraph, preventing its first line from being <i class="slanted">widowed</i> at the +page bottom. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ne 2v +Considering how common illness is, +how tremendous the spiritual change that it brings, +how astonishing, +when the lights of health go down, +the undiscovered countries that are then disclosed, +what wastes and deserts of the soul a slight attack +of influenza brings to view, +</pre></div></div> + +<p>This method is reliable only if no output line is pending when <code class="code">ne</code> +is invoked. When macro packages are used, this is often not the case: +their paragraphing macros perform the break. You may need to experiment +with placing the <code class="code">ne</code> after the paragraphing macro, or <code class="code">br</code> +and <code class="code">ne</code> before it. +</p> +<a class="index-entry-id" id="index-orphan"></a> +<a class="index-entry-id" id="index-widow-1"></a> +<p><code class="code">ne</code> is also useful to force grouping of section headings with +their subsequent paragraphs, or tables with their captions and/or +explanations. Macro packages often use <code class="code">ne</code> with diversions to +implement keeps and displays; see <a class="ref" href="#Diversions">Diversions</a>. They may also offer +parameters for widow and orphan management. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esv"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sv</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002esv'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sv"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eos"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.os</code></strong><a class="copiable-link" href='#index-_002eos'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-os"></a> +<a class="index-entry-id" id="index-ne-request_002c-comparison-with-sv"></a> +<p>Require vertical space as <code class="code">ne</code> does, but also <i class="slanted">save</i> it for +later output by the <code class="code">os</code> request. If <var class="var">space</var> is available +before the next page location trap, it is output immediately. Both +requests ignore a partially collected line, taking effect at the next +break. +<a class="index-entry-id" id="index-sv-request_002c-and-no_002dspace-mode"></a> +<a class="index-entry-id" id="index-os-request_002c-and-no_002dspace-mode"></a> +<code class="code">sv</code> and <code class="code">os</code> ignore no-space mode (recall <a class="ref" href="#Manipulating-Spacing">Manipulating Spacing</a>). While the <code class="code">sv</code> request allows negative values for +<var class="var">space</var>, <code class="code">os</code> ignores them. The default scaling unit is +‘<samp class="samp">v</samp>’. If <var class="var">space</var> is not specified, ‘<samp class="samp">1v</samp>’ is assumed. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bnl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[nl]</code></strong><a class="copiable-link" href='#index-_005cn_005bnl_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nl"></a> +<a class="index-entry-id" id="index-vertical-drawing-position-_0028nl_0029"></a> +<a class="index-entry-id" id="index-vertical-position_002c-drawing-_0028nl_0029"></a> +<a class="index-entry-id" id="index-drawing-position_002c-vertical-_0028nl_0029"></a> +<p><code class="code">nl</code> interpolates or sets the vertical drawing position. When the +formatter starts, the first page transition hasn’t happened yet, and +<code class="code">nl</code> is negative. If a header trap has been planted on the page +(typically at vertical position <code class="code">0</code>), you can assign a negative +value to <code class="code">nl</code> to spring it if that page has already started +(see <a class="pxref" href="#Page-Location-Traps">Page Location Traps</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de HD +. sp +. tl ''Goldbach Solution'' +. sp +.. +. +First page. +.bp +.wh 0 HD \" plant header trap at top of page +.nr nl (-1) +Second page. + ⇒ First page. + ⇒ + ⇒ <span class="r"><i class="i">(blank lines elided)</i></span> + ⇒ + ⇒ Goldbach Solution + ⇒ + ⇒ <span class="r"><i class="i">(blank lines elided)</i></span> + ⇒ + ⇒ Second page. +</pre></div></div> + +<p>Without resetting <code class="code">nl</code> to a negative value, the trap just planted +would be active beginning with the <em class="emph">next</em> page, not the current +one. +</p> +<p>See <a class="xref" href="#Diversions">Diversions</a>, for a comparison of <code class="code">nl</code> with the <code class="code">.h</code> and +<code class="code">.d</code> registers. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Using-Fonts"> +<div class="nav-panel"> +<p> +Next: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="n" rel="next">Manipulating Type Size and Vertical Spacing</a>, Previous: <a href="#Page-Control" accesskey="p" rel="prev">Page Control</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Using-Fonts-1">5.19 Using Fonts</h3> +<a class="index-entry-id" id="index-font"></a> + +<a class="index-entry-id" id="index-typeface"></a> +<a class="index-entry-id" id="index-font-family"></a> +<a class="index-entry-id" id="index-font-style"></a> +<a class="index-entry-id" id="index-style_002c-font"></a> +<a class="index-entry-id" id="index-family_002c-font"></a> +<a class="index-entry-id" id="index-text-font"></a> +<a class="index-entry-id" id="index-special-font"></a> +<a class="index-entry-id" id="index-unstyled-font"></a> +<a class="index-entry-id" id="index-font_002c-text"></a> +<a class="index-entry-id" id="index-font_002c-special"></a> +<a class="index-entry-id" id="index-font_002c-unstyled"></a> +<p>In digital typography, a <em class="dfn">font</em> is a collection of characters in a +specific typeface that a device can render as glyphs at a desired +size.<a class="footnote" id="DOCF72" href="#FOOT72"><sup>72</sup></a> A <code class="code">roff</code> formatter can change typefaces at any +point in the text. The basic faces are a set of <em class="dfn">styles</em> combining +upright and slanted shapes with normal and heavy stroke weights: +‘<samp class="samp">R</samp>’, ‘<samp class="samp">I</samp>’, ‘<samp class="samp">B</samp>’, and ‘<samp class="samp">BI</samp>’—these stand for +<i class="slanted">roman</i>, <i class="slanted">italic</i>, <i class="slanted">bold</i>, and +<i class="slanted">bold-italic</i>. For linguistic text, GNU <code class="code">troff</code> groups +typefaces into <em class="dfn">families</em> containing each of these +styles.<a class="footnote" id="DOCF73" href="#FOOT73"><sup>73</sup></a> A <em class="dfn">text font</em> is thus often a family +combined with a style, but it need not be: consider the <code class="code">ps</code> and +<code class="code">pdf</code> devices’ <code class="code">ZCMI</code> (Zapf Chancery Medium italic)—often, +no other style of Zapf Chancery Medium is provided. On typesetting +devices, at least one <em class="dfn">special font</em> is available, comprising +<em class="dfn">unstyled</em> glyphs for mathematical operators and other purposes. +</p> +<a class="index-entry-id" id="index-font-description-file"></a> +<a class="index-entry-id" id="index-description-file_002c-font"></a> +<a class="index-entry-id" id="index-file_002c-font-description"></a> +<a class="index-entry-id" id="index-font-metrics"></a> +<a class="index-entry-id" id="index-metrics_002c-font"></a> +<a class="index-entry-id" id="index-mounting-position"></a> +<a class="index-entry-id" id="index-mounting-position-1"></a> +<a class="index-entry-id" id="index-position_002c-mounting"></a> +<p>Like <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not itself load +or manipulate a digital font file;<a class="footnote" id="DOCF74" href="#FOOT74"><sup>74</sup></a> instead it +works with a <em class="dfn">font description file</em> that characterizes it, +including its glyph repertoire and the <em class="dfn">metrics</em> (dimensions) of +each glyph.<a class="footnote" id="DOCF75" href="#FOOT75"><sup>75</sup></a> This +information permits the formatter to accurately place glyphs with +respect to each other. Before using a font description, the formatter +associates it with a <em class="dfn">mounting position</em>, a place in an ordered list +of available typefaces. +<a class="index-entry-id" id="index-abstract-font-style"></a> +<a class="index-entry-id" id="index-font-style_002c-abstract"></a> +<a class="index-entry-id" id="index-style_002c-font_002c-abstract"></a> +So that a document need not be strongly coupled to a specific font +family, in GNU <code class="code">troff</code> an output device can associate a style in +the abstract sense with a mounting position. Thus the default family +can be combined with a style dynamically, producing a <em class="dfn">resolved font +name</em>. +</p> +<p>Fonts often have trademarked names, and even Free Software fonts can +require renaming upon modification. <code class="code">groff</code> maintains a +convention that a device’s serif font family is given the name ‘<samp class="samp">T</samp>’ +(“Times”), its sans-serif family ‘<samp class="samp">H</samp>’ (“Helvetica”), and its +monospaced family ‘<samp class="samp">C</samp>’ (“Courier”). Historical inertia has driven +<code class="code">groff</code>’s font identifiers to short uppercase abbreviations of font +names, as with ‘<samp class="samp">TR</samp>’, ‘<samp class="samp">TI</samp>’, ‘<samp class="samp">TB</samp>’, ‘<samp class="samp">TBI</samp>’, and a +special font ‘<samp class="samp">S</samp>’. +</p> +<p>The default family used with abstract styles can be changed at any time; +initially, it is ‘<samp class="samp">T</samp>’. Typically, abstract styles are arranged in +the first four mounting positions in the order shown above. The default +mounting position, and therefore style, is always ‘<samp class="samp">1</samp>’ (‘<samp class="samp">R</samp>’). +By issuing appropriate formatter instructions, you can override these +defaults before your document writes its first glyph. +</p> +<a class="index-entry-id" id="index-graphic-renditions"></a> +<a class="index-entry-id" id="index-renditions_002c-graphic"></a> +<a class="index-entry-id" id="index-character-cell-attributes"></a> +<a class="index-entry-id" id="index-attributes_002c-character-cell"></a> +<a class="index-entry-id" id="index-cell_002c-character_002c-attributes"></a> +<p>Terminal output devices cannot change font families and lack special +fonts. They support style changes by overstriking, or by altering +ISO 6429/ECMA-48 <em class="dfn">graphic renditions</em> (character cell +attributes). +</p> + + +<ul class="mini-toc"> +<li><a href="#Selecting-Fonts" accesskey="1">Selecting Fonts</a></li> +<li><a href="#Font-Families" accesskey="2">Font Families</a></li> +<li><a href="#Font-Positions" accesskey="3">Font Positions</a></li> +<li><a href="#Using-Symbols" accesskey="4">Using Symbols</a></li> +<li><a href="#Character-Classes" accesskey="5">Character Classes</a></li> +<li><a href="#Special-Fonts" accesskey="6">Special Fonts</a></li> +<li><a href="#Artificial-Fonts" accesskey="7">Artificial Fonts</a></li> +<li><a href="#Ligatures-and-Kerning" accesskey="8">Ligatures and Kerning</a></li> +<li><a href="#Italic-Corrections" accesskey="9">Italic Corrections</a></li> +<li><a href="#Dummy-Characters">Dummy Characters</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Selecting-Fonts"> +<div class="nav-panel"> +<p> +Next: <a href="#Font-Families" accesskey="n" rel="next">Font Families</a>, Previous: <a href="#Using-Fonts" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Selecting-Fonts-1">5.19.1 Selecting Fonts</h4> +<a class="index-entry-id" id="index-font_002c-selection"></a> + +<p>We use <em class="dfn">font</em> to refer to any of several means of identifying a +font: by mounting position (‘<samp class="samp">3</samp>’), by abstract style (‘<samp class="samp">B</samp>’), or +by its identifier (‘<samp class="samp">TB</samp>’). +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eft"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ft</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">font</i></span>]</var><a class="copiable-link" href='#index-_002eft'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ft"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cff"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\f</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cff'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cf"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cf_0028fn"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\f(</code><span class="r"><i class="slanted">fn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cf_0028fn'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cf_005bfont_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\f[</code><span class="r"><i class="slanted">font</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cf_005bfont_005d'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002efn"></a> +<a class="index-entry-id" id="index-changing-fonts-_0028ft_002c-_005cf_0029"></a> +<a class="index-entry-id" id="index-fonts_002c-changing-_0028ft_002c-_005cf_0029"></a> +<a class="index-entry-id" id="index-sty-request_002c-and-changing-fonts"></a> +<a class="index-entry-id" id="index-fam-request_002c-and-changing-fonts"></a> +<a class="index-entry-id" id="index-_005cF_002c-and-changing-fonts"></a> +<a class="index-entry-id" id="index-styles"></a> +<a class="index-entry-id" id="index-family"></a> +<a class="index-entry-id" id="index-DESC"></a> +<a class="index-entry-id" id="index-selecting-the-previous-font-_0028ft_0029"></a> +<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028ft_0029"></a> +<a class="index-entry-id" id="index-font_002c-previous_002c-slecting-_0028ft_0029"></a> +<p>The <code class="code">ft</code> request selects the typeface <var class="var">font</var>. If the argument +is absent or ‘<samp class="samp">P</samp>’, it selects the previously chosen font. If +<var class="var">font</var> is a non-negative integer, it is interpreted as mounting +position; the font mounted there is selected. If that position refers +to an abstract style, it is combined with the default family (see +<code class="code">fam</code> and <code class="code">\F</code> below) to make a resolved font name. If the +mounting position is not a style and no font is mounted there, GNU +<code class="code">troff</code> emits a warning in category ‘<samp class="samp">font</samp>’ and ignores the +request. +</p> +<p>If <var class="var">font</var> matches a style name, it is combined with the current +family to make a resolved font name. Otherwise, <var class="var">font</var> is assumed +to already be a resolved font name. +</p> +<a class="index-entry-id" id="index-automatic-font-mounting"></a> +<a class="index-entry-id" id="index-font-mounting_002c-automatic"></a> +<a class="index-entry-id" id="index-mounting_002c-font_002c-automatic"></a> +<p>The resolved font name is subject to translation (see request <code class="code">ftr</code> +below). Next, the (possibly translated) font name’s mounting position +is looked up; if not mounted, <var class="var">font</var> is sought on the file system as +a font description file and, if located, automatically mounted at the +next available position (see register <code class="code">.fp</code> below). If the font +was mounted using an identifier different from its font description file +name (see request <code class="code">fp</code> below), that file name is then looked up. +If a font description file for the resolved font name is not found, GNU +<code class="code">troff</code> emits a warning in category ‘<samp class="samp">font</samp>’ and ignores the +request. +</p> +<p>The <code class="code">\f</code> escape sequence is similar, using one-character name (or +mounting position) <var class="var">f</var>, two-character name <var class="var">fn</var>, or a name +<var class="var">font</var> of arbitrary length. +<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a> +<a class="index-entry-id" id="index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a> +‘<samp class="samp">\f[]</samp>’ selects the previous font. The syntax form ‘<samp class="samp">\fP</samp>’ is +supported for backward compatibility, and ‘<samp class="samp">\f[P]</samp>’ for consistency. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">eggs, bacon, +.ft I +spam, +.ft +and sausage. +.br +eggs, bacon, \fIspam,\fP and sausage. + ⇒ eggs, bacon, <i class="slanted">spam,</i> and sausage + ⇒ eggs, bacon, <i class="slanted">spam,</i> and sausage +</pre></div></div> + +<p>The current and previously selected fonts are properties of the +environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>The read-only string-valued register <code class="code">.fn</code> contains the resolved +font name of the selected font. +</p> +<p><code class="code">\f</code> doesn’t produce an input token in GNU <code class="code">troff</code>; it thus +can be used in requests that expect a single-character argument. We can +assign a font to a margin character as follows (see <a class="pxref" href="#Miscellaneous">Miscellaneous</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \f[I]x\f[] +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eftr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ftr</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">g</i></span>]</var><a class="copiable-link" href='#index-_002eftr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ftr"></a> +<a class="index-entry-id" id="index-font-translation-_0028ftr_0029"></a> +<a class="index-entry-id" id="index-ft-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-ul-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-bd-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-_005cf_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-cs-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-tkf-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-special-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-fspecial-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-fp-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-sty-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-if-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-ie-request_002c-and-font-translations"></a> +<a class="index-entry-id" id="index-while-request_002c-and-font-translations"></a> +<p>Translate font <var class="var">f</var> to font <var class="var">g</var>. Whenever a font +named <var class="var">f</var> is referred to in a <code class="code">\f</code> escape sequence, in the +<code class="code">F</code> and <code class="code">S</code> conditional operators, or in the <code class="code">ft</code>, +<code class="code">ul</code>, <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>, <code class="code">special</code>, +<code class="code">fspecial</code>, <code class="code">fp</code>, or <code class="code">sty</code> requests, font <var class="var">g</var> is +used. If <var class="var">g</var> is missing or equal to <var class="var">f</var> the translation is +undone. +</p> +<p>Font translations cannot be chained. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ftr XXX TR +.ftr XXX YYY +.ft XXX + error→ warning: can't find font 'XXX' +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efzoom"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fzoom</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">zoom</i></span>]</var><a class="copiable-link" href='#index-_002efzoom'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fzoom"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ezoom_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.zoom]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ezoom_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ezoom"></a> +<a class="index-entry-id" id="index-magnification-of-a-font-_0028fzoom_0029"></a> +<a class="index-entry-id" id="index-font_002c-magnification-_0028fzoom_0029"></a> +<a class="index-entry-id" id="index-zoom-factor-of-a-font-_0028fzoom_0029"></a> +<a class="index-entry-id" id="index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029"></a> +<a class="index-entry-id" id="index-font_002c-zoom-factor-_0028fzoom_0029"></a> +<a class="index-entry-id" id="index-optical-size-of-a-font"></a> +<a class="index-entry-id" id="index-font_002c-optical-size"></a> +<a class="index-entry-id" id="index-size_002c-optical_002c-of-a-font"></a> +<p>Set magnification of font <var class="var">f</var> to factor <var class="var">zoom</var>, which must +be a non-negative integer multiple of 1/1000th. This request is useful +to adjust the optical size of a font in relation to the others. In the +example below, font <code class="code">CR</code> is magnified by 10% (the zoom factor is +thus 1.1). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.fam P +.fzoom CR 1100 +.ps 12 +Palatino and \f[CR]Courier\f[] +</pre></div></div> + +<p>A missing or zero value of <var class="var">zoom</var> is the same as a value of 1000, +which means no magnification. <var class="var">f</var> must be a resolved font +name, not an abstract style. +</p> +<p>The magnification of a font is completely transparent to GNU +<code class="code">troff</code>; a change of the zoom factor doesn’t cause any effect +except that the dimensions of glyphs, (word) spaces, kerns, etc., of the +affected font are adjusted accordingly. +</p> +<p>The zoom factor of the current font is available in the read-only +register ‘<samp class="samp">.zoom</samp>’, in multiples of 1/1000th. It returns zero if +there is no magnification. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Font-Families"> +<div class="nav-panel"> +<p> +Next: <a href="#Font-Positions" accesskey="n" rel="next">Font Positions</a>, Previous: <a href="#Selecting-Fonts" accesskey="p" rel="prev">Selecting Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Font-Families-1">5.19.2 Font Families</h4> +<a class="index-entry-id" id="index-font-families"></a> +<a class="index-entry-id" id="index-families_002c-font"></a> +<a class="index-entry-id" id="index-font-styles"></a> +<a class="index-entry-id" id="index-styles_002c-font"></a> + +<p>To accommodate the wide variety of fonts available, GNU <code class="code">troff</code> +distinguishes <em class="dfn">font families</em> and <em class="dfn">font styles</em>. A resolved +font name is the catenation of a font family and a style. Selecting an +abstract style causes GNU <code class="code">troff</code> to combine it with the default +font family. +</p> +<p>You can thus compose a document using abstract styles exclusively for +its body or running text, selecting a specific family only for titles or +examples, for instance, and change the default family on the command +line (recall <a class="ref" href="#Groff-Options">Options</a>). +</p> +<p>Fonts for the devices <code class="code">ps</code>, <code class="code">pdf</code>, <code class="code">dvi</code>, <code class="code">lj4</code>, +<code class="code">lbp</code>, and the X11 devices support this mechanism. By default, +GNU <code class="code">troff</code> uses the Times family with the four styles ‘<samp class="samp">R</samp>’, +‘<samp class="samp">I</samp>’, ‘<samp class="samp">B</samp>’, and ‘<samp class="samp">BI</samp>’. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fam</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">family</i></span>]</var><a class="copiable-link" href='#index-_002efam'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fam"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efam_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fam]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efam_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002efam-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cFf"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\F</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cFf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cF"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cF_0028fm"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\F(</code><span class="r"><i class="slanted">fm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cF_0028fm'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cF_005bfamily_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\F[</code><span class="r"><i class="slanted">family</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cF_005bfamily_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-changing-font-family-_0028fam_002c-_005cF_0029"></a> +<a class="index-entry-id" id="index-font-family_002c-changing-_0028fam_002c-_005cF_0029"></a> +<p>Set the default font family, used in combination with abstract styles to +construct a resolved font name, to <var class="var">family</var> (one-character +name <var class="var">f</var>, two-character name <var class="var">fm</var>). If no argument is +given, GNU <code class="code">troff</code> selects the previous font family; if there none, +is it falls back to the device’s default<a class="footnote" id="DOCF76" href="#FOOT76"><sup>76</sup></a> or its own (‘<samp class="samp">T</samp>’). +</p> +<p>The <code class="code">\F</code> escape sequence works similarly. In disanalogy to +<code class="code">\f</code>, ‘<samp class="samp">\FP</samp>’ makes ‘<samp class="samp">P</samp>’ the default family. Use +‘<samp class="samp">\F[]</samp>’ to select the previous default family. The default font +family is available in the read-only string-valued register <code class="code">.fam</code>; +it is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">spam, \" startup defaults are T (Times) R (roman) +.fam H \" make Helvetica the default family +spam, \" family H + style R = HR +.ft B \" family H + style B = HB +spam, +.ft CR \" Courier roman (default family not changed) +spam, +.ft \" back to Helvetica bold +spam, +.fam T \" make Times the default family +spam, \" family T + style B = TB +.ft AR \" font AR (not a style) +baked beans, +.ft R \" family T + style R = TR +and spam. +</pre></div></div> + +<p><code class="code">\F</code> doesn’t produce an input token in GNU <code class="code">troff</code>. As a +consequence, it can be used in requests like <code class="code">mc</code> (which expects +a single character as an argument) to change the font family on the fly. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \F[P]x\F[] +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esty"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sty</code></strong> <var class="def-var-arguments">n style</var><a class="copiable-link" href='#index-_002esty'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sty"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esty_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sty]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esty_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002esty-1"></a> +<a class="index-entry-id" id="index-setting-up-an-abstract-font-style-_0028sty_0029"></a> +<a class="index-entry-id" id="index-abstract-font-style_002c-setting-up-_0028sty_0029"></a> +<a class="index-entry-id" id="index-font-style_002c-abstract_002c-setting-up-_0028sty_0029"></a> +<a class="index-entry-id" id="index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029"></a> +<a class="index-entry-id" id="index-cs-request_002c-and-font-styles"></a> +<a class="index-entry-id" id="index-bd-request_002c-and-font-styles"></a> +<a class="index-entry-id" id="index-tkf-request_002c-and-font-styles"></a> +<a class="index-entry-id" id="index-uf-request_002c-and-font-styles"></a> +<a class="index-entry-id" id="index-fspecial-request_002c-and-font-styles"></a> +<p>Associate an abstract style <var class="var">style</var> with mounting +position <var class="var">n</var>, which must be a non-negative integer. If the +requests <code class="code">cs</code>, <code class="code">bd</code>, <code class="code">tkf</code>, <code class="code">uf</code>, or <code class="code">fspecial</code> +are applied to an abstract style, they are instead applied to the member +of the current family corresponding to that style. +</p> +<a class="index-entry-id" id="index-DESC-1"></a> +<a class="index-entry-id" id="index-styles-1"></a> +<p>The default family can be set with the <samp class="option">-f</samp> option (see <a class="pxref" href="#Groff-Options">Options</a>). The <code class="code">styles</code> command in the <samp class="file">DESC</samp> file controls +which font positions (if any) are initially associated with abstract +styles rather than fonts. +</p> +<p><strong class="strong">Caution:</strong> The <var class="var">style</var> argument is not validated. +Errors may occur later, when the formatter attempts to construct a +resolved font name, or format a character for output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr BarPos \n[.fp] +.sty \n[.fp] Bar +.fam Foo +.ft \n[BarPos] +.tm .f=\n[.f] +A + error→ error: no font family named 'Foo' exists + error→ .f=41 + error→ error: cannot format glyph: no current font +</pre></div></div> + +<p>When an abstract style has been selected, the read-only string-valued +register ‘<samp class="samp">.sty</samp>’ interpolates its name; this datum is associated +with the environment (see <a class="pxref" href="#Environments">Environments</a>). Otherwise, ‘<samp class="samp">.sty</samp>’ +interpolates nothing. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Font-Positions"> +<div class="nav-panel"> +<p> +Next: <a href="#Using-Symbols" accesskey="n" rel="next">Using Symbols</a>, Previous: <a href="#Font-Families" accesskey="p" rel="prev">Font Families</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Font-Positions-1">5.19.3 Font Positions</h4> +<a class="index-entry-id" id="index-font-positions"></a> +<a class="index-entry-id" id="index-positions_002c-font"></a> + +<p>To support typeface indirection through abstract styles, and for +compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, the formatter maintains +a list of font <em class="dfn">positions</em> at which fonts required by a document are +<em class="dfn">mounted</em>. An output device’s description file <samp class="file">DESC</samp> +typically configures a set of pre-mounted fonts; see <a class="ref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>. A font need not be explicitly mounted before +it is selected; GNU <code class="code">troff</code> will search <code class="env">GROFF_FONT_PATH</code> for +it by name and mount it at the first free mounting position on demand. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fp</code></strong> <var class="def-var-arguments">pos id [<span class="r"><i class="slanted">font-description-file-name</i></span>]</var><a class="copiable-link" href='#index-_002efp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fp"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ef_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.f]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ef_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ef"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efp_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002efp-1"></a> +<a class="index-entry-id" id="index-mounting-a-font-_0028fp_0029"></a> +<a class="index-entry-id" id="index-font_002c-mounting-_0028fp_0029"></a> +<p>Mount a font under the name <var class="var">id</var> at mounting position <var class="var">pos</var>, a +non-negative integer. When the formatter starts up, it reads the output +device’s description to mount an initial set of faces, and selects font +position 1. Position 0 is unused by default. Unless the +<var class="var">font-description-file-name</var> argument is given, <var class="var">id</var> should be +the name of a font description file stored in a directory corresponding +to the selected output device. GNU <code class="code">troff</code> does not traverse +directories to locate the font description file. +</p> +<a class="index-entry-id" id="index-font-aliasing-with-third-argument-to-fp-request"></a> +<a class="index-entry-id" id="index-aliasing-fonts-with-third-argument-to-fp-request"></a> +<p>The optional third argument enables font names to be aliased, which can +be necessary in compatibility mode since AT&T <code class="code">troff</code> syntax +affords no means of identifying fonts with names longer than two +characters, like ‘<samp class="samp">TBI</samp>’ or ‘<samp class="samp">ZCMI</samp>’, in a font selection escape +sequence. See <a class="xref" href="#Compatibility-Mode">Compatibility Mode</a>. You can also alias fonts on +mounting for convenience or abstraction. (See below regarding the +<code class="code">.fp</code> register.) +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.fp \n[.fp] SC ZCMI +Send a \f(SChand-written\fP thank-you note. +.fp \n[.fp] Emph TI +.fp \n[.fp] Strong TB +Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]? +</pre></div></div> + +<p>‘<samp class="samp">DESC</samp>’, ‘<samp class="samp">P</samp>’, and non-negative integers are not usable as font +identifiers. +</p> +<a class="index-entry-id" id="index-font-position-register-_0028_002ef_0029"></a> +<p>The position of the currently selected font (or abstract style) is +available in the read-only register ‘<samp class="samp">.f</samp>’. It is associated with +the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>You can copy the value of <code class="code">.f</code> to another register to save it for +later use. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr saved-font \n[.f] +<span class="r">… <i class="i">text involving many font changes</i> …</span> +.ft \n[saved-font] +</pre></div></div> + +<a class="index-entry-id" id="index-next-free-font-position-register-_0028_002efp_0029"></a> +<p>The index of the next (non-zero) free font position is available in the +read-only register ‘<samp class="samp">.fp</samp>’. +<a class="index-entry-id" id="index-DESC-file_002c-and-font-mounting"></a> +Fonts not listed in the <samp class="file">DESC</samp> file are automatically mounted at +position ‘<samp class="samp">\n[.fp]</samp>’ when selected with the <code class="code">ft</code> request or +<code class="code">\f</code> escape sequence. When mounting a font at a position +explicitly with the <code class="code">fp</code> request, this same practice should be +followed, although GNU <code class="code">troff</code> does not enforce this strictly. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Using-Symbols"> +<div class="nav-panel"> +<p> +Next: <a href="#Character-Classes" accesskey="n" rel="next">Character Classes</a>, Previous: <a href="#Font-Positions" accesskey="p" rel="prev">Font Positions</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Using-Symbols-1">5.19.4 Using Symbols</h4> +<a class="index-entry-id" id="index-using-symbols"></a> +<a class="index-entry-id" id="index-symbols_002c-using"></a> + +<a class="index-entry-id" id="index-glyph"></a> +<a class="index-entry-id" id="index-character"></a> +<a class="index-entry-id" id="index-glyph_002c-distinguished-from-character"></a> +<a class="index-entry-id" id="index-character_002c-distinguished-from-glyph"></a> +<a class="index-entry-id" id="index-ligature"></a> +<p>A <em class="dfn">glyph</em> is a graphical representation of a <em class="dfn">character</em>. While +a character is an abstraction of semantic information, a glyph is +something that can be seen on screen or paper. A character has many +possible representation forms (for example, the character ‘A’ can be +written in an upright or slanted typeface, producing distinct +glyphs). Sometimes, a sequence of characters map to a single glyph: +this is a <em class="dfn">ligature</em>—the most common is ‘fi’. +</p> +<p>Space characters never become glyphs in GNU <code class="code">troff</code>. If not +discarded (as when trailing on text lines), they are represented by +horizontal motions in the output. +</p> +<a class="index-entry-id" id="index-symbol"></a> +<a class="index-entry-id" id="index-special-fonts"></a> +<a class="index-entry-id" id="index-fonts"></a> +<a class="index-entry-id" id="index-DESC-2"></a> +<a class="index-entry-id" id="index-special-request_002c-and-glyph-search-order"></a> +<a class="index-entry-id" id="index-fspecial-request_002c-and-glyph-search-order"></a> +<p>A <em class="dfn">symbol</em> is simply a named glyph. Within <code class="code">gtroff</code>, all glyph +names of a particular font are defined in its font file. If the user +requests a glyph not available in this font, <code class="code">gtroff</code> looks up an +ordered list of <em class="dfn">special fonts</em>. By default, the PostScript output +device supports the two special fonts ‘<samp class="samp">SS</samp>’ (slanted symbols) and +‘<samp class="samp">S</samp>’ (symbols) (the former is looked up before the latter). Other +output devices use different names for special fonts. Fonts mounted +with the <code class="code">fonts</code> keyword in the <samp class="file">DESC</samp> file are globally +available. To install additional special fonts locally (i.e., for a +particular font), use the <code class="code">fspecial</code> request. +</p> +<p>Here are the exact rules how <code class="code">gtroff</code> searches a given symbol: +</p> +<ul class="itemize mark-bullet"> +<li>If the symbol has been defined with the <code class="code">char</code> request, use it. +This hides a symbol with the same name in the current font. + +</li><li>Check the current font. + +</li><li>If the symbol has been defined with the <code class="code">fchar</code> request, use it. + +</li><li>Check whether the current font has a font-specific list of special +fonts; test all fonts in the order of appearance in the last +<code class="code">fspecial</code> call if appropriate. + +</li><li>If the symbol has been defined with the <code class="code">fschar</code> request for the +current font, use it. + +</li><li>Check all fonts in the order of appearance in the last <code class="code">special</code> +call. + +</li><li>If the symbol has been defined with the <code class="code">schar</code> request, use it. + +</li><li>As a last resort, consult all fonts loaded up to now for special fonts +and check them, starting with the lowest font number. This can +sometimes lead to surprising results since the <code class="code">fonts</code> line in +the <samp class="file">DESC</samp> file often contains empty positions, which are filled +later on. For example, consider the following: + +<div class="example"> +<div class="group"><pre class="example-preformatted">fonts 3 0 0 FOO +</pre></div></div> + +<p>This mounts font <code class="code">foo</code> at font position 3. We assume that +<code class="code">FOO</code> is a special font, containing glyph <code class="code">foo</code>, and that no +font has been loaded yet. The line +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.fspecial BAR BAZ +</pre></div></div> + +<p>makes font <code class="code">BAZ</code> special only if font <code class="code">BAR</code> is active. We +further assume that <code class="code">BAZ</code> is really a special font, i.e., the font +description file contains the <code class="code">special</code> keyword, and that it also +contains glyph <code class="code">foo</code> with a special shape fitting to font +<code class="code">BAR</code>. After executing <code class="code">fspecial</code>, font <code class="code">BAR</code> is loaded +at font position 1, and <code class="code">BAZ</code> at position 2. +</p> +<p>We now switch to a new font <code class="code">XXX</code>, trying to access glyph +<code class="code">foo</code> that is assumed to be missing. There are neither +font-specific special fonts for <code class="code">XXX</code> nor any other fonts made +special with the <code class="code">special</code> request, so <code class="code">gtroff</code> starts the +search for special fonts in the list of already mounted fonts, with +increasing font positions. Consequently, it finds <code class="code">BAZ</code> before +<code class="code">FOO</code> even for <code class="code">XXX</code>, which is not the intended behaviour. +</p></li></ul> + +<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>, and <a class="ref" href="#Special-Fonts">Special Fonts</a>, for +more details. +</p> +<a class="index-entry-id" id="index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029"></a> +<a class="index-entry-id" id="index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a> +<a class="index-entry-id" id="index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a> +<a class="index-entry-id" id="index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a> +<a class="index-entry-id" id="index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a> +<p>The <cite class="cite">groff_char<span class="r">(7)</span></cite> man page houses a complete list of +predefined special character names, but the availability of any as a +glyph is device- and font-dependent. For example, say +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">man -Tdvi groff_char > groff_char.dvi +</pre></div></div> + +<p>to obtain those available with the DVI device and default font +configuration.<a class="footnote" id="DOCF77" href="#FOOT77"><sup>77</sup></a> If you want to use an additional macro package to change +the fonts used, <code class="code">groff</code> (or <code class="code">gtroff</code>) must be run directly. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -Tdvi -mec -man groff_char.7 > groff_char.dvi +</pre></div></div> + +<a class="index-entry-id" id="index-composite-glyph-names"></a> +<a class="index-entry-id" id="index-glyph-names_002c-composite"></a> +<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029"></a> +<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029"></a> +<a class="index-entry-id" id="index-Adobe-Glyph-List-_0028AGL_0029"></a> +<p>Special character names not listed in <cite class="cite">groff_char<span class="r">(7)</span></cite> are +derived algorithmically, using a simplified version of the Adobe Glyph +List (AGL) algorithm, which is described in +<a class="uref" href="https://github.com/adobe-type-tools/agl-aglfn">https://github.com/adobe-type-tools/agl-aglfn</a>. The (frozen) +set of names that can’t be derived algorithmically is called the +<em class="dfn"><code class="code">groff</code> glyph list (GGL)</em>. +</p> +<ul class="itemize mark-bullet"> +<li>A glyph for Unicode character U+<var class="var">XXXX</var>[<var class="var">X</var>[<var class="var">X</var>]], which is +not a composite character is named +<code class="code">u<var class="var">XXXX</var><span class="r">[</span><var class="var">X</var><span class="r">[</span><var class="var">X</var><span class="r">]]</span></code>. <var class="var">X</var> must be an +uppercase hexadecimal digit. Examples: <code class="code">u1234</code>, <code class="code">u008E</code>, +<code class="code">u12DB8</code>. The largest Unicode value is 0x10FFFF. There must be at +least four <code class="code">X</code> digits; if necessary, add leading zeroes (after the +‘<samp class="samp">u</samp>’). No zero padding is allowed for character codes greater than +0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF +represented with character codes from the surrogate area U+D800-U+DFFF) +are not allowed either. + +</li><li>A glyph representing more than a single input character is named + +<div class="display"> +<pre class="display-preformatted">‘<samp class="samp">u</samp>’ <var class="var">component1</var> ‘<samp class="samp">_</samp>’ <var class="var">component2</var> ‘<samp class="samp">_</samp>’ <var class="var">component3</var> … +</pre></div> + +<p>Example: <code class="code">u0045_0302_0301</code>. +</p> +<p>For simplicity, all Unicode characters that are composites must be +maximally decomposed to NFD;<a class="footnote" id="DOCF78" href="#FOOT78"><sup>78</sup></a> for example, +<code class="code">u00CA_0301</code> is not a valid glyph name since U+00CA (<small class="sc">LATIN +CAPITAL LETTER E WITH CIRCUMFLEX</small>) can be further decomposed into U+0045 +(<small class="sc">LATIN CAPITAL LETTER E</small>) and U+0302 (<small class="sc">COMBINING CIRCUMFLEX +ACCENT</small>). <code class="code">u0045_0302_0301</code> is thus the glyph name for U+1EBE, +<small class="sc">LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE</small>. +</p> +</li><li>groff maintains a table to decompose all algorithmically derived glyph +names that are composites itself. For example, <code class="code">u0100</code> (<small class="sc">LATIN +LETTER A WITH MACRON</small>) is automatically decomposed into +<code class="code">u0041_0304</code>. Additionally, a glyph name of the GGL is preferred +to an algorithmically derived glyph name; <code class="code">groff</code> also +automatically does the mapping. Example: The glyph <code class="code">u0045_0302</code> is +mapped to <code class="code">^E</code>. + +</li><li>glyph names of the GGL can’t be used in composite glyph names; for +example, <code class="code">^E_u0301</code> is invalid. +</li></ul> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0028nm"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0028nm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_005bname_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bname_005d'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">base-glyph combining-component …</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0028"></a> +<a class="index-entry-id" id="index-_005c_005b"></a> +<p>Typeset a special character <var class="var">name</var> (two-character name <var class="var">nm</var>) or +a composite glyph consisting of <var class="var">base-glyph</var> overlaid with one or +more <var class="var">combining-component</var>s. For example, ‘<samp class="samp">\[A ho]</samp>’ is a +capital letter “A” with a “hook accent” (ogonek). +</p> +<p>There is no special syntax for one-character names—the analogous form +‘<samp class="samp">\<var class="var">n</var></samp>’ would collide with other escape sequences. However, the +four escape sequences <code class="code">\'</code>, <code class="code">\-</code>, <code class="code">\_</code>, and <code class="code">\`</code>, +are translated on input to the special character escape sequences +<code class="code">\[aa]</code>, <code class="code">\[-]</code>, <code class="code">\[ul]</code>, and <code class="code">\[ga]</code>, respectively. +</p> +<p>A special character name of length one is not the same thing as an +ordinary character: that is, the character <code class="code">a</code> is not the same as +<code class="code">\[a]</code>. +</p> +<p>If <var class="var">name</var> is undefined, a warning in category ‘<samp class="samp">char</samp>’ is +produced and the escape is ignored. See <a class="xref" href="#Warnings">Warnings</a>, for information +about the enablement and suppression of warnings. +</p> +<p>GNU <code class="code">troff</code> resolves <code class="code">\[<span class="r">…</span>]</code> with more than a single +component as follows: +</p> +<ul class="itemize mark-bullet"> +<li>Any component that is found in the GGL is converted to the +<code class="code">u<var class="var">XXXX</var></code> form. + +</li><li>Any component <code class="code">u<var class="var">XXXX</var></code> that is found in the list of +decomposable glyphs is decomposed. + +</li><li>The resulting elements are then concatenated with ‘<samp class="samp">_</samp>’ in between, +dropping the leading ‘<samp class="samp">u</samp>’ in all elements but the first. +</li></ul> + +<p>No check for the existence of any component (similar to <code class="code">tr</code> +request) is done. +</p> +<p>Examples: +</p> +<dl class="table"> +<dt><code class="code">\[A ho]</code></dt> +<dd><p>‘<samp class="samp">A</samp>’ maps to <code class="code">u0041</code>, ‘<samp class="samp">ho</samp>’ maps to <code class="code">u02DB</code>, thus the +final glyph name would be <code class="code">u0041_02DB</code>. This is not the expected +result: the ogonek glyph ‘<samp class="samp">ho</samp>’ is a spacing ogonek, but for a +proper composite a non-spacing ogonek (U+0328) is necessary. Looking +into the file <samp class="file">composite.tmac</samp>, one can find ‘<samp class="samp">.composite ho u0328</samp>’<!-- /@w -->, which changes the mapping of ‘<samp class="samp">ho</samp>’ while a composite glyph +name is constructed, causing the final glyph name to be +<code class="code">u0041_0328</code>. +</p> +</dd> +<dt><code class="code">\[^E u0301]</code></dt> +<dt><code class="code">\[^E aa]</code></dt> +<dt><code class="code">\[E a^ aa]</code></dt> +<dt><code class="code">\[E ^ <code class="code">'</code>]</code></dt> +<dd><p>‘<samp class="samp">^E</samp>’ maps to <code class="code">u0045_0302</code>, thus the final glyph name is +<code class="code">u0045_0302_0301</code> in all forms (assuming proper calls of the +<code class="code">composite</code> request). +</p></dd> +</dl> + +<p>It is not possible to define glyphs with names like ‘<samp class="samp">A ho</samp>’<!-- /@w --> +within a <code class="code">groff</code> font file. This is not really a limitation; +instead, you have to define <code class="code">u0041_0328</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cC_0027xxx_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\C<code class="code">'</code></code><span class="r"><i class="slanted">xxx</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cC_0027xxx_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cC"></a> +<a class="index-entry-id" id="index-named-character-_0028_005cC_0029"></a> +<a class="index-entry-id" id="index-character_002c-named-_0028_005cC_0029"></a> +<p>Typeset the glyph of the special character <var class="var">xxx</var>. Normally, it is +more convenient to use <code class="code">\[<var class="var">xxx</var>]</code>, but <code class="code">\C</code> has some +advantages: it is compatible with <abbr class="acronym">AT&T</abbr> device-independent +<code class="code">troff</code> (and therefore available in compatibility +mode<a class="footnote" id="DOCF79" href="#FOOT79"><sup>79</sup></a>) and can interpolate special +characters with ‘<samp class="samp">]</samp>’ in their names. The delimiter need not be +a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecomposite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.composite</code></strong> <var class="def-var-arguments">id1 id2</var><a class="copiable-link" href='#index-_002ecomposite'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-composite"></a> +<a class="index-entry-id" id="index-composite_002etmac"></a> +<p>Map special character name <var class="var">id1</var> to <var class="var">id2</var> if <var class="var">id1</var> is used +in <code class="code">\[...]</code> with more than one component. See above for examples. +This is a strict rewriting of the special character name; no check is +performed for the existence of a glyph for either. A set of default +mappings for many accents can be found in the file +<samp class="file">composite.tmac</samp>, loaded by the default <samp class="file">troffrc</samp> at startup. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cN_0027n_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\N<code class="code">'</code></code><span class="r"><i class="slanted">n</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cN_0027n_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cN"></a> +<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029-1"></a> +<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029-1"></a> +<a class="index-entry-id" id="index-char-request_002c-used-with-_005cN"></a> +<a class="index-entry-id" id="index-Unicode-1"></a> +<p>Typeset the glyph with code <var class="var">n</var> in the current font +(<code class="code">n</code> is <em class="emph">not</em> the input character code). The number +<var class="var">n</var> can be any non-negative decimal integer. Most devices only +have glyphs with codes between 0 and 255; the Unicode output device +uses codes in the range 0–65535. If the current font does not contain +a glyph with that code, special fonts are <em class="emph">not</em> searched. The +<code class="code">\N</code> escape sequence can be conveniently used in conjunction with +the <code class="code">char</code> request: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.char \[phone] \f[ZD]\N'37' +</pre></div></div> + +<a class="index-entry-id" id="index-DESC-3"></a> +<a class="index-entry-id" id="index-unnamed-glyphs"></a> +<a class="index-entry-id" id="index-glyphs_002c-unnamed"></a> +<p>The code of each glyph is given in the fourth column in the font +description file after the <code class="code">charset</code> command. It is possible to +include unnamed glyphs in the font description file by using a name of +‘<samp class="samp">---</samp>’; the <code class="code">\N</code> escape sequence is the only way to use these. +</p> +<p>No kerning is applied to glyphs accessed with <code class="code">\N</code>. The delimiter +need not be a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. +</p></dd></dl> + +<p>A few escape sequences are also special characters. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0027-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">'</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0027-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0027"></a> +<p>An escaped neutral apostrophe is a synonym for <code class="code">\[aa]</code> (acute +accent). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0060-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">`</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0060-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0060"></a> +<p>An escaped grave accent is a synonym for <code class="code">\[ga]</code> (grave accent). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002d-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\-</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_002d"></a> +<p>An escaped hyphen-minus is a synonym for <code class="code">\[-]</code> (minus sign). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_005f-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\_</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005f-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_005f"></a> +<p>An escaped underscore (“low line”) is a synonym for <code class="code">\[ul]</code> +(underrule). On typesetting devices, the underrule is font-invariant +and drawn lower than the underscore ‘<samp class="samp">_</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecflags"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cflags</code></strong> <var class="def-var-arguments">n c1 c2 …</var><a class="copiable-link" href='#index-_002ecflags'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cflags"></a> +<a class="index-entry-id" id="index-glyph-properties-_0028cflags_0029"></a> +<a class="index-entry-id" id="index-character-properties-_0028cflags_0029"></a> +<a class="index-entry-id" id="index-properties-of-glyphs-_0028cflags_0029"></a> +<a class="index-entry-id" id="index-properties-of-characters-_0028cflags_0029"></a> +<p>Assign properties encoded by the number <var class="var">n</var> to characters <var class="var">c1</var>, +<var class="var">c2</var>, and so on. +</p> +<p>Input characters, including special characters introduced by an escape, +have certain properties associated with them.<a class="footnote" id="DOCF80" href="#FOOT80"><sup>80</sup></a> +These properties can be modified with this request. The first argument +is the sum of the desired flags and the remaining arguments are the +characters to be assigned those properties. Spaces between the <var class="var">cn</var> +arguments are optional. Any argument <var class="var">cn</var> can be a character class +defined with the <code class="code">class</code> request rather than an individual +character. See <a class="xref" href="#Character-Classes">Character Classes</a>. +</p> +<p>The non-negative integer <var class="var">n</var> is the sum of any of the following. +Some combinations are nonsensical, such as ‘<samp class="samp">33</samp>’ (1 + 32). +</p> +<dl class="table"> +<dt id='index-end_002dof_002dsentence-characters-1'><span><code class="code">1</code><a class="copiable-link" href='#index-end_002dof_002dsentence-characters-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence"></a> +<p>Recognize the character as ending a sentence if followed by a newline +or two spaces. Initially, characters ‘<samp class="samp">.?!</samp>’ have this property. +</p> +</dd> +<dt id='index-hyphenating-characters'><span><code class="code">2</code><a class="copiable-link" href='#index-hyphenating-characters'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-characters_002c-hyphenation"></a> +<p>Enable breaks before the character. A line is not broken at a character +with this property unless the characters on each side both have non-zero +hyphenation codes. This exception can be overridden by adding 64. +Initially, no characters have this property. +</p> +</dd> +<dt id='index-_005c_002d-glyph_002c-and-cflags'><span><code class="code">4</code><a class="copiable-link" href='#index-_005c_002d-glyph_002c-and-cflags'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hy-glyph_002c-and-cflags"></a> +<a class="index-entry-id" id="index-em-glyph_002c-and-cflags"></a> +<p>Enable breaks after the character. A line is not broken at a character +with this property unless the characters on each side both have non-zero +hyphenation codes. This exception can be overridden by adding 64. +Initially, characters ‘<samp class="samp">\-\[hy]\[em]</samp>’ have this property. +</p> +</dd> +<dt id='index-overlapping-characters'><span><code class="code">8</code><a class="copiable-link" href='#index-overlapping-characters'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-characters_002c-overlapping"></a> +<a class="index-entry-id" id="index-ul-glyph_002c-and-cflags"></a> +<a class="index-entry-id" id="index-rn-glyph_002c-and-cflags"></a> +<a class="index-entry-id" id="index-ru-glyph_002c-and-cflags"></a> +<a class="index-entry-id" id="index-radicalex-glyph_002c-and-cflags"></a> +<a class="index-entry-id" id="index-sqrtex-glyph_002c-and-cflags"></a> +<p>Mark the glyph associated with this character as overlapping other +instances of itself horizontally. Initially, characters +‘<samp class="samp">\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]</samp>’ have this property. +</p> +</dd> +<dt id='index-br-glyph_002c-and-cflags'><span><code class="code">16</code><a class="copiable-link" href='#index-br-glyph_002c-and-cflags'> ¶</a></span></dt> +<dd><p>Mark the glyph associated with this character as overlapping other +instances of itself vertically. Initially, the character ‘<samp class="samp">\[br]</samp>’ +has this property. +</p> +</dd> +<dt id='index-transparent-characters'><span><code class="code">32</code><a class="copiable-link" href='#index-transparent-characters'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-character_002c-transparent"></a> +<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence-1"></a> +<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence-1"></a> +<p>Mark the character as transparent for the purpose of end-of-sentence +recognition. In other words, an end-of-sentence character followed by +any number of characters with this property is treated as the end of a +sentence if followed by a newline or two spaces. This is the same as +having a zero space factor in TeX. Initially, characters +‘<samp class="samp">"')]*\[dg]\[dd]\[rq]\[cq]</samp>’ have this property. +</p> +</dd> +<dt><code class="code">64</code></dt> +<dd><p>Ignore hyphenation codes of the surrounding characters. Use this in +combination with values 2 and 4 (initially, no characters have this +property). +</p> +<p>For example, if you need an automatic break point after the en-dash in +numeric ranges like “3000–5000”, insert +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cflags 68 \[en] +</pre></div></div> + +<p>into your document. However, this practice can lead to bad layout if +done thoughtlessly; in most situations, a better solution instead of +changing the <code class="code">cflags</code> value is to insert <code class="code">\:</code> right after the +hyphen at the places that really need a break point. +</p></dd> +</dl> + +<p>The remaining values were implemented for East Asian language support; +those who use alphabetic scripts exclusively can disregard them. +</p> +<dl class="table"> +<dt><code class="code">128</code></dt> +<dd><p>Prohibit a line break before the character, but allow a line break after +the character. This works only in combination with flags 256 and 512 +and has no effect otherwise. Initially, no characters have this +property. +</p> +</dd> +<dt><code class="code">256</code></dt> +<dd><p>Prohibit a line break after the character, but allow a line break before +the character. This works only in combination with flags 128 and 512 +and has no effect otherwise. Initially, no characters have this +property. +</p> +</dd> +<dt><code class="code">512</code></dt> +<dd><p>Allow line break before or after the character. This works only in +combination with flags 128 and 256 and has no effect otherwise. +Initially, no characters have this property. +</p></dd> +</dl> + +<p>In contrast to values 2 and 4, the values 128, 256, and 512 work +pairwise. If, for example, the left character has value 512, and the +right character 128, no break will be automatically inserted between +them. If we use value 6 instead for the left character, a break +after the character can’t be suppressed since the neighboring character +on the right doesn’t get examined. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002echar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.char</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002echar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-char"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002efchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fchar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efchar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fchar"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002efschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fschar</code></strong> <var class="def-var-arguments">f c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efschar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fschar"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.schar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eschar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-schar"></a> +<a class="index-entry-id" id="index-defining-character-_0028char_0029"></a> +<a class="index-entry-id" id="index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029"></a> +<a class="index-entry-id" id="index-character_002c-defining-_0028char_0029"></a> +<a class="index-entry-id" id="index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029"></a> +<a class="index-entry-id" id="index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029"></a> +<a class="index-entry-id" id="index-creating-new-characters-_0028char_0029"></a> +<a class="index-entry-id" id="index-defining-symbol-_0028char_0029"></a> +<a class="index-entry-id" id="index-symbol_002c-defining-_0028char_0029"></a> +<a class="index-entry-id" id="index-defining-glyph-_0028char_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-defining-_0028char_0029"></a> +<a class="index-entry-id" id="index-escape-character_002c-while-defining-glyph"></a> +<a class="index-entry-id" id="index-character_002c-escape_002c-while-defining-glyph"></a> +<a class="index-entry-id" id="index-tr-request_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-cp-request_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-rc-request_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-lc-request_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-_005cl_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-_005cL_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-_005c_0026_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-_005ce_002c-and-glyph-definitions"></a> +<a class="index-entry-id" id="index-hcode-request_002c-and-glyph-definitions"></a> +<p>Define a new character or glyph <var class="var">c</var> to be <var class="var">contents</var>, which +can be empty. More precisely, <code class="code">char</code> defines a <code class="code">groff</code> object +(or redefines an existing one) that is accessed with the +name <var class="var">c</var> on input, and produces <var class="var">contents</var> on output. +Every time glyph <var class="var">c</var> needs to be printed, <var class="var">contents</var> is +processed in a temporary environment and the result is wrapped up into a +single object. Compatibility mode is turned off and the escape +character is set to <code class="code">\</code> while <var class="var">contents</var> is processed. +Any emboldening, constant spacing, or track kerning is applied to this +object rather than to individual glyphs in <var class="var">contents</var>. +</p> +<p>An object defined by these requests can be used just like a normal glyph +provided by the output device. In particular, other characters can be +translated to it with the <code class="code">tr</code> or <code class="code">trin</code> requests; it can be +made the leader character with the <code class="code">lc</code> request; repeated patterns +can be drawn with it using the <code class="code">\l</code> and <code class="code">\L</code> escape sequences; +and words containing <var class="var">c</var> can be hyphenated correctly if the +<code class="code">hcode</code> request is used to give the object a hyphenation code. +</p> +<p>There is a special anti-recursion feature: use of the object within its +own definition is handled like a normal character (not +defined with <code class="code">char</code>). +</p> +<p>The <code class="code">tr</code> and <code class="code">trin</code> requests take precedence if <code class="code">char</code> +accesses the same symbol. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr XY +X + ⇒ Y +.char X Z +X + ⇒ Y +.tr XX +X + ⇒ Z +</pre></div></div> + +<p>The <code class="code">fchar</code> request defines a fallback glyph: <code class="code">gtroff</code> only +checks for glyphs defined with <code class="code">fchar</code> if it cannot find the glyph +in the current font. <code class="code">gtroff</code> carries out this test before +checking special fonts. +</p> +<p><code class="code">fschar</code> defines a fallback glyph for font <var class="var">f</var>: +<code class="code">gtroff</code> checks for glyphs defined with <code class="code">fschar</code> after the +list of fonts declared as font-specific special fonts with the +<code class="code">fspecial</code> request, but before the list of fonts declared as global +special fonts with the <code class="code">special</code> request. +</p> +<p>Finally, the <code class="code">schar</code> request defines a global fallback glyph: +<code class="code">gtroff</code> checks for glyphs defined with <code class="code">schar</code> after the list +of fonts declared as global special fonts with the <code class="code">special</code> +request, but before the already mounted special fonts. +</p> +<p>See <a class="xref" href="#Character-Classes">Character Classes</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002erchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rchar</code></strong> <var class="def-var-arguments">c …</var><a class="copiable-link" href='#index-_002erchar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rchar"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002erfschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rfschar</code></strong> <var class="def-var-arguments">f c …</var><a class="copiable-link" href='#index-_002erfschar'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rfschar"></a> +<a class="index-entry-id" id="index-removing-glyph-definition-_0028rchar_002c-rfschar_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a> +<a class="index-entry-id" id="index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a> +<p>Remove definition of each ordinary or special character <var class="var">c</var>, +undoing the effect of a <code class="code">char</code>, <code class="code">fchar</code>, or <code class="code">schar</code> +request. Those supplied by font description files cannot be removed. +Spaces and tabs may separate <var class="var">c</var> arguments. +</p> +<p>The request <code class="code">rfschar</code> removes glyph definitions defined with +<code class="code">fschar</code> for font <var class="var">f</var>. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Character-Classes"> +<div class="nav-panel"> +<p> +Next: <a href="#Special-Fonts" accesskey="n" rel="next">Special Fonts</a>, Previous: <a href="#Using-Symbols" accesskey="p" rel="prev">Using Symbols</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Character-Classes-1">5.19.5 Character Classes</h4> +<a class="index-entry-id" id="index-character-classes"></a> +<a class="index-entry-id" id="index-classes_002c-character"></a> + +<p>Classes are particularly useful for East Asian languages such as +Chinese, Japanese, and Korean, where the number of needed characters is +much larger than in European languages, and where large sets of +characters share the same properties. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eclass"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.class</code></strong> <var class="def-var-arguments">name c1 c2 …</var><a class="copiable-link" href='#index-_002eclass'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-class"></a> +<a class="index-entry-id" id="index-character-class-_0028class_0029"></a> +<a class="index-entry-id" id="index-defining-character-class-_0028class_0029"></a> +<a class="index-entry-id" id="index-class-of-characters-_0028class_0029"></a> +<p>Define a character class (or simply “class”) <var class="var">name</var> comprising +the characters <var class="var">c1</var>, <var class="var">c2</var>, and so on. +</p> +<p>A class thus defined can then be referred to in lieu of listing all the +characters within it. Currently, only the <code class="code">cflags</code> request can +handle references to character classes. +</p> +<p>In the request’s simplest form, each <var class="var">cn</var> is a character (or special +character). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq] +</pre></div></div> + +<p>Since class and glyph names share the same name space, it is recommended +to start and end the class name with <code class="code">[</code> and <code class="code">]</code>, +respectively, to avoid collisions with existing character names defined +by GNU <code class="code">troff</code> or the user (with <code class="code">char</code> and related requests). +This practice applies the presence of <code class="code">]</code> in the class name to +prevent the use of the special character escape form +<code class="code">\[<span class="r">…</span>]</code>, thus you must use the <code class="code">\C</code> escape to access +a class with such a name. +</p> +<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029-1"></a> +<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029-1"></a> +<p>You can also use a character range notation consisting of a +start character followed by ‘<samp class="samp">-</samp>’ and then an end character. +Internally, GNU <code class="code">troff</code> converts these two symbol names to +Unicode code points (according to the <code class="code">groff</code> glyph list [GGL]), +which then give the start and end value of the range. If that fails, +the class definition is skipped. +</p> +<p>Furthermore, classes can be nested. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.class [prepunct] , : ; > } +.class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016] +</pre></div></div> + +<p>The class ‘<samp class="samp">[prepunctx]</samp>’ thus contains the contents of the class +<code class="code">[prepunct]</code> as defined above (the set ‘<samp class="samp">, : ; > }</samp>’), and +characters in the range between <code class="code">U+2013</code> and <code class="code">U+2016</code>. +</p> +<p>If you want to include ‘<samp class="samp">-</samp>’ in a class, it must be the first +character value in the argument list, otherwise it gets misinterpreted +as part of the range syntax. +</p> +<p>It is not possible to use class names as end points of range +definitions. +</p> +<p>A typical use of the <code class="code">class</code> request is to control line-breaking +and hyphenation rules as defined by the <code class="code">cflags</code> request. For +example, to inhibit line breaks before the characters belonging to the +<code class="code">prepunctx</code> class defined in the previous example, you can write +the following. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cflags 2 \C'[prepunctx]' +</pre></div></div> + +<p>See the <code class="code">cflags</code> request in <a class="ref" href="#Using-Symbols">Using Symbols</a>, for more details. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Special-Fonts"> +<div class="nav-panel"> +<p> +Next: <a href="#Artificial-Fonts" accesskey="n" rel="next">Artificial Fonts</a>, Previous: <a href="#Character-Classes" accesskey="p" rel="prev">Character Classes</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Special-Fonts-1">5.19.6 Special Fonts</h4> +<a class="index-entry-id" id="index-special-fonts-1"></a> +<a class="index-entry-id" id="index-fonts_002c-special"></a> + +<p>Special fonts are those that <code class="code">gtroff</code> searches when it cannot find +the requested glyph in the current font. The Symbol font is usually a +special font. +</p> +<p><code class="code">gtroff</code> provides the following two requests to add more special +fonts. See <a class="xref" href="#Using-Symbols">Using Symbols</a>, for a detailed description of the glyph +searching mechanism in <code class="code">gtroff</code>. +</p> +<p>Usually, only non-TTY devices have special fonts. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002especial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.special</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> …]</var><a class="copiable-link" href='#index-_002especial'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-special-2"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002efspecial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fspecial</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> …]</var><a class="copiable-link" href='#index-_002efspecial'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fspecial"></a> +<a class="index-entry-id" id="index-fonts-1"></a> +<a class="index-entry-id" id="index-DESC-4"></a> +<p>Use the <code class="code">special</code> request to define special fonts. Initially, this +list is empty. +</p> +<p>Use the <code class="code">fspecial</code> request to designate special fonts only when +font <var class="var">f</var> is active. Initially, this list is empty. +</p> +<p>Previous calls to <code class="code">special</code> or <code class="code">fspecial</code> are overwritten; +without arguments, the particular list of special fonts is set to empty. +Special fonts are searched in the order they appear as arguments. +</p> +<p>All fonts that appear in a call to <code class="code">special</code> or <code class="code">fspecial</code> +are loaded. +</p> +<p>See <a class="xref" href="#Using-Symbols">Using Symbols</a>, for the exact search order of glyphs. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Artificial-Fonts"> +<div class="nav-panel"> +<p> +Next: <a href="#Ligatures-and-Kerning" accesskey="n" rel="next">Ligatures and Kerning</a>, Previous: <a href="#Special-Fonts" accesskey="p" rel="prev">Special Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Artificial-Fonts-1">5.19.7 Artificial Fonts</h4> +<a class="index-entry-id" id="index-artificial-fonts"></a> +<a class="index-entry-id" id="index-fonts_002c-artificial"></a> + +<p>There are a number of requests and escape sequences for artificially +creating fonts. These are largely vestiges of the days when output +devices did not have a wide variety of fonts, and when <code class="code">nroff</code> and +<code class="code">troff</code> were separate programs. Most of them are no longer +necessary in GNU <code class="code">troff</code>. Nevertheless, they are supported. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cH_0027height_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted">height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027height_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cH"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002bheight_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">+</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002bheight_0027'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002dheight_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">-</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002dheight_0027'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eheight_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.height]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eheight_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eheight"></a> +<a class="index-entry-id" id="index-changing-the-font-height-_0028_005cH_0029"></a> +<a class="index-entry-id" id="index-font-height_002c-changing-_0028_005cH_0029"></a> +<a class="index-entry-id" id="index-height_002c-font_002c-changing-_0028_005cH_0029"></a> +<p>Change (increment, decrement) the height of the current font, but not +the width. If <var class="var">height</var> is zero, restore the original height. +Default scaling unit is ‘<samp class="samp">z</samp>’. +</p> +<p>The read-only register <code class="code">.height</code> contains the font height as set by +<code class="code">\H</code>. +</p> +<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support +this feature. +</p> +<p><code class="code">\H</code> doesn’t produce an input token in GNU <code class="code">troff</code>. As a +consequence, it can be used in requests like <code class="code">mc</code> (which expects +a single character as an argument) to change the font on the fly: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \H'+5z'x\H'0' +</pre></div></div> + +<p>In compatibility mode, <code class="code">gtroff</code> behaves differently: If an +increment or decrement is used, it is always taken relative to the +current type size and not relative to the previously selected font +height. Thus, +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cp 1 +\H'+5'test \H'+5'test +</pre></div></div> + +<p>prints the word ‘<samp class="samp">test</samp>’ twice with the same font height (five points +larger than the current font size). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cS_0027slant_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\S<code class="code">'</code></code><span class="r"><i class="slanted">slant</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cS_0027slant_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cS"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eslant_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.slant]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eslant_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eslant"></a> +<a class="index-entry-id" id="index-changing-the-font-slant-_0028_005cS_0029"></a> +<a class="index-entry-id" id="index-font-slant_002c-changing-_0028_005cS_0029"></a> +<a class="index-entry-id" id="index-slant_002c-font_002c-changing-_0028_005cS_0029"></a> +<p>Slant the current font by <var class="var">slant</var> degrees. Positive values slant to +the right. Only integer values are possible. +</p> +<p>The read-only register <code class="code">.slant</code> contains the font slant as set by +<code class="code">\S</code>. +</p> +<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support +this feature. +</p> +<p><code class="code">\S</code> doesn’t produce an input token in GNU <code class="code">troff</code>. As a +consequence, it can be used in requests like <code class="code">mc</code> (which expects +a single character as an argument) to change the font on the fly: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \S'20'x\S'0' +</pre></div></div> + +<a class="index-entry-id" id="index-CSTR-_002354-errata-3"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cS-escape"></a> +<p>This escape is incorrectly documented in the <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> manual; the slant is always set to an absolute value. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eul"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ul</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002eul'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ul"></a> +<a class="index-entry-id" id="index-underlining-_0028ul_0029"></a> +<p>The <code class="code">ul</code> request normally underlines subsequent lines if a TTY +output device is used. Otherwise, the lines are printed in italics +(only the term ‘underlined’ is used in the following). The single +argument is the quantity of input lines to be underlined; with no +argument, the next line is underlined. If <var class="var">lines</var> is zero or +negative, stop the effects of <code class="code">ul</code> (if it was active). Requests +and empty lines do not count for computing the number of underlined +input lines, even if they produce some output like <code class="code">tl</code>. Lines +inserted by macros (e.g., invoked by a trap) do count. +</p> +<p>At the beginning of <code class="code">ul</code>, the current font is stored and the +underline font is activated. Within the span of a <code class="code">ul</code> request, it +is possible to change fonts, but after the last line affected by +<code class="code">ul</code> the saved font is restored. +</p> +<p>This number of lines still to be underlined is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). The underline font can be changed +with the <code class="code">uf</code> request. +</p> + + +<p>The <code class="code">ul</code> request does not underline spaces. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecu"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cu</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002ecu'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cu"></a> +<a class="index-entry-id" id="index-continuous-underlining-_0028cu_0029"></a> +<a class="index-entry-id" id="index-underlining_002c-continuous-_0028cu_0029"></a> +<p>The <code class="code">cu</code> request is similar to <code class="code">ul</code> but underlines spaces as +well (if a TTY output device is used). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002euf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.uf</code></strong> <var class="def-var-arguments">font</var><a class="copiable-link" href='#index-_002euf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-uf"></a> +<a class="index-entry-id" id="index-underline-font-_0028uf_0029"></a> +<a class="index-entry-id" id="index-font-for-underlining-_0028uf_0029"></a> +<p>Set the underline font (globally) used by <code class="code">ul</code> and <code class="code">cu</code>. By +default, this is the font at position 2. <var class="var">font</var> can be either +a non-negative font position or the name of a font. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-bd"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebd-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font1 font2 [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.b]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eb_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eb"></a> +<a class="index-entry-id" id="index-imitating-boldface-_0028bd_0029"></a> +<a class="index-entry-id" id="index-boldface_002c-imitating-_0028bd_0029"></a> +<p>Embolden <var class="var">font</var> by overstriking its glyphs offset by <var class="var">offset</var> +units minus one. +</p> +<p>Two syntax forms are available. +</p> +<ul class="itemize mark-bullet"> +<li>Imitate a bold font unconditionally. The first argument specifies the +font to embolden, and the second is the number of basic units, minus +one, by which the two glyphs are offset. If the second argument is +missing, emboldening is turned off. + +<p><var class="var">font</var> can be either a non-negative font position or the name of a +font. +</p> +<p><var class="var">offset</var> is available in the <code class="code">.b</code> read-only register if a +special font is active; in the <code class="code">bd</code> request, its default unit is +‘<samp class="samp">u</samp>’. +</p> +</li><li><a class="index-entry-id" id="index-fspecial-request_002c-and-imitating-bold"></a> +<a class="index-entry-id" id="index-special"></a> +<a class="index-entry-id" id="index-embolding-of-special-fonts"></a> +<a class="index-entry-id" id="index-special-fonts_002c-emboldening"></a> +Imitate a bold form conditionally. Embolden <var class="var">font1</var> by <var class="var">offset</var> +only if font <var class="var">font2</var> is the current font. This request can be +issued repeatedly to set up different emboldening values for different +current fonts. If the second argument is missing, emboldening is turned +off for this particular current font. + +<p>This affects special fonts only (either set up with the <code class="code">special</code> +command in font files or with the <code class="code">fspecial</code> request). +</p></li></ul> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cs</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">width</i></span> [<span class="r"><i class="slanted">em-size</i></span>]]</var><a class="copiable-link" href='#index-_002ecs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cs"></a> +<a class="index-entry-id" id="index-constant-glyph-space-mode-_0028cs_0029"></a> +<a class="index-entry-id" id="index-mode-for-constant-glyph-space-_0028cs_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-constant-space"></a> +<a class="index-entry-id" id="index-ps-request_002c-and-constant-glyph-space-mode"></a> +<p>Switch to and from <em class="dfn">constant glyph space mode</em>. If activated, the +width of every glyph is <em class="math"><var class="var">width</var>/36</em> ems. The em size is given +absolutely by <var class="var">em-size</var>; if this argument is missing, the em value +is taken from the current font size (as set with the <code class="code">ps</code> request) +when the font is effectively in use. Without second and third argument, +constant glyph space mode is deactivated. +</p> +<p>Default scaling unit for <var class="var">em-size</var> is ‘<samp class="samp">z</samp>’; <var class="var">width</var> is an +integer. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Ligatures-and-Kerning"> +<div class="nav-panel"> +<p> +Next: <a href="#Dummy-Characters" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="#Artificial-Fonts" accesskey="p" rel="prev">Artificial Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Ligatures-and-Kerning-1">5.19.8 Ligatures and Kerning</h4> +<a class="index-entry-id" id="index-ligatures-and-kerning"></a> +<a class="index-entry-id" id="index-kerning-and-ligatures"></a> + +<p>Ligatures are groups of characters that are run together, i.e, producing +a single glyph. For example, the letters ‘f’ and ‘i’ can form a +ligature ‘fi’ as in the word ‘file’. This produces a cleaner look +(albeit subtle) to the printed output. Usually, ligatures are not +available in fonts for TTY output devices. +</p> +<p>Most PostScript fonts support the fi and fl ligatures. The C/A/T +typesetter that was the target of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> also +supported ‘ff’, ‘ffi’, and ‘ffl’ ligatures. Advanced typesetters or +‘expert’ fonts may include ligatures for ‘ft’ and ‘ct’, although GNU +<code class="code">troff</code> does not support these (yet). +</p> +<p>Only the current font is checked for ligatures and kerns; neither +special fonts nor special charcters defined with the <code class="code">char</code> request +(and its siblings) are taken into account. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elg"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lg</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002elg'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lg"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elg_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lg]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elg_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002elg-1"></a> +<a class="index-entry-id" id="index-activating-ligatures-_0028lg_0029"></a> +<a class="index-entry-id" id="index-ligatures_002c-activating-_0028lg_0029"></a> +<a class="index-entry-id" id="index-ligatures-enabled-register-_0028_002elg_0029"></a> +<p>Switch the ligature mechanism on or off; if the parameter is non-zero or +missing, ligatures are enabled, otherwise disabled. Default is on. The +current ligature mode can be found in the read-only register <code class="code">.lg</code> +(set to 1 or 2 if ligatures are enabled, 0 otherwise). +</p> +<p>Setting the ligature mode to 2 enables the two-character ligatures +(fi, fl, and ff) and disables the three-character ligatures (ffi and +ffl). +</p></dd></dl> + +<p><em class="dfn">Pairwise kerning</em> is another subtle typesetting mechanism that +modifies the distance between a glyph pair to improve readability. In +most cases (but not always) the distance is decreased. +Typewriter-like fonts and fonts for terminals where all glyphs have the +same width don’t use kerning. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ekern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.kern</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002ekern'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-kern"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ekern_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.kern]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ekern_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ekern-1"></a> +<a class="index-entry-id" id="index-activating-kerning-_0028kern_0029"></a> +<a class="index-entry-id" id="index-kerning_002c-activating-_0028kern_0029"></a> +<a class="index-entry-id" id="index-kerning-enabled-register-_0028_002ekern_0029"></a> +<p>Switch kerning on or off. If the parameter is non-zero or missing, +enable pairwise kerning, otherwise disable it. The read-only register +<code class="code">.kern</code> is set to 1 if pairwise kerning is enabled, +0 otherwise. +</p> +<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning"></a> +<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning"></a> +<p>If the font description file contains pairwise kerning information, +glyphs from that font are kerned. Kerning between two glyphs can be +inhibited by placing <code class="code">\&</code> between them: ‘<samp class="samp">V\&A</samp>’. +</p> +<p>See <a class="xref" href="#Font-Description-File-Format">Font Description File Format</a>. +</p></dd></dl> + +<a class="index-entry-id" id="index-track-kerning"></a> +<a class="index-entry-id" id="index-kerning_002c-track"></a> +<p><em class="dfn">Track kerning</em> expands or reduces the space between glyphs. This +can be handy, for example, if you need to squeeze a long word onto a +single line or spread some text to fill a narrow column. It must be +used with great care since it is usually considered bad typography if +the reader notices the effect. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etkf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tkf</code></strong> <var class="def-var-arguments">f s1 n1 s2 n2</var><a class="copiable-link" href='#index-_002etkf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tkf"></a> +<a class="index-entry-id" id="index-activating-track-kerning-_0028tkf_0029"></a> +<a class="index-entry-id" id="index-track-kerning_002c-activating-_0028tkf_0029"></a> +<p>Enable track kerning for font <var class="var">f</var>. If the current font +is <var class="var">f</var> the width of every glyph is increased by an amount +between <var class="var">n1</var> and <var class="var">n2</var> (<var class="var">n1</var>, <var class="var">n2</var> can be negative); if +the current type size is less than or equal to <var class="var">s1</var> the width is +increased by <var class="var">n1</var>; if it is greater than or equal to <var class="var">s2</var> the +width is increased by <var class="var">n2</var>; if the type size is greater than or +equal to <var class="var">s1</var> and less than or equal to <var class="var">s2</var> the increase in +width is a linear function of the type size. +</p> +<p>The default scaling unit is ‘<samp class="samp">z</samp>’ for <var class="var">s1</var> and <var class="var">s2</var>, ‘<samp class="samp">p</samp>’ +for <var class="var">n1</var> and <var class="var">n2</var>. +</p> +<p>The track kerning amount is added even to the rightmost glyph in a line; +for large values it is thus recommended to increase the line length by +the same amount to compensate. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Italic-Corrections"> +<div class="nav-panel"> +<p> +Next: <a href="#Dummy-Characters" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="#Ligatures-and-Kerning" accesskey="p" rel="prev">Ligatures and Kerning</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Italic-Corrections-1">5.19.9 Italic Corrections</h4> + +<p>When typesetting adjacent glyphs from typefaces of different slants, the +space between them may require adjustment. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002f-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\/</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002f-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_002f"></a> +<a class="index-entry-id" id="index-italic-correction-_0028_005c_002f_0029"></a> +<a class="index-entry-id" id="index-correction_002c-italic-_0028_005c_002f_0029"></a> +<a class="index-entry-id" id="index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a> +<a class="index-entry-id" id="index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029"></a> +<a class="index-entry-id" id="index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029"></a> +<p>Apply an <em class="dfn">italic correction</em>: modify the spacing of the preceding +glyph so that the distance between it and the following glyph is correct +if the latter is of upright shape. For example, if an +italic ‘<samp class="samp">f</samp>’ is followed immediately by a roman right +parenthesis, then in many fonts the top right portion of +the ‘<samp class="samp">f</samp>’ overlaps the top left of the right parenthesis, which +is ugly. Use this escape sequence whenever an oblique glyph is +immediately followed by an upright glyph without any intervening space. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002c-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\,</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002c-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_002c"></a> +<a class="index-entry-id" id="index-left-italic-correction-_0028_005c_002c_0029"></a> +<a class="index-entry-id" id="index-correction_002c-left-italic-_0028_005c_002c_0029"></a> +<a class="index-entry-id" id="index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a> +<a class="index-entry-id" id="index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029"></a> +<a class="index-entry-id" id="index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029"></a> +<p>Apply a <em class="dfn">left italic correction</em>: modify the spacing of the +following glyph so that the distance between it and the preceding +glyph is correct if the latter is of upright shape. For example, +if a roman left parenthesis is immediately followed by an +italic ‘<samp class="samp">f</samp>’, then in many fonts the bottom left portion of +the ‘<samp class="samp">f</samp>’ overlaps the bottom of the left parenthesis, which is +ugly. Use this escape sequence whenever an upright glyph is followed +immediately by an oblique glyph without any intervening space. +</p></dd></dl> + +<hr> +</div> +<div class="subsection-level-extent" id="Dummy-Characters"> +<div class="nav-panel"> +<p> +Previous: <a href="#Italic-Corrections" accesskey="p" rel="prev">Italic Corrections</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Dummy-Characters-1">5.19.10 Dummy Characters</h4> + +<p>As discussed in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>, the first character on an +input line is treated specially. Further, formatting a glyph has many +consequences on formatter state (see <a class="pxref" href="#Environments">Environments</a>). Occasionally, +we want to escape this context or embrace some of those consequences +without actually rendering a glyph to the output. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0026-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\&</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0026-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0026"></a> +<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029"></a> +<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029"></a> +<p>Interpolate a dummy character, which is constitutive of output but +invisible.<a class="footnote" id="DOCF81" href="#FOOT81"><sup>81</sup></a> Its presence alters the interpretation context of a +subsequent input character, and enjoys several applications. +</p> +<ul class="itemize mark-bullet"> +<li>Prevent insertion of extra space after an end-of-sentence character. + +<div class="example"> +<div class="group"><pre class="example-preformatted">Test. +Test. + ⇒ Test. Test. +Test.\& +Test. + ⇒ Test. Test. +</pre></div></div> + +</li><li>Prevent recognition of a control character. + +<div class="example"> +<div class="group"><pre class="example-preformatted">.Test + error→ warning: macro 'Test' not defined +\&.Test + ⇒ .Test +</pre></div></div> + +</li><li>Prevent kerning between two glyphs. + + +</li><li>Translate a character to “nothing”. + +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr JIjiK\&k\&UVuv +Post universitum, alea jacta est, OK? + ⇒ Post vniversitvm, alea iacta est, O? +</pre></div></div> +</li></ul> + +<p>The dummy character escape sequence sees use in macro definitions as a +means of ensuring that arguments are treated as text even if they begin +with spaces or control characters. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de HD \" typeset a simple bold heading +. sp +. ft B +\&\\$1 \" exercise: remove the \& +. ft +. sp +.. +.HD .\|.\|.\|surprised? +</pre></div></div> +</dd></dl> + +<p>One way to think about the dummy character is to imagine placing the +symbol ‘<samp class="samp">&</samp>’ in the input at a certain location; if doing so has all +the side effects on formatting that you desire except for sticking an +ugly ampersand in the midst of your text, the dummy character is what +you want in its place. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0029-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\)</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0029-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0029"></a> +<a class="index-entry-id" id="index-transparent-dummy-character-_0028_005c_0029_0029"></a> +<a class="index-entry-id" id="index-character_002c-transparent-dummy-_0028_005c_0029_0029"></a> +<a class="index-entry-id" id="index-dummy-character_002c-transparent-_0028_005c_0029_0029"></a> +<p>Interpolate a <i class="slanted">transparent</i> dummy character—one that is +transparent to end-of-sentence detection. It behaves as <code class="code">\&</code>, +except that <code class="code">\&</code> is treated as letters and numerals normally are +after ‘<samp class="samp">.</samp>’, ‘<samp class="samp">?</samp>’ and ‘<samp class="samp">!</samp>’; <code class="code">\&</code> cancels end-of-sentence +detection, and <code class="code">\)</code> does not. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de Suffix-& +. nop \&\\$1 +.. +. +.de Suffix-) +. nop \)\\$1 +.. +. +Here's a sentence.\c +.Suffix-& ' +Another one.\c +.Suffix-) ' +And a third. + ⇒ Here's a sentence.' Another one.' And a third. +</pre></div></div> +</dd></dl> + + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Manipulating-Type-Size-and-Vertical-Spacing"> +<div class="nav-panel"> +<p> +Next: <a href="#Colors" accesskey="n" rel="next">Colors</a>, Previous: <a href="#Using-Fonts" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Manipulating-Type-Size-and-Vertical-Spacing-1">5.20 Manipulating Type Size and Vertical Spacing</h3> +<a class="index-entry-id" id="index-manipulating-type-size-and-vertical-spacing"></a> + +<a class="index-entry-id" id="index-text-baseline-1"></a> +<a class="index-entry-id" id="index-baseline_002c-text-1"></a> +<a class="index-entry-id" id="index-type-size"></a> +<a class="index-entry-id" id="index-size_002c-size"></a> +<a class="index-entry-id" id="index-vertical-spacing-1"></a> +<a class="index-entry-id" id="index-spacing_002c-vertical-1"></a> +<p>These concepts were introduced in <a class="ref" href="#Page-Geometry">Page Geometry</a>. The height of a +font’s tallest glyph is one em, which is equal to the type size in +points.<a class="footnote" id="DOCF82" href="#FOOT82"><sup>82</sup></a> A vertical spacing of less than 120% of +the type size can make a document hard to read. Larger proportions can +be useful to spread the text for annotations or proofreader’s marks. By +default, GNU <code class="code">troff</code> uses 10 point type on 12 point +spacing. +<a class="index-entry-id" id="index-leading"></a> +Typographers call the difference between type size and vertical spacing +<em class="dfn">leading</em>.<a class="footnote" id="DOCF83" href="#FOOT83"><sup>83</sup></a> +</p> + + +<ul class="mini-toc"> +<li><a href="#Changing-the-Type-Size" accesskey="1">Changing the Type Size</a></li> +<li><a href="#Changing-the-Vertical-Spacing" accesskey="2">Changing the Vertical Spacing</a></li> +<li><a href="#Using-Fractional-Type-Sizes" accesskey="3">Using Fractional Type Sizes</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Changing-the-Type-Size"> +<div class="nav-panel"> +<p> +Next: <a href="#Changing-the-Vertical-Spacing" accesskey="n" rel="next">Changing the Vertical Spacing</a>, Previous: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Changing-the-Type-Size-1">5.20.1 Changing the Type Size</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eps"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">size</i></span>]</var><a class="copiable-link" href='#index-_002eps'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ps"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eps-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002eps-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cssize"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\s</code><span class="r"><i class="slanted">size</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cssize'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002es_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.s]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002es_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002es"></a> +<a class="index-entry-id" id="index-changing-type-sizes-_0028ps_002c-_005cs_0029"></a> +<a class="index-entry-id" id="index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a> +<a class="index-entry-id" id="index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a> +<p>Use the <code class="code">ps</code> request or the <code class="code">\s</code> escape sequence to change +(increase, decrease) the type size (in scaled points). Specify +<var class="var">size</var> as either an absolute type size, or as a relative change from +the current size. <code class="code">ps</code> with no argument restores the previous +size. The <code class="code">ps</code> request’s default scaling unit is ‘<samp class="samp">z</samp>’. The +requested size is rounded to the nearest valid size (with ties rounding +down) within the limits supported by the device. If the requested size +is non-positive, it is treated as 1<span class="dmn">u</span>. +</p> +<a class="index-entry-id" id="index-CSTR-_002354-errata-4"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-ps-request"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cs-escape-sequence"></a> +<p>Type size alteration is incorrectly documented in the <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> manual, which claims “if [the requested size] is invalid, +the next larger valid size will result, with a maximum of +36”.<a class="footnote" id="DOCF84" href="#FOOT84"><sup>84</sup></a> +</p> +<a class="index-entry-id" id="index-type-size-registers-_0028_002es_002c-_002eps_0029"></a> +<a class="index-entry-id" id="index-point-size-registers-_0028_002es_002c-_002eps_0029"></a> +<p>The read-only string-valued register <code class="code">.s</code> interpolates the type +size in points as a decimal fraction; it is associated with the +environment (see <a class="pxref" href="#Environments">Environments</a>). To obtain the type size in scaled +points, interpolate the <code class="code">.ps</code> register instead (see <a class="pxref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>). +</p> +<p>The <code class="code">\s</code> escape sequence supports a variety of syntax forms. +</p> +<dl class="table"> +<dt><code class="code">\s<var class="var">n</var></code></dt> +<dd><p>Set the type size to <var class="var">n</var> points. <var class="var">n</var> must be a single +digit. If <var class="var">n</var> is 0, restore the previous size. +</p> +</dd> +<dt><code class="code">\s+<var class="var">n</var></code></dt> +<dt><code class="code">\s-<var class="var">n</var></code></dt> +<dd><p>Increase or decrease the type size by <var class="var">n</var> points. +<var class="var">n</var> must be exactly one digit. +</p> +</dd> +<dt><code class="code">\s(<var class="var">nn</var></code></dt> +<dd><p>Set the type size to <var class="var">nn</var> points. <var class="var">nn</var> must be exactly two +digits. +</p> +</dd> +<dt><code class="code">\s+(<var class="var">nn</var></code></dt> +<dt><code class="code">\s-(<var class="var">nn</var></code></dt> +<dt><code class="code">\s(+<var class="var">nn</var></code></dt> +<dt><code class="code">\s(-<var class="var">nn</var></code></dt> +<dd><p>Alter the type size in points by the two-digit value <var class="var">nn</var>. +</p></dd> +</dl> + +<p>See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>, for further syntactical forms of the +<code class="code">\s</code> escape sequence that additionally accept decimal fractions. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">snap, snap, +.ps +2 +grin, grin, +.ps +2 +wink, wink, \s+2nudge, nudge,\s+8 say no more! +.ps 10 +</pre></div></div> +</dd></dl> + +<p>The <code class="code">\s</code> escape sequence affects the environment immediately and +doesn’t produce an input token. Consequently, it can be used in +requests like <code class="code">mc</code>, which expects a single character as an +argument, to change the type size on the fly. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \s[20]x\s[0] +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esizes"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sizes</code></strong> <var class="def-var-arguments">s1 s2 … sn [<code class="t">0</code>]</var><a class="copiable-link" href='#index-_002esizes'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sizes-1"></a> +<p>The <samp class="file">DESC</samp> file specifies which type sizes are allowed by the +output device; see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>. Use the <code class="code">sizes</code> request +to change this set of permissible sizes. Arguments are in scaled +points; see <a class="ref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>. Each can be a single +type size (such as ‘<samp class="samp">12000</samp>’), or a range of sizes (such as +‘<samp class="samp">4000-72000</samp>’). You can optionally end the list with a ‘<samp class="samp">0</samp>’. +</p></dd></dl> + +<hr> +</div> +<div class="subsection-level-extent" id="Changing-the-Vertical-Spacing"> +<div class="nav-panel"> +<p> +Next: <a href="#Using-Fractional-Type-Sizes" accesskey="n" rel="next">Using Fractional Type Sizes</a>, Previous: <a href="#Changing-the-Type-Size" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Changing-the-Vertical-Spacing-1">5.20.2 Changing the Vertical Spacing</h4> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002evs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002evs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-vs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002evs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002evs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.v]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ev_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ev"></a> +<a class="index-entry-id" id="index-changing-vertical-line-spacing-_0028vs_0029"></a> +<a class="index-entry-id" id="index-vertical-line-spacing_002c-changing-_0028vs_0029"></a> +<a class="index-entry-id" id="index-vertical-line-spacing-register-_0028_002ev_0029"></a> +<p>Set the vertical spacing to, or alter it by, <var class="var">space</var>. The default +scaling unit is ‘<samp class="samp">p</samp>’. If <code class="code">vs</code> is called without an argument, +the vertical spacing is reset to the previous value before the last call +to <code class="code">vs</code>. +<a class="index-entry-id" id="index-_002eV-register_002c-and-vs"></a> +GNU <code class="code">troff</code> emits a warning in category ‘<samp class="samp">range</samp>’ if <var class="var">space</var> +is negative; the vertical spacing is then set to the smallest possible +positive value, the vertical motion quantum (as found in the <code class="code">.V</code> +register). +</p> +<p>‘<samp class="samp">.vs 0</samp>’<!-- /@w --> isn’t saved in a diversion since it doesn’t result in +a vertical motion. You must explicitly issue this request before +interpolating the diversion. +</p> +<p>The read-only register <code class="code">.v</code> contains the vertical spacing; it is +associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<a class="index-entry-id" id="index-vertical-line-spacing_002c-effective-value"></a> +<p>When a break occurs, GNU <code class="code">troff</code> performs the following procedure. +</p> +<ul class="itemize mark-bullet"> +<li><a class="index-entry-id" id="index-extra-pre_002dvertical-line-space-_0028_005cx_0029"></a> +<a class="index-entry-id" id="index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029"></a> +Move the drawing position vertically by the <em class="dfn">extra pre-vertical line +space</em>, the minimum of all negative <code class="code">\x</code> escape sequence arguments +in the pending output line. + +</li><li>Move the drawing position vertically by the vertical line spacing. + +</li><li>Write out the pending output line. + +</li><li><a class="index-entry-id" id="index-extra-post_002dvertical-line-space-_0028_005cx_0029"></a> +<a class="index-entry-id" id="index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029"></a> +Move the drawing position vertically by the <em class="dfn">extra post-vertical line +space</em>, the maximum of all positive <code class="code">\x</code> escape sequence arguments +in the line that has just been output. + +</li><li><a class="index-entry-id" id="index-post_002dvertical-line-spacing"></a> +<a class="index-entry-id" id="index-line-spacing_002c-post_002dvertical-_0028pvs_0029"></a> +Move the drawing position vertically by the <em class="dfn">post-vertical line +spacing</em> (see below). +</li></ul> + +<a class="index-entry-id" id="index-double_002dspacing-_0028vs_002c-pvs_0029"></a> +<p>Prefer <code class="code">vs</code> or <code class="code">pvs</code> over <code class="code">ls</code> to produce double-spaced +documents. <code class="code">vs</code> and <code class="code">pvs</code> have finer granularity than +<code class="code">ls</code>; moreover, some preprocessors assume single spacing. +See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>, regarding the <code class="code">\x</code> escape sequence and +the <code class="code">ls</code> request. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epvs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002epvs'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pvs"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002epvs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-1'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_002epvs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-2'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epvs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pvs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epvs_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002epvs-3"></a> +<a class="index-entry-id" id="index-ls-request_002c-alternative-to-_0028pvs_0029"></a> +<a class="index-entry-id" id="index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029"></a> +<a class="index-entry-id" id="index-post_002dvertical-line-spacing-register-_0028_002epvs_0029"></a> +<p>Set the post-vertical spacing to, or alter it by, <var class="var">space</var>. The +default scaling unit is ‘<samp class="samp">p</samp>’. If <code class="code">pvs</code> is called without an +argument, the post-vertical spacing is reset to the previous value +before the last call to <code class="code">pvs</code>. GNU <code class="code">troff</code> emits a warning in +category ‘<samp class="samp">range</samp>’ if <var class="var">space</var> is negative; the post-vertical +spacing is then set to zero. +</p> +<p>The read-only register <code class="code">.pvs</code> contains the post-vertical spacing; +it is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Using-Fractional-Type-Sizes"> +<div class="nav-panel"> +<p> +Previous: <a href="#Changing-the-Type-Size" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Using-Fractional-Type-Sizes-1">5.20.3 Using Fractional Type Sizes</h4> +<a class="index-entry-id" id="index-fractional-type-sizes"></a> +<a class="index-entry-id" id="index-fractional-point-sizes"></a> +<a class="index-entry-id" id="index-type-sizes_002c-fractional"></a> +<a class="index-entry-id" id="index-point-sizes_002c-fractional"></a> +<a class="index-entry-id" id="index-sizes_002c-fractional-type"></a> + +<p>AT&T <code class="code">troff</code> interpreted all type size measurements in points. +Combined with integer arithmetic, this design choice made it impossible +to support, for instance, ten and a half-point type. In GNU +<code class="code">troff</code>, an output device can select a scaling factor that +subdivides a point into “scaled points”. A type size expressed in +scaled points can thus represent a non-integral type size. +</p> +<a class="index-entry-id" id="index-s-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-s"></a> +<a class="index-entry-id" id="index-scaling-unit-s"></a> +<a class="index-entry-id" id="index-z-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-z"></a> +<a class="index-entry-id" id="index-scaling-unit-z"></a> +<a class="index-entry-id" id="index-ps-request_002c-with-fractional-type-sizes"></a> +<a class="index-entry-id" id="index-cs-request_002c-with-fractional-type-sizes"></a> +<a class="index-entry-id" id="index-tkf-request_002c-with-fractional-type-sizes"></a> +<a class="index-entry-id" id="index-_005cH_002c-with-fractional-type-sizes"></a> +<a class="index-entry-id" id="index-_005cs_002c-with-fractional-type-sizes"></a> +<p>A <em class="dfn">scaled point</em> is equal to <em class="math">1/<var class="var">sizescale</var></em> points, where +<var class="var">sizescale</var> is specified in the device description file <samp class="file">DESC</samp>, +and defaults to 1.<a class="footnote" id="DOCF85" href="#FOOT85"><sup>85</sup></a> Requests and escape sequences in GNU <code class="code">troff</code> interpret +arguments that represent a type size in scaled points, which the +formatter multiplies by <var class="var">sizescale</var> and converts to an integer. +Arguments treated in this way comprise those to the escape sequences +<code class="code">\H</code> and <code class="code">\s</code>, to the request <code class="code">ps</code>, the third argument to +the <code class="code">cs</code> request, and the second and fourth arguments to the +<code class="code">tkf</code> request. Scaled points may be specified explicitly with the +<code class="code">z</code> scaling unit. +</p> +<p>For example, if <var class="var">sizescale</var> is 1000, then a scaled point is one +thousandth of a point. The request ‘<samp class="samp">.ps 10.5</samp>’ is synonymous with +‘<samp class="samp">.ps 10.5z</samp>’ and sets the type size to 10,500 scaled points, or +10.5 points. Consequently, in GNU <code class="code">troff</code>, the register +<code class="code">.s</code> can interpolate a non-integral type size. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002eps_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ps]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eps_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eps-3"></a> +<p>This read-only register interpolates the type size in scaled points; it +is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<p>It makes no sense to use the ‘<samp class="samp">z</samp>’ scaling unit in a numeric +expression whose default scaling unit is neither ‘<samp class="samp">u</samp>’ nor ‘<samp class="samp">z</samp>’, +so GNU <code class="code">troff</code> disallows this. Similarly, it is nonsensical to use +a scaling unit other than ‘<samp class="samp">z</samp>’ or ‘<samp class="samp">u</samp>’ in a numeric expression +whose default scaling unit is ‘<samp class="samp">z</samp>’, and so GNU <code class="code">troff</code> +disallows this as well. +</p> +<p>Another GNU <code class="code">troff</code> scaling unit, ‘<samp class="samp">s</samp>’, multiplies by the +number of basic units in a scaled point. Thus, ‘<samp class="samp">\n[.ps]s</samp>’ is equal +to ‘<samp class="samp">1m</samp>’ by definition. Do not confuse the ‘<samp class="samp">s</samp>’ and ‘<samp class="samp">z</samp>’ +scaling units. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002epsr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.psr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epsr_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002epsr"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esr_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002esr"></a> +<a class="index-entry-id" id="index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029"></a> +<a class="index-entry-id" id="index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a> +<a class="index-entry-id" id="index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029"></a> +<a class="index-entry-id" id="index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a> +<a class="index-entry-id" id="index-_002eps-register_002c-in-comparison-with-_002epsr"></a> +<a class="index-entry-id" id="index-_002es-register_002c-in-comparison-with-_002esr"></a> +<p>Output devices may be limited in the type sizes they can employ. The +<code class="code">.s</code> and <code class="code">.ps</code> registers represent the type size selected by +the output driver as it understands a device’s capability. The last +<em class="emph">requested</em> type size is interpolated in scaled points by the +read-only register <code class="code">.psr</code> and in points as a decimal fraction by +the read-only string-valued register <code class="code">.sr</code>. Both are associated +with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p> +<p>For example, if a type size of 10.95 points is requested, and the +nearest size permitted by a <code class="code">sizes</code> request (or by the <code class="code">sizes</code> +or <code class="code">sizescale</code> directives in the device’s <samp class="file">DESC</samp> file) is 11 +points, the output driver uses the latter value. +</p></dd></dl> + +<p>The <code class="code">\s</code> escape sequence offers the following syntax forms that +work with fractional type sizes and accept scaling units. You may of +course give them integral arguments. The delimited forms need not use +the neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. +</p> +<dl class="table"> +<dt><code class="code">\s[<var class="var">n</var>]</code></dt> +<dt><code class="code">\s'<var class="var">n</var>'</code></dt> +<dd><p>Set the type size to <var class="var">n</var> scaled points; <var class="var">n</var> is a +numeric expression with a default scaling unit of ‘<samp class="samp">z</samp>’. +</p> +</dd> +<dt><code class="code">\s[+<var class="var">n</var>]</code></dt> +<dt><code class="code">\s[-<var class="var">n</var>]</code></dt> +<dt><code class="code">\s+[<var class="var">n</var>]</code></dt> +<dt><code class="code">\s-[<var class="var">n</var>]</code></dt> +<dt><code class="code">\s'+<var class="var">n</var>'</code></dt> +<dt><code class="code">\s'-<var class="var">n</var>'</code></dt> +<dt><code class="code">\s+'<var class="var">n</var>'</code></dt> +<dt><code class="code">\s-'<var class="var">n</var>'</code></dt> +<dd><p>Increase or decrease the type size by <var class="var">n</var> scaled points; +<var class="var">n</var> is a numeric expression (which may start with a minus sign) +with a default scaling unit of ‘<samp class="samp">z</samp>’. +</p></dd> +</dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Colors"> +<div class="nav-panel"> +<p> +Next: <a href="#Strings" accesskey="n" rel="next">Strings</a>, Previous: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Colors-1">5.21 Colors</h3> +<a class="index-entry-id" id="index-colors"></a> + +<a class="index-entry-id" id="index-stroke-color"></a> +<a class="index-entry-id" id="index-color_002c-stroke"></a> +<a class="index-entry-id" id="index-fill-color"></a> +<a class="index-entry-id" id="index-color_002c-fill"></a> +<p>GNU <code class="code">troff</code> supports color output with a variety of color spaces +and up to 16 bits per channel. Some devices, particularly terminals, +may be more limited. When color support is enabled, two colors are +current at any given time: the <em class="dfn">stroke color</em>, with which glyphs, +rules (lines), and geometric objects like circles and polygons are +drawn, and the <em class="dfn">fill color</em>, which can be used to paint the interior +of a closed geometric figure. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.color</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecolor'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-color"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecolor_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.color]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecolor_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ecolor-1"></a> +<p>If <var class="var">n</var> is missing or non-zero, enable the output of color-related +device-independent output commands (this is the default); otherwise, +disable them. This request sets a global flag; it does not produce an +input token (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>). +</p> +<p>The read-only register <code class="code">.color</code> is 1 if colors are enabled, +0 otherwise. +</p> +<p>Color can also be disabled with the <samp class="option">-c</samp> command-line option. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edefcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.defcolor</code></strong> <var class="def-var-arguments">ident scheme color-component …</var><a class="copiable-link" href='#index-_002edefcolor'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-defcolor"></a> +<p>Define a color named <var class="var">ident</var>. <var class="var">scheme</var> selects a color space +and determines the quantity of required <var class="var">color-component</var>s; it must +be one of ‘<samp class="samp">rgb</samp>’ (three components), ‘<samp class="samp">cmy</samp>’ (three), ‘<samp class="samp">cmyk</samp>’ +(four), or ‘<samp class="samp">gray</samp>’ (one). ‘<samp class="samp">grey</samp>’ is accepted as a synonym of +‘<samp class="samp">gray</samp>’. The color components can be encoded as a single +hexadecimal value starting with ‘<samp class="samp">#</samp>’ or ‘<samp class="samp">##</samp>’. The former +indicates that each component is in the range 0–255 (0–FF), the latter +the range 0–65,535 (0–FFFF). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.defcolor half gray #7f +.defcolor pink rgb #FFC0CB +.defcolor magenta rgb ##ffff0000ffff +</pre></div></div> + +<a class="index-entry-id" id="index-f-scaling-unit"></a> +<a class="index-entry-id" id="index-unit_002c-scaling_002c-f"></a> +<a class="index-entry-id" id="index-scaling-unit-f"></a> +<p>Alternatively, each color component can be specified as a decimal +fraction in the range 0–1, interpreted using a default scaling +unit of <code class="code">f</code>, which multiplies its value by 65,536 (but +clamps it at 65,535). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.defcolor gray50 rgb 0.5 0.5 0.5 +.defcolor darkgreen rgb 0.1f 0.5f 0.2f +</pre></div></div> +</dd></dl> + +<a class="index-entry-id" id="index-default-color"></a> +<a class="index-entry-id" id="index-color_002c-default"></a> +<p>Each output device has a color named ‘<samp class="samp">default</samp>’, which cannot be +redefined. A device’s default stroke and fill colors are not +necessarily the same. For the <code class="code">dvi</code>, <code class="code">html</code>, <code class="code">pdf</code>, +<code class="code">ps</code>, and <code class="code">xhtml</code> output devices, GNU <code class="code">troff</code> +automatically loads a macro file defining many color names at startup. +By the same mechanism, the devices supported by <code class="code">grotty</code> recognize +the eight standard ISO 6429/EMCA-48 color names.<a class="footnote" id="DOCF86" href="#FOOT86"><sup>86</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002egcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.gcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002egcolor'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-gcolor"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cmc"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\m</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cmc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cm"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cm_0028co"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\m(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cm_0028co'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cm_005bcolor_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\m[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cm_005bcolor_005d'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002em_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.m]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002em_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002em"></a> +<p>Set the stroke color to <var class="var">color</var>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.gcolor red +The next words +.gcolor +\m[red]are in red\m[] +and these words are in the previous color. +</pre></div></div> + +<p>The escape sequence <code class="code">\m[]</code> restores the previous stroke color, as +does a <code class="code">gcolor</code> request without an argument. +</p> +<a class="index-entry-id" id="index-stroke-color-name-register-_0028_002em_0029"></a> +<a class="index-entry-id" id="index-name_002c-stroke-color_002c-register-_0028_002em_0029"></a> +<a class="index-entry-id" id="index-color-name_002c-stroke_002c-register-_0028_002em_0029"></a> +<p>The name of the current stroke color is available in the read-only +string-valued register ‘<samp class="samp">.m</samp>’; it is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). It interpolates nothing when the stroke color +is the default. +</p> +<p><code class="code">\m</code> doesn’t produce an input token in GNU <code class="code">troff</code> +(see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>). It therefore can be used in requests like +<code class="code">mc</code> (which expects a single character as an argument) to change +the color on the fly: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.mc \m[red]x\m[] +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002efcolor'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fcolor"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cMc"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\M</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cMc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cM"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cM_0028co"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\M(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cM_0028co'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cM_005bcolor_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\M[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cM_005bcolor_005d'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.M]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eM_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eM"></a> +<p>Set the fill color for objects drawn with <code class="code">\D'…'</code> escape +sequences. The escape sequence <code class="code">\M[]</code> restores the previous fill +color, as does an <code class="code">fcolor</code> request without an argument. +</p> +<a class="index-entry-id" id="index-background-color-name-register-_0028_002eM_0029"></a> +<a class="index-entry-id" id="index-name_002c-background-color_002c-register-_0028_002eM_0029"></a> +<a class="index-entry-id" id="index-color-name_002c-background_002c-register-_0028_002eM_0029"></a> +<a class="index-entry-id" id="index-fill-color-name-register-_0028_002eM_0029"></a> +<a class="index-entry-id" id="index-name_002c-fill-color_002c-register-_0028_002eM_0029"></a> +<a class="index-entry-id" id="index-color-name_002c-fill_002c-register-_0028_002eM_0029"></a> +<p>The name of the current fill color is available in the read-only +string-valued register ‘<samp class="samp">.M</samp>’; it is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). It interpolates nothing when the fill color +is the default. <code class="code">\M</code> doesn’t produce an input token in GNU +<code class="code">troff</code>. +</p> +<p>Create an ellipse with a red interior as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\M[red]\h'0.5i'\D'E 2i 1i'\M[] +</pre></div></div> +</dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Strings"> +<div class="nav-panel"> +<p> +Next: <a href="#Conditionals-and-Loops" accesskey="n" rel="next">Conditionals and Loops</a>, Previous: <a href="#Colors" accesskey="p" rel="prev">Colors</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Strings-1">5.22 Strings</h3> +<a class="index-entry-id" id="index-strings"></a> + +<p>GNU <code class="code">troff</code> supports strings primarily for user convenience. +Conventionally, if one would define a macro only to interpolate a small +amount of text, without invoking requests or calling any other macros, +one defines a string instead. Only one string is predefined by the +language. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002a_005b_002eT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.T]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002eT_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eT"></a> +<a class="index-entry-id" id="index-_002eT-1"></a> +<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029-1"></a> +<p>Contains the name of the output device (for example, ‘<samp class="samp">utf8</samp>’ or +‘<samp class="samp">pdf</samp>’). +</p></dd></dl> + +<p>The <code class="code">ds</code> request creates a string with a specified name and +contents and the <code class="code">\*</code> escape sequence dereferences its name, +interpolating its contents. If the string named by the <code class="code">\*</code> escape +sequence does not exist, it is defined as empty, nothing is +interpolated, and a warning in category ‘<samp class="samp">mac</samp>’ is emitted. +See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of +warnings. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eds-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ds-1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eds1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ds1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002an"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\*</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002an'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_002a"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_0028nm"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\*(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002a_0028nm'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\*[</code><span class="r"><i class="slanted">name <span class="sansserif">[</span>arg1 arg2 …<span class="sansserif">]</span></i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-string-interpolation-_0028_005c_002a_0029"></a> +<a class="index-entry-id" id="index-string-expansion-_0028_005c_002a_0029"></a> +<a class="index-entry-id" id="index-interpolation-of-strings-_0028_005c_002a_0029"></a> +<a class="index-entry-id" id="index-expansion-of-strings-_0028_005c_002a_0029"></a> +<a class="index-entry-id" id="index-string-arguments"></a> +<a class="index-entry-id" id="index-arguments_002c-to-strings"></a> +<p>Define a string called <var class="var">name</var> with contents <var class="var">contents</var>. If +<var class="var">name</var> already exists as an alias, the target of the alias is +redefined; see <code class="code">als</code> and <code class="code">rm</code> below. If <code class="code">ds</code> is called +with only one argument, <var class="var">name</var> is defined as an empty string. +Otherwise, GNU <code class="code">troff</code> stores <var class="var">contents</var> in copy +mode.<a class="footnote" id="DOCF87" href="#FOOT87"><sup>87</sup></a> +</p> +<p>The <code class="code">\*</code> escape sequence interpolates a previously defined string +variable <var class="var">name</var> (one-character name <var class="var">n</var>, two-character name +<var class="var">nm</var>). The bracketed interpolation form accepts arguments that are +handled as macro arguments are; recall <a class="ref" href="#Calling-Macros">Calling Macros</a>. In +contrast to macro calls, however, if a closing bracket ‘<samp class="samp">]</samp>’ occurs +in a string argument, that argument must be enclosed in double quotes. +<code class="code">\*</code> is interpreted even in copy mode. When defining strings, +argument interpolations must be escaped if they are to reference +parameters from the calling context; See <a class="xref" href="#Parameters">Parameters</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds cite (\\$1, \\$2) +Gray codes are explored in \*[cite Morgan 1998]. + ⇒ Gray codes are explored in (Morgan, 1998). +</pre></div></div> + + +<a class="index-entry-id" id="index-trailing-spaces-in-string-definitions-and-appendments"></a> +<a class="index-entry-id" id="index-comments_002c-with-ds"></a> +<a class="index-entry-id" id="index-ds-request_002c-and-comments"></a> +<p><strong class="strong">Caution:</strong> Unlike other requests, the second argument to the +<code class="code">ds</code> request consumes the remainder of the input line, including +trailing spaces. This means that comments on a line with such a request +can introduce unwanted space into a string when they are set off from +the material they annotate, as is conventional. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \" water +</pre></div></div> + +<p>Instead, place the comment on another line or put the comment escape +sequence immediately adjacent to the last character of the string. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\" water +</pre></div></div> + +<p>Ending string definitions (and appendments) with a comment, even an +empty one, prevents unwanted space from creeping into them during source +document maintenance. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds author Alice Pleasance Liddell\" +.ds empty \" might be appended to later with .as +</pre></div></div> + +<a class="index-entry-id" id="index-trailing-double-quotes-in-strings"></a> +<a class="index-entry-id" id="index-double-quotes_002c-trailing_002c-in-strings"></a> +<a class="index-entry-id" id="index-ds-request_002c-and-double-quotes"></a> +<a class="index-entry-id" id="index-leading-spaces-with-ds"></a> +<a class="index-entry-id" id="index-spaces-with-ds"></a> +<a class="index-entry-id" id="index-ds-request_002c-and-leading-spaces"></a> +<p>An initial neutral double quote <code class="code">"</code> in <var class="var">contents</var> is stripped +to allow embedding of leading spaces. Any other <code class="code">"</code> is interpreted +literally, but it is wise to use the special character escape sequence +<code class="code">\[dq]</code> instead if the string might be interpolated as part of a +macro argument; see <a class="ref" href="#Calling-Macros">Calling Macros</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds salutation " Yours in a white wine sauce,\" +.ds c-var-defn " char mydate[]=\[dq]2020-07-29\[dq];\" +</pre></div></div> + +<a class="index-entry-id" id="index-multi_002dline-strings"></a> +<a class="index-entry-id" id="index-strings_002c-multi_002dline"></a> +<a class="index-entry-id" id="index-newline-character_002c-in-strings_002c-escaping"></a> +<a class="index-entry-id" id="index-escaping-newline-characters_002c-in-strings"></a> +<p>Strings are not limited to a single input line of text. +<code class="code">\<kbd class="key">RET</kbd></code> works just as it does elsewhere. The resulting string +is stored <em class="emph">without</em> the newlines. Care is therefore required when +interpolating strings while filling is disabled. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds foo This string contains \ +text on multiple lines \ +of input. +</pre></div></div> + +<p>It is not possible to embed a newline in a string that will be +interpreted as such when the string is interpolated. To achieve that +effect, use <code class="code">\*</code> to interpolate a macro instead; see <a class="ref" href="#Punning-Names">Punning Names</a>. +</p> +<p>Because strings are similar to macros, they too can be defined so as to +suppress AT&T <code class="code">troff</code> compatibility mode when used; see +<a class="ref" href="#Writing-Macros">Writing Macros</a> and <a class="ref" href="#Compatibility-Mode">Compatibility Mode</a>. The <code class="code">ds1</code> +request defines a string such that compatibility mode is off when the +string is later interpolated. To be more precise, a <em class="dfn">compatibility +save</em> input token is inserted at the beginning of the string, and a +<em class="dfn">compatibility restore</em> input token at the end. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr xxx 12345 +.ds aa The value of xxx is \\n[xxx]. +.ds1 bb The value of xxx is \\n[xxx]. +. +.cp 1 +. +\*(aa + error→ warning: register '[' not defined + ⇒ The value of xxx is 0xxx]. +\*(bb + ⇒ The value of xxx is 12345. +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eas"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-as"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eas1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-as1"></a> +<a class="index-entry-id" id="index-appending-to-a-string-_0028as_0029"></a> +<a class="index-entry-id" id="index-string_002c-appending-_0028as_0029"></a> +<p>The <code class="code">as</code> request is similar to <code class="code">ds</code> but appends <var class="var">contents</var> +to the string stored as <var class="var">name</var> instead of redefining it. If +<var class="var">name</var> doesn’t exist yet, it is created. If <code class="code">as</code> is called +with only one argument, no operation is performed (beyond dereferencing +the string). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.as salutation " with shallots, onions and garlic,\" +</pre></div></div> + +<p>The <code class="code">as1</code> request is similar to <code class="code">as</code>, but compatibility mode +is switched off when the appended portion of the string is later +interpolated. To be more precise, a <em class="dfn">compatibility save</em> input +token is inserted at the beginning of the appended string, and a +<em class="dfn">compatibility restore</em> input token at the end. +</p></dd></dl> + +<p>Several requests exist to perform rudimentary string operations. +Strings can be queried (<code class="code">length</code>) and modified (<code class="code">chop</code>, +<code class="code">substring</code>, <code class="code">stringup</code>, <code class="code">stringdown</code>), and their names +can be manipulated through renaming, removal, and aliasing (<code class="code">rn</code>, +<code class="code">rm</code>, <code class="code">als</code>). +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elength"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.length</code></strong> <var class="def-var-arguments">reg anything</var><a class="copiable-link" href='#index-_002elength'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-length"></a> +<a class="index-entry-id" id="index-length-of-a-string-_0028length_0029"></a> +<a class="index-entry-id" id="index-string_002c-length-of-_0028length_0029"></a> +<a class="index-entry-id" id="index-length-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-length-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-length-request"></a> +<p>Compute the number of characters of <var class="var">anything</var> and store the count +in the register <var class="var">reg</var>. If <var class="var">reg</var> doesn’t exist, it is created. +<var class="var">anything</var> is read in copy mode. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds xxx abcd\h'3i'efgh +.length yyy \*[xxx] +\n[yyy] + ⇒ 14 +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002echop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.chop</code></strong> <var class="def-var-arguments">object</var><a class="copiable-link" href='#index-_002echop'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-chop"></a> +<p>Remove the last character from the macro, string, or diversion named +<var class="var">object</var>. This is useful for removing the newline from the end of a +diversion that is to be interpolated as a string. This request can be +used repeatedly on the same <var class="var">object</var>; see <a class="ref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>, +for details on nodes inserted additionally by GNU <code class="code">troff</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esubstring"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.substring</code></strong> <var class="def-var-arguments">str start [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002esubstring'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-substring"></a> +<a class="index-entry-id" id="index-substring-_0028substring_0029"></a> +<p>Replace the string named <var class="var">str</var> with its substring bounded by the +indices <var class="var">start</var> and <var class="var">end</var>, inclusively. The first character in +the string has index 0. If <var class="var">end</var> is omitted, it is implicitly +set to the largest valid value (the string length minus one). Negative +indices count backward from the end of the string: the last character +has index −1, the character before the last has +index −2, and so on. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds xxx abcdefgh +.substring xxx 1 -4 +\*[xxx] + ⇒ bcde +.substring xxx 2 +\*[xxx] + ⇒ de +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002estringdown"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringdown</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringdown'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-stringdown"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002estringup"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringup</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringup'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-stringup"></a> +<a class="index-entry-id" id="index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029"></a> +<a class="index-entry-id" id="index-uppercasing-a-string-_0028stringup_0029"></a> +<a class="index-entry-id" id="index-lowercasing-a-string-_0028stringdown_0029"></a> +<a class="index-entry-id" id="index-up_002dcasing-a-string-_0028stringup_0029"></a> +<a class="index-entry-id" id="index-down_002dcasing-a-string-_0028stringdown_0029"></a> +<p>Alter the string named <var class="var">str</var> by replacing each of its bytes with its +lowercase (<code class="code">stringdown</code>) or uppercase (<code class="code">stringup</code>) version (if +one exists). Special characters in the string will often transform in +the expected way due to the regular naming convention for accented +characters. When they do not, use substrings and/or catenation. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds resume R\['e]sum\['e] +\*[resume] +.stringdown resume +\*[resume] +.stringup resume +\*[resume] + ⇒ Résumé résumé RÉSUMÉ +</pre></div></div> +</dd></dl> + +<p>(In practice, we would end the <code class="code">ds</code> request with a comment escape +<code class="code">\"</code> to prevent space from creeping into the definition during +source document maintenance.) +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rn</code></strong> <var class="def-var-arguments">old new</var><a class="copiable-link" href='#index-_002ern'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rn"></a> +<a class="index-entry-id" id="index-renaming-request-_0028rn_0029"></a> +<a class="index-entry-id" id="index-request_002c-renaming-_0028rn_0029"></a> +<a class="index-entry-id" id="index-renaming-macro-_0028rn_0029"></a> +<a class="index-entry-id" id="index-macro_002c-renaming-_0028rn_0029"></a> +<a class="index-entry-id" id="index-renaming-string-_0028rn_0029"></a> +<a class="index-entry-id" id="index-string_002c-renaming-_0028rn_0029"></a> +<a class="index-entry-id" id="index-renaming-diversion-_0028rn_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-renaming-_0028rn_0029"></a> +<p>Rename the request, macro, diversion, or string <var class="var">old</var> to <var class="var">new</var>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002erm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rm</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002erm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rm"></a> +<a class="index-entry-id" id="index-removing-request-_0028rm_0029"></a> +<a class="index-entry-id" id="index-request_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-macro-_0028rm_0029"></a> +<a class="index-entry-id" id="index-macro_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-string-_0028rm_0029"></a> +<a class="index-entry-id" id="index-string_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-diversion-_0028rm_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-removing-_0028rm_0029"></a> +<p>Remove the request, macro, diversion, or string <var class="var">name</var>. GNU +<code class="code">troff</code> treats subsequent invocations as if the name had never +been defined. +</p></dd></dl> + +<a class="anchor" id="als"></a><dl class="first-deffn"> +<dt class="deffn" id="index-_002eals"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.als</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002eals'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-als"></a> +<a class="index-entry-id" id="index-alias_002c-string_002c-creating-_0028als_0029"></a> +<a class="index-entry-id" id="index-alias_002c-macro_002c-creating-_0028als_0029"></a> +<a class="index-entry-id" id="index-alias_002c-diversion_002c-creating-_0028als_0029"></a> +<a class="index-entry-id" id="index-creating-alias_002c-for-string-_0028als_0029"></a> +<a class="index-entry-id" id="index-creating-alias_002c-for-macro-_0028als_0029"></a> +<a class="index-entry-id" id="index-creating-alias_002c-for-diversion-_0028als_0029"></a> +<a class="index-entry-id" id="index-string_002c-creating-alias-for-_0028als_0029"></a> +<a class="index-entry-id" id="index-macro_002c-creating-alias-for-_0028als_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-creating-alias-for-_0028als_0029"></a> +<p>Create an alias <var class="var">new</var> for the existing request, string, macro, or +diversion object named <var class="var">old</var>, causing the names to refer to the same +stored object. If <var class="var">old</var> is undefined, a warning in category +‘<samp class="samp">mac</samp>’ is produced, and the request is ignored. See <a class="xref" href="#Warnings">Warnings</a>, +for information about the enablement and suppression of warnings. +</p> +<p>To understand how the <code class="code">als</code> request works, consider two different +storage pools: one for objects (macros, strings, etc.), and another +for names. As soon as an object is defined, GNU <code class="code">troff</code> adds it to +the object pool, adds its name to the name pool, and creates a link +between them. When <code class="code">als</code> creates an alias, it adds a new name to +the name pool that gets linked to the same object as the old name. +</p> +<p>Now consider this example. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de foo +.. +. +.als bar foo +. +.de bar +. foo +.. +. +.bar + error→ input stack limit exceeded (probable infinite + error→ loop) +</pre></div></div> + +<p>In the above, <code class="code">bar</code> remains an <em class="emph">alias</em>—another name +for—the object referred to by <code class="code">foo</code>, which the second <code class="code">de</code> +request replaces. Alternatively, imagine that the <code class="code">de</code> request +<em class="emph">dereferences</em> its argument before replacing it. Either way, the +result of calling <code class="code">bar</code> is a recursive loop that finally leads to +an error. See <a class="xref" href="#Writing-Macros">Writing Macros</a>. +</p> +<a class="index-entry-id" id="index-alias_002c-string_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-alias_002c-macro_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-alias_002c-diversion_002c-removing-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-alias_002c-for-string-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-alias_002c-for-macro-_0028rm_0029"></a> +<a class="index-entry-id" id="index-removing-alias_002c-for-diversion-_0028rm_0029"></a> +<a class="index-entry-id" id="index-string_002c-removing-alias-for-_0028rm_0029"></a> +<a class="index-entry-id" id="index-macro_002c-removing-alias-for-_0028rm_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-removing-alias-for-_0028rm_0029"></a> +<p>To remove an alias, call <code class="code">rm</code> on its name. The object itself is +not destroyed until it has no more names. +</p> +<p>When a request, macro, string, or diversion is aliased, redefinitions +and appendments “write through” alias names. To replace an alias with +a separately defined object, you must use the <code class="code">rm</code> request on its +name first. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Conditionals-and-Loops"> +<div class="nav-panel"> +<p> +Next: <a href="#Writing-Macros" accesskey="n" rel="next">Writing Macros</a>, Previous: <a href="#Strings" accesskey="p" rel="prev">Strings</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Conditionals-and-Loops-1">5.23 Conditionals and Loops</h3> +<a class="index-entry-id" id="index-conditionals-and-loops"></a> +<a class="index-entry-id" id="index-loops-and-conditionals"></a> + +<p><code class="code">groff</code> has <code class="code">if</code> and <code class="code">while</code> control structures like +other languages. However, the syntax for grouping multiple input lines +in the branches or bodies of these structures is unusual. +</p> + + +<ul class="mini-toc"> +<li><a href="#Operators-in-Conditionals" accesskey="1">Operators in Conditionals</a></li> +<li><a href="#if_002dthen" accesskey="2">if-then</a></li> +<li><a href="#if_002delse" accesskey="3">if-else</a></li> +<li><a href="#Conditional-Blocks" accesskey="4">Conditional Blocks</a></li> +<li><a href="#while" accesskey="5">while</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Operators-in-Conditionals"> +<div class="nav-panel"> +<p> +Next: <a href="#if_002dthen" accesskey="n" rel="next">if-then</a>, Previous: <a href="#Conditionals-and-Loops" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Operators-in-Conditionals-1">5.23.1 Operators in Conditionals</h4> + +<a class="index-entry-id" id="index-if-request_002c-operators-to-use-with"></a> +<a class="index-entry-id" id="index-ie-request_002c-operators-to-use-with"></a> +<a class="index-entry-id" id="index-while-request_002c-operators-to-use-with"></a> +<a class="index-entry-id" id="index-conditional-expressions"></a> +<a class="index-entry-id" id="index-expressions_002c-conditional"></a> +<p>In <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests, in addition to the +numeric expressions described in <a class="ref" href="#Numeric-Expressions">Numeric Expressions</a>, several +Boolean operators are available; the members of this expanded class are +termed <em class="dfn">conditional expressions</em>. +</p> +<dl class="table"> +<dt><code class="code">c <var class="var">glyph</var></code></dt> +<dd><p>True if <var class="var">glyph</var> is available, where <var class="var">glyph</var> is an ordinary +character, a special character ‘<samp class="samp">\(<var class="var">xx</var></samp>’ or ‘<samp class="samp">\[<var class="var">xxx</var>]</samp>’, +‘<samp class="samp">\N'<var class="var">xxx</var>'</samp>’, or has been defined by any of the <code class="code">char</code>, +<code class="code">fchar</code>, <code class="code">fschar</code>, or <code class="code">schar</code> requests. +</p> +</dd> +<dt><code class="code">d <var class="var">name</var></code></dt> +<dd><p>True if a string, macro, diversion, or request called <var class="var">name</var> exists. +</p> +</dd> +<dt><code class="code">e</code></dt> +<dd><p>True if the current page is even-numbered. +</p> +</dd> +<dt><code class="code">F <var class="var">font</var></code></dt> +<dd><p>True if <var class="var">font</var> exists. <var class="var">font</var> is handled as if it were opened +with the <code class="code">ft</code> request (that is, font translation and styles are +applied), without actually mounting it. +</p> +</dd> +<dt><code class="code">m <var class="var">color</var></code></dt> +<dd><p>True if <var class="var">color</var> is defined. +</p> +</dd> +<dt id='index-conditional-output-for-terminal-_0028TTY_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-conditional-output-for-terminal-_0028TTY_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-TTY_002c-conditional-output-for"></a> +<a class="index-entry-id" id="index-terminal_002c-conditional-output-for"></a> +<p>True if the document is being processed in <code class="code">nroff</code> mode. +See <a class="xref" href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>. +</p> +</dd> +<dt><code class="code">o</code></dt> +<dd><p>True if the current page is odd-numbered. +</p> +</dd> +<dt><code class="code">r <var class="var">register</var></code></dt> +<dd><p>True if <var class="var">register</var> exists. +</p> +</dd> +<dt><code class="code">S <var class="var">style</var></code></dt> +<dd><p>True if <var class="var">style</var> is available for the current font family. Font +translation is applied. +</p> +</dd> +<dt><code class="code">t</code></dt> +<dd><p>True if the document is being processed in <code class="code">troff</code> mode. +See <a class="xref" href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>. +</p> +<a class="index-entry-id" id="index-vtroff"></a> +</dd> +<dt><code class="code">v</code></dt> +<dd><p>Always false. This condition is recognized only for compatibility with +certain other <code class="code">troff</code> implementations.<a class="footnote" id="DOCF88" href="#FOOT88"><sup>88</sup></a> +</p></dd> +</dl> + +<p>If the first argument to an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code> +request begins with a non-alphanumeric character apart from <code class="code">!</code> +(see below); it performs an <i class="slanted">output comparison test</i>. +<a class="footnote" id="DOCF89" href="#FOOT89"><sup>89</sup></a> +</p> +<a class="index-entry-id" id="index-output-comparison-operator"></a> +<dl class="table"> +<dt><code class="code"><code class="code">'</code><var class="var">xxx</var><code class="code">'</code><var class="var">yyy</var><code class="code">'</code></code></dt> +<dd><p>True if formatting the comparands <var class="var">xxx</var> and <var class="var">yyy</var> produces the +same output commands. The delimiter need not be a neutral apostrophe: +the output comparison operator accepts the same delimiters as most +escape sequences; see <a class="ref" href="#Delimiters">Delimiters</a>. This <em class="dfn">output comparison +operator</em> formats <var class="var">xxx</var> and <var class="var">yyy</var> in separate environments; +after the comparison, the resulting data are discarded. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ie "|"\fR|\fP" true +.el false + ⇒ true +</pre></div></div> + +<p>The resulting glyph properties, including font family, style, size, and +slant, must match, but not necessarily the requests and/or escape +sequences used to obtain them. In the previous example, ‘<samp class="samp">|</samp>’ and +‘<samp class="samp">\fR|\fP</samp>’ result in ‘<samp class="samp">|</samp>’ glyphs in the same typefaces at the +same positions, so the comparands are equal. If ‘<samp class="samp">.ft I</samp>’ had +been added before the ‘<samp class="samp">.ie</samp>’, they would differ: the first ‘<samp class="samp">|</samp>’ +would produce an italic ‘<samp class="samp">|</samp>’, not a roman one. Motions must match +in orientation and magnitude to within the applicable horizontal and +vertical motion quanta of the device, after rounding. ‘<samp class="samp">.if +"\u\d"\v'0'"</samp>’ is false even though both comparands result in zero net +motion, because motions are not interpreted or optimized but sent as-is +to the output.<a class="footnote" id="DOCF90" href="#FOOT90"><sup>90</sup></a> On the other hand, ‘<samp class="samp">.if "\d"\v'0.5m'"</samp>’ is true, because +<code class="code">\d</code> is defined as a downward motion of one-half em.<a class="footnote" id="DOCF91" href="#FOOT91"><sup>91</sup></a> +</p> +<a class="index-entry-id" id="index-string-comparison"></a> +<a class="index-entry-id" id="index-comparison-of-strings"></a> +<p>Surround the comparands with <code class="code">\?</code> to avoid formatting them; this +causes them to be compared character by character, as with string +comparisons in other programming languages. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ie "\?|\?"\?\fR|\fP\?" true +.el false + ⇒ false +</pre></div></div> + +<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f"></a> +<p>Since comparands protected with <code class="code">\?</code> are read in copy mode +(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>), they need not even be valid <code class="code">groff</code> syntax. +The escape character is still lexically recognized, however, and +consumes the next character. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds a \[ +.ds b \[ +.if '\?\*a\?'\?\*b\?' a and b equivalent +.if '\?\\?'\?\\?' backslashes equivalent + ⇒ a and b equivalent +</pre></div></div> +</dd> +</dl> + +<p>The above operators can’t be combined with most others, but a leading +‘<samp class="samp">!</samp>’, not followed immediately by spaces or tabs, complements an +expression. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr x 1 +.ie !r x register x is not defined +.el register x is defined + ⇒ register x is defined +</pre></div></div> + +<p>Spaces and tabs are optional immediately after the ‘<samp class="samp">c</samp>’, ‘<samp class="samp">d</samp>’, +‘<samp class="samp">F</samp>’, ‘<samp class="samp">m</samp>’, ‘<samp class="samp">r</samp>’, and ‘<samp class="samp">S</samp>’ operators, but right after +‘<samp class="samp">!</samp>’, they end the predicate and the conditional evaluates +true.<a class="footnote" id="DOCF92" href="#FOOT92"><sup>92</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr x 1 +.ie ! r x register x is not defined +.el register x is defined + ⇒ r x register x is not defined +</pre></div></div> + +<p>The unexpected ‘<samp class="samp">r x</samp>’ in the output is a clue that our conditional +was not interpreted as we planned, but matters may not always be so +obvious. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="if_002dthen"> +<div class="nav-panel"> +<p> +Next: <a href="#if_002delse" accesskey="n" rel="next">if-else</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="if_002dthen-1">5.23.2 if-then</h4> +<a class="index-entry-id" id="index-if_002dthen"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eif"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.if</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eif'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-if"></a> +<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and if it evaluates +true (or to a positive value), interpret the remainder of the line +<var class="var">anything</var> as if it were an input line. Recall from <a class="ref" href="#Invoking-Requests">Invoking Requests</a> that any quantity of spaces between arguments to requests +serves only to separate them; leading spaces in <var class="var">anything</var> are thus +not seen. <var class="var">anything</var> effectively <em class="emph">cannot</em> be omitted; if +<var class="var">cond-expr</var> is true and <var class="var">anything</var> is empty, the newline at the +end of the control line is interpreted as a blank input line (and +therefore a blank text line). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">super\c +tanker +.nr force-word-break 1 +super\c +.if ((\n[force-word-break] = 1) & \n[.int]) +tanker + ⇒ supertanker super tanker +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nop</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002enop'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nop"></a> +<p>Interpret <var class="var">anything</var> as if it were an input line. This is similar +to ‘<samp class="samp">.if 1</samp>’. <code class="code">nop</code> is not really “no operation”; its +argument <em class="emph">is</em> processed—unconditionally. It can be used to cause +text lines to share indentation with surrounding control lines. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.als real-MAC MAC +.de wrapped-MAC +. tm MAC: called with arguments \\$@ +. nop \\*[real-MAC]\\ +.. +.als MAC wrapped-MAC +\# Later... +.als MAC real-MAC +</pre></div></div> + +<p>In the above, we’ve used aliasing, <code class="code">nop</code>, and the interpolation of +a macro as a string to interpose a wrapper around the macro ‘<samp class="samp">MAC</samp>’ +(perhaps to debug it). +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="if_002delse"> +<div class="nav-panel"> +<p> +Next: <a href="#while" accesskey="n" rel="next">while</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="if_002delse-1">5.23.3 if-else</h4> +<a class="index-entry-id" id="index-if_002delse"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eie"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ie</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eie'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ie"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eel"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.el</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002eel'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-el"></a> +<p>Use the <code class="code">ie</code> and <code class="code">el</code> requests to write an if-then-else. The +first request is the “if” part and the latter is the “else” part. +Unusually among programming languages, any number of non-conditional +requests may be interposed between the <code class="code">ie</code> branch and the +<code class="code">el</code> branch. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 0 +.ie \na a is non-zero. +.nr a +1 +.el a was not positive but is now \na. + ⇒ a was not positive but is now 1. +</pre></div></div> + +<p>Another way in which <code class="code">el</code> is an ordinary request is that it does +not lexically “bind” more tightly to its <code class="code">ie</code> counterpart than it +does to any other request. This fact can surprise C programmers. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 1 +.nr z 0 +.ie \nz \ +. ie \na a is true +. el a is false +.el z is false + error→ warning: unbalanced 'el' request + ⇒ a is false +</pre></div></div> + +<p>To conveniently nest conditionals, keep reading. +</p> +</dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Conditional-Blocks"> +<div class="nav-panel"> +<p> +Next: <a href="#while" accesskey="n" rel="next">while</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Conditional-Blocks-1">5.23.4 Conditional Blocks</h4> +<a class="index-entry-id" id="index-conditional-blocks"></a> +<a class="index-entry-id" id="index-blocks_002c-conditional"></a> + +<p>It is frequently desirable for a control structure to govern more than +one request, macro call, text line, or a combination of the foregoing. +The opening and closing brace escape sequences <code class="code">\{</code> and <code class="code">\}</code> +define such groups. These <em class="dfn">conditional blocks</em> can furthermore be +nested. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_007b-2"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\{</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007b-2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_007b"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_007d-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\}</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007d-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_007b-1"></a> +<a class="index-entry-id" id="index-_005c_007d"></a> +<a class="index-entry-id" id="index-beginning-of-conditional-block-_0028_005c_007b_0029"></a> +<a class="index-entry-id" id="index-end-of-conditional-block-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-conditional-block_002c-beginning-_0028_005c_007b_0029"></a> +<a class="index-entry-id" id="index-conditional-block_002c-end-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029"></a> +<a class="index-entry-id" id="index-block_002c-conditional_002c-end-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029"></a> +<a class="index-entry-id" id="index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029"></a> +<a class="index-entry-id" id="index-opening-brace-escape-sequence-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-closing-brace-escape-sequence-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029"></a> +<a class="index-entry-id" id="index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029"></a> +<p><code class="code">\{</code> begins a conditional block; it must appear (after optional +spaces and tabs) immediately subsequent to the conditional expression of +an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code> +request,<a class="footnote" id="DOCF93" href="#FOOT93"><sup>93</sup></a> or as the argument to an <code class="code">el</code> +request. +</p> +<p><code class="code">\}</code> ends a condition block and should appear on a line with other +occurrences of itself as necessary to match <code class="code">\{</code> sequences. It +can be preceded by a control character, spaces, and tabs. Input after +any quantity of <code class="code">\}</code> sequences on the same line is processed only +if all of the preceding conditions to which they correspond are true. +Furthermore, a <code class="code">\}</code> closing the body of a <code class="code">while</code> request +must be the last such escape sequence on an input line. +</p> +<p>Brace escape sequences outside of control structures have no meaning and +produce no output. +</p> +<p><strong class="strong">Caution:</strong> Input lines using <code class="code">\{</code> often end with +<code class="code">\RET</code>, especially in macros that consist primarily of control +lines. Forgetting to use <code class="code">\RET</code> on an input line after <code class="code">\{</code> +is a common source of error. +</p></dd></dl> + +<p>We might write the following in a page header macro. If we delete +<code class="code">\RET</code>, the header will carry an unwanted extra empty line (except +on page 1). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.if (\\n[%] != 1) \{\ +. ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title] +. el .tl \\*[odd-numbered-page-title] +.\} +</pre></div></div> + +<p>Let us take a closer look at how conditional blocks nest. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">A +.if 0 \{ B +C +D +\}E +F + ⇒ A F +</pre></div></div> + +<div class="example"> +<div class="group"><pre class="example-preformatted">N +.if 1 \{ O +. if 0 \{ P +Q +R\} S\} T +U + ⇒ N O U +</pre></div></div> + +<p>The above behavior may challenge the intuition; it was implemented to +retain compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>. For clarity, it +is idiomatic to end input lines with <code class="code">\{</code> (followed by +<code class="code">\<kbd class="key">RET</kbd></code> if appropriate), and to precede <code class="code">\}</code> on an input +line with nothing more than a control character, spaces, tabs, and other +instances of itself. +</p> +<p>We can use <code class="code">ie</code>, <code class="code">el</code>, and conditional blocks to simulate the +multi-way “switch” or “case” control structures of other languages. +The following example is adapted from the <code class="code">groff</code> <samp class="file">man</samp> +package. Indentation is used to clarify the logic. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" Simulate switch/case in roff. +. ie '\\$2'1' .ds title General Commands\" +.el \{.ie '\\$2'2' .ds title System Calls\" +.el \{.ie '\\$2'3' .ds title Library Functions\" +.el \{.ie '\\$2'4' .ds title Kernel Interfaces\" +.el \{.ie '\\$2'5' .ds title File Formats\" +.el \{.ie '\\$2'6' .ds title Games\" +.el \{.ie '\\$2'7' .ds title Miscellaneous Information\" +.el \{.ie '\\$2'8' .ds title System Management\" +.el \{.ie '\\$2'9' .ds title Kernel Development\" +.el .ds title \" empty +.\}\}\}\}\}\}\}\} +</pre></div></div> + + +<hr> +</div> +<div class="subsection-level-extent" id="while"> +<div class="nav-panel"> +<p> +Previous: <a href="#if_002delse" accesskey="p" rel="prev">if-else</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="while-1">5.23.5 while</h4> +<a class="index-entry-id" id="index-while"></a> + +<p><code class="code">groff</code> provides a looping construct: the <code class="code">while</code> request. +Its syntax matches the <code class="code">if</code> request. +</p> +<a class="index-entry-id" id="index-body_002c-of-a-while-request"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewhile"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.while</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002ewhile'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-while-1"></a> +<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and repeatedly +execute <var class="var">anything</var> unless and until <var class="var">cond-expr</var> evaluates false. +<var class="var">anything</var>, which is often a conditional block, is referred to as +the <code class="code">while</code> request’s <em class="dfn">body</em>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 0 1 +.while (\na < 9) \{\ +\n+a, +.\} +\n+a + ⇒ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +</pre></div></div> + +<a class="index-entry-id" id="index-de-request_002c-and-while"></a> +<p>GNU <code class="code">troff</code> treats the body of a <code class="code">while</code> request similarly to +that of a <code class="code">de</code> request (albeit one not read in copy +mode<a class="footnote" id="DOCF94" href="#FOOT94"><sup>94</sup></a>), but stores it under an internal name +and deletes it when the loop finishes. The operation of a macro +containing a <code class="code">while</code> request can slow significantly if the +<code class="code">while</code> body is large. Each time the macro is executed, the +<code class="code">while</code> body is parsed and stored again. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de xxx +. nr num 10 +. while (\\n[num] > 0) \{\ +. \" many lines of code +. nr num -1 +. \} +.. +</pre></div></div> + +<a class="index-entry-id" id="index-recursive-macros"></a> +<a class="index-entry-id" id="index-macros_002c-recursive"></a> +<p>An often better solution—and one that is more portable, since +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> lacked the <code class="code">while</code> request—is to +instead write a recursive macro. It will be parsed only +once.<a class="footnote" id="DOCF95" href="#FOOT95"><sup>95</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de yyy +. if (\\n[num] > 0) \{\ +. \" many lines of code +. nr num -1 +. yyy +. \} +.. +. +.de xxx +. nr num 10 +. yyy +.. +</pre></div></div> + +<p>To prevent infinite loops, the default number of available recursion +levels is 1,000 or somewhat less.<a class="footnote" id="DOCF96" href="#FOOT96"><sup>96</sup></a> You can +disable this protective measure, or raise the limit, by setting the +<code class="code">slimit</code> register. See <a class="xref" href="#Debugging">Debugging</a>. +</p> +<p>As noted above, if a <code class="code">while</code> body begins with a conditional block, +its closing brace must end an input line. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.if 1 \{\ +. nr a 0 1 +. while (\n[a] < 10) \{\ +. nop \n+[a] +.\}\} + error→ unbalanced brace escape sequences +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebreak"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.break</code></strong><a class="copiable-link" href='#index-_002ebreak'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-break-2"></a> +<a class="index-entry-id" id="index-while-request_002c-confusing-with-br"></a> +<a class="index-entry-id" id="index-break-request_002c-in-a-while-loop"></a> +<a class="index-entry-id" id="index-continue-request_002c-in-a-while-loop"></a> +<p>Exit a <code class="code">while</code> loop. Do not confuse this request with a +typographical break or the <code class="code">br</code> request. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002econtinue"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.continue</code></strong><a class="copiable-link" href='#index-_002econtinue'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-continue"></a> +<p>Skip the remainder of a <code class="code">while</code> loop’s body, immediately starting +the next iteration. +</p></dd></dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Writing-Macros"> +<div class="nav-panel"> +<p> +Next: <a href="#Page-Motions" accesskey="n" rel="next">Page Motions</a>, Previous: <a href="#Conditionals-and-Loops" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Writing-Macros-1">5.24 Writing Macros</h3> +<a class="index-entry-id" id="index-writing-macros"></a> +<a class="index-entry-id" id="index-macros_002c-writing"></a> + +<p>A <em class="dfn">macro</em> is a stored collection of text and control lines that can +be interpolated multiple times. Use macros to define common operations. +Macros are called in the same way that requests are invoked. While +requests exist for the purpose of creating macros, simply calling an +undefined macro, or interpolating it as a string, will cause it to be +defined as empty. See <a class="xref" href="#Identifiers">Identifiers</a>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ede"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-de"></a> +<p>Define a macro <var class="var">name</var>, replacing the definition of any existing +request, macro, string, or diversion called <var class="var">name</var>. If +<var class="var">name</var> already exists as an alias, the target of the alias is +redefined; recall <a class="ref" href="#Strings">Strings</a>. GNU <code class="code">troff</code> enters copy +mode,<a class="footnote" id="DOCF97" href="#FOOT97"><sup>97</sup></a> storing subsequent input lines as the +macro definition. If the optional second argument is not specified, the +definition ends with the control line ‘<samp class="samp">..</samp>’ (two dots). +Alternatively, <var class="var">end</var> identifies a macro whose call syntax at the +start of a control line ends the definition of <var class="var">name</var>; <var class="var">end</var> is +then called normally. A macro definition must end in the same +conditional block (if any) in which it began (see <a class="pxref" href="#Conditional-Blocks">Conditional Blocks</a>). Spaces or tabs are permitted after the control character in +the line containing this ending token (either ‘<samp class="samp">.</samp>’ or +‘<samp class="samp"><var class="var">end</var></samp>’), but a tab immediately after the token prevents its +recognition as the end of a macro definition. The macro <var class="var">end</var> can +be called with arguments.<a class="footnote" id="DOCF98" href="#FOOT98"><sup>98</sup></a> +</p> +<p>Here is a small example macro called ‘<samp class="samp">P</samp>’ that causes a break and +inserts some vertical space. It could be used to separate paragraphs. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de P +. br +. sp .8v +.. +</pre></div></div> + +<p>We can define one macro within another. Attempting to nest ‘<samp class="samp">..</samp>’ +naïvely will end the outer definition because the inner definition +isn’t interpreted as such until the outer macro is later interpolated. +We can use an end macro instead. Each level of nesting should use a +unique end macro. +</p> +<p>An end macro need not be defined until it is called. This fact enables +a nested macro definition to begin inside one macro and end inside +another. Consider the following example.<a class="footnote" id="DOCF99" href="#FOOT99"><sup>99</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de m1 +. de m2 m3 +you +.. +.de m3 +Hello, +Joe. +.. +.de m4 +do +.. +.m1 +know? +. m3 +What +.m4 +.m2 + ⇒ Hello, Joe. What do you know? +</pre></div></div> + +<p>A nested macro definition <em class="emph">can</em> be terminated with ‘<samp class="samp">..</samp>’ and +nested macros <em class="emph">can</em> reuse end macros, but these control lines must +be escaped multiple times for each level of nesting. The necessity of +this escaping and the utility of nested macro definitions will become +clearer when we employ macro parameters and consider the behavior of +copy mode in detail. +</p></dd></dl> + +<p><code class="code">de</code> defines a macro that inherits the compatibility mode +enablement status of its context (see <a class="pxref" href="#Implementation-Differences">Implementation Differences</a>). +Often it is desirable to make a macro that uses <code class="code">groff</code> features +callable from contexts where compatibility mode is on; for instance, +when writing extensions to a historical macro package. To achieve this, +compatibility mode needs to be switched off while such a macro is +interpreted—without disturbing that state when it is finished. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ede1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-de1"></a> +<p>The <code class="code">de1</code> request defines a macro to be interpreted with +compatibility mode disabled. When <var class="var">name</var> is called, compatibility +mode enablement status is saved; it is restored when the call completes. +Observe the extra backlash before the interpolation of register +‘<samp class="samp">xxx</samp>’; we’ll explore this subject in <a class="ref" href="#Copy-Mode">Copy Mode</a>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr xxx 12345 +.de aa +The value of xxx is \\n[xxx]. +. br +.. +.de1 bb +The value of xxx is \\n[xxx]. +.. +.cp 1 +.aa + error→ warning: register '[' not defined + ⇒ The value of xxx is 0xxx]. +.bb + ⇒ The value of xxx is 12345. +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edei"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-dei"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002edei1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-dei1"></a> +<p>The <code class="code">dei</code> request defines a macro with its name and end +macro indirected through strings. That is, it interpolates strings +named <var class="var">name</var> and <var class="var">end</var> before performing the definition. +</p> +<p>The following examples are equivalent. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds xx aa +.ds yy bb +.dei xx yy +</pre></div></div> + +<div class="example"> +<div class="group"><pre class="example-preformatted">.de aa bb +</pre></div></div> + +<p>The <code class="code">dei1</code> request bears the same relationship to <code class="code">dei</code> as +<code class="code">de1</code> does to <code class="code">de</code>; it temporarily turns compatibility mode +off when <var class="var">name</var> is called. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-am"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eam1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-am1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ami"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ami1"></a> +<a class="index-entry-id" id="index-appending-to-a-macro-_0028am_0029"></a> +<a class="index-entry-id" id="index-macro_002c-appending-to-_0028am_0029"></a> +<p><code class="code">am</code> appends subsequent input lines to macro <var class="var">name</var>, extending +its definition, and otherwise working as <code class="code">de</code> does. +</p> +<p>To make the previously defined ‘<samp class="samp">P</samp>’ macro set indented instead of +block paragraphs, add the necessary code to the existing macro. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.am P +.ti +5n +.. +</pre></div></div> + +<p>The other requests are analogous to their ‘<samp class="samp">de</samp>’ counterparts. The +<code class="code">am1</code> request turns off compatibility mode during interpretation of +the appendment. The <code class="code">ami</code> request appends indirectly, meaning that +strings <var class="var">name</var> and <var class="var">end</var> are interpolated with the resulting +names used before appending. The <code class="code">ami1</code> request is similar to +<code class="code">ami</code>, disabling compatibility mode during interpretation of the +appended lines. +</p></dd></dl> + +<a class="index-entry-id" id="index-trace_002etmac"></a> +<p>Using <samp class="file">trace.tmac</samp>, you can trace calls to <code class="code">de</code>, +<code class="code">de1</code>, <code class="code">am</code>, and <code class="code">am1</code>. You can also use the +<code class="code">backtrace</code> request at any point desired to troubleshoot tricky +spots (see <a class="pxref" href="#Debugging">Debugging</a>). +</p> +<p>See <a class="xref" href="#Strings">Strings</a>, for the <code class="code">als</code>, <code class="code">rm</code>, and <code class="code">rn</code> requests to +create an alias of, remove, and rename a macro, respectively. +</p> +<a class="index-entry-id" id="index-object-creation"></a> +<p>Macro identifiers share their name space with requests, strings, and +diversions; see <a class="ref" href="#Identifiers">Identifiers</a>. The <code class="code">am</code>, <code class="code">as</code>, <code class="code">da</code>, +<code class="code">de</code>, <code class="code">di</code>, and <code class="code">ds</code> requests (together with their +variants) create a new object only if the name of the macro, diversion, +or string is currently undefined or if it is defined as a request; +normally, they modify the value of an existing object. See <a class="xref" href="#als">the +description of the <code class="code">als</code> request</a>, for pitfalls when redefining a +macro that is aliased. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ereturn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.return</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">anything</i></span>]</var><a class="copiable-link" href='#index-_002ereturn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-return"></a> +<p>Exit a macro, immediately returning to the caller. If called with an +argument <var class="var">anything</var>, exit twice—the current macro and the macro +one level higher. This is used to define a wrapper macro for +<code class="code">return</code> in <samp class="file">trace.tmac</samp>. +</p></dd></dl> + + + +<ul class="mini-toc"> +<li><a href="#Parameters" accesskey="1">Parameters</a></li> +<li><a href="#Copy-Mode" accesskey="2">Copy Mode</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Parameters"> +<div class="nav-panel"> +<p> +Next: <a href="#Copy-Mode" accesskey="n" rel="next">Copy Mode</a>, Previous: <a href="#Writing-Macros" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="#Writing-Macros" accesskey="u" rel="up">Writing Macros</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Parameters-1">5.24.1 Parameters</h4> +<a class="index-entry-id" id="index-parameters"></a> + +<p>Macro calls and string interpolations optionally accept a list of +arguments; recall <a class="ref" href="#Calling-Macros">Calling Macros</a>. At the time such an +interpolation takes place, these <em class="dfn">parameters</em> can be examined using +a register and a variety of escape sequences starting with ‘<samp class="samp">\$</samp>’. +All such escape sequences are interpreted even in copy mode, a fact we +shall motivate and explain below (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002e_0024_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.$]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002e_0024_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002e_0024"></a> +<a class="index-entry-id" id="index-parameter-count-register-_0028_002e_0024_0029"></a> +<p>The count of parameters available to a macro or string is kept in this +read-only register. The <code class="code">shift</code> request can change its value. +</p></dd></dl> + +<p>Any individual parameter can be accessed by its position in the list of +arguments to the macro call, numbered from left to right starting at 1, +with one of the following escape sequences. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0024n"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024n'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0024"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0028nn"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$(</code><span class="r"><i class="slanted">nn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0028nn'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005bnnn_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$[</code><span class="r"><i class="slanted">nnn</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_0024_005bnnn_005d'> ¶</a></span></dt> +<dd><p>Interpolate the <var class="var">n</var>th, <var class="var">nn</var>th, or <var class="var">nnn</var>th parameter. The +first form expects only a single digit (1≤<var class="var">n</var>≤9)), the +second two digits (01≤<var class="var">nn</var>≤99)), and the third any +positive integer <var class="var">nnn</var>. Macros and strings accept an unlimited +number of parameters. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eshift"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shift</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002eshift'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-shift"></a> +<p>Shift the parameters <var class="var">n</var> places (1 by default). This is a +“left shift”: what was parameter <var class="var">i</var> becomes parameter +<em class="math"><var class="var">i</var>-<var class="var">n</var></em>. The parameters formerly in positions 1 +to <var class="var">n</var> are no longer available. Shifting by a non-positive +amount performs no operation. The register <code class="code">.$</code> is adjusted +accordingly. +</p></dd></dl> + +<a class="index-entry-id" id="index-copy-mode_002c-and-macro-parameters"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-macro-parameters"></a> +<a class="index-entry-id" id="index-macro_002c-parameters-_0028_005c_0024_0029"></a> +<a class="index-entry-id" id="index-parameters_002c-macro-_0028_005c_0024_0029"></a> +<p>In practice, parameter interpolations are usually seen prefixed with an +extra escape character. This is because the <code class="code">\$</code> family of escape +sequences is interpreted even in copy mode.<a class="footnote" id="DOCF100" href="#FOOT100"><sup>100</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0024_002a-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$*</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_002a-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0024_002a"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0040-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$@</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0040-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0024_0040"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005e-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_005e-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0024_005e"></a> +<p>In some cases it is convenient to interpolate all of the parameters at +once (to pass them to a request, for instance). The <code class="code">\$*</code> escape +concatenates the parameters, separating them with spaces. <code class="code">\$@</code> +is similar, concatenating the parameters, surrounding each with double +quotes and separating them with spaces. If not in compatibility mode, +the interpolation depth of double quotes is preserved (see <a class="pxref" href="#Calling-Macros">Calling Macros</a>). <code class="code">\$^</code> interpolates all parameters as if they were +arguments to the <code class="code">ds</code> request. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de foo +. tm $1='\\$1' +. tm $2='\\$2' +. tm $*='\\$*' +. tm $@='\\$@' +. tm $^='\\$^' +.. +.foo " This is a "test" + error→ $1=' This is a ' + error→ $2='test"' + error→ $*=' This is a test"' + error→ $@='" This is a " "test""' + error→ $^='" This is a "test"' +</pre></div></div> + +<p><code class="code">\$*</code> is useful when writing a macro that doesn’t need to +distinguish its arguments, or even to not interpret them; examples +include macros that produce diagnostic messages by wrapping the +<code class="code">tm</code> or <code class="code">ab</code> requests. Use <code class="code">\$@</code> when writing a macro +that may need to shift its parameters and/or wrap a macro or request +that finds the count significant. If in doubt, prefer <code class="code">\$@</code> to +<code class="code">\$*</code>. An application of <code class="code">\$^</code> is seen in <samp class="file">trace.tmac</samp>, +which redefines some requests and macros for debugging purposes. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_00240-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\$0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_00240-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_00240"></a> +<a class="index-entry-id" id="index-macro-name-register-_0028_005c_00240_0029"></a> +<a class="index-entry-id" id="index-als-request_002c-and-_005c_00240"></a> +<p>Interpolate the name by which the macro being interpreted was called. +The <code class="code">als</code> request can cause a macro to have more than one name. +Applying string interpolation to a macro does not change this name. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de foo +. tm \\$0 +.. +.als bar foo +. +.de aaa +. foo +.. +.de bbb +. bar +.. +.de ccc +\\*[foo]\\ +.. +.de ddd +\\*[bar]\\ +.. +. +.aaa + error→ foo +.bbb + error→ bar +.ccc + error→ ccc +.ddd + error→ ddd +</pre></div></div> +</dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Copy-Mode"> +<div class="nav-panel"> +<p> +Previous: <a href="#Parameters" accesskey="p" rel="prev">Parameters</a>, Up: <a href="#Writing-Macros" accesskey="u" rel="up">Writing Macros</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Copy-Mode-1">5.24.2 Copy Mode</h4> +<a class="index-entry-id" id="index-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode-1"></a> +<a class="index-entry-id" id="index-mode_002c-copy"></a> +<a class="index-entry-id" id="index-mode_002c-copy-1"></a> + +<a class="index-entry-id" id="index-_005cn_002c-when-reading-text-for-a-macro"></a> +<a class="index-entry-id" id="index-_005c_0024_002c-when-reading-text-for-a-macro"></a> +<a class="index-entry-id" id="index-_005c_002a_002c-when-reading-text-for-a-macro"></a> +<a class="index-entry-id" id="index-_005cRET_002c-when-reading-text-for-a-macro"></a> +<p>When GNU <code class="code">troff</code> processes certain requests, most importantly those +which define or append to a macro or string, it does so in <em class="dfn">copy +mode</em>: it copies the characters of the definition into a dedicated +storage region, interpolating the escape sequences <code class="code">\n</code>, <code class="code">\g</code>, +<code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> normally; interpreting +<code class="code">\<kbd class="key">RET</kbd></code> immediately; discarding comments <code class="code">\"</code> and +<code class="code">\#</code>; interpolating the current leader, escape, or tab character +with <code class="code">\a</code>, <code class="code">\e</code>, and <code class="code">\t</code>, respectively; and storing all +other escape sequences in an encoded form. +</p> +<a class="index-entry-id" id="index-interpretation-mode"></a> +<a class="index-entry-id" id="index-mode_002c-interpretation"></a> +<p>The complement of copy mode—a <code class="code">roff</code> formatter’s behavior when +not defining or appending to a macro, string, or diversion—where all +macros are interpolated, requests invoked, and valid escape sequences +processed immediately upon recognition, can be termed +<em class="dfn">interpretation mode</em>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_005c-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\\</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005c-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_005c"></a> +<p>The escape character, <code class="code">\</code> by default, can escape itself. This +enables you to control whether a given <code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>, +<code class="code">\*</code>, <code class="code">\V</code>, or <code class="code">\?</code> escape sequence is interpreted at the +time the macro containing it is defined, or later when the macro is +called.<a class="footnote" id="DOCF101" href="#FOOT101"><sup>101</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr x 20 +.de y +.nr x 10 +\&\nx +\&\\nx +.. +.y + ⇒ 20 10 +</pre></div></div> + +<p>You can think of <code class="code">\\</code> as a “delayed” backslash; it is the escape +character followed by a backslash from which the escape character has +removed its special meaning. Consequently, ‘<samp class="samp">\\</samp>’ is not an escape +sequence in the usual sense. In any escape sequence ‘<samp class="samp">\<var class="var">X</var></samp>’ +that GNU <code class="code">troff</code> does not recognize, the escape character is +ignored and <var class="var">X</var> is output. An unrecognized escape sequence causes +a warning in category ‘<samp class="samp">escape</samp>’, with two exceptions—‘<samp class="samp">\\</samp>’ is +the first. +</p></dd></dl> + +<a class="index-entry-id" id="index-_005c_005c_002c-when-reading-text-for-a-macro"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_002e-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\.</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002e-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_002e"></a> +<p><code class="code">\.</code> escapes the control character. It is similar to <code class="code">\\</code> in +that it isn’t a true escape sequence. It is used to permit nested macro +definitions to end without a named macro call to conclude them. Without +a syntax for escaping the control character, this would not be possible. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de m1 +foo +. +. de m2 +bar +\\.. +. +.. +.m1 +.m2 + ⇒ foo bar +</pre></div></div> + +<p>The first backslash is consumed while the macro is read, and the second +is interpreted when macro <code class="code">m1</code> is called. +</p></dd></dl> + +<p><code class="code">roff</code> documents should not use the <code class="code">\\</code> or <code class="code">\.</code> +character sequences outside of copy mode; they serve only to obfuscate +the input. Use <code class="code">\e</code> to represent the escape character, +<code class="code">\[rs]</code> to obtain a backslash glyph, and <code class="code">\&</code> before ‘<samp class="samp">.</samp>’ +and ‘<samp class="samp">'</samp>’ where GNU <code class="code">troff</code> expects them as control characters +if you mean to use them literally (recall <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>). +</p> +<p>Macro definitions can be nested to arbitrary depth. The mechanics of +parsing the escape character have significant consequences for this +practice. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de M1 +\\$1 +. de M2 +\\\\$1 +. de M3 +\\\\\\\\$1 +\\\\.. +. M3 hand. +\\.. +. M2 of +.. +This understeer is getting +.M1 out + ⇒ This understeer is getting out of hand. +</pre></div></div> + +<p>Each escape character is interpreted twice—once in copy mode, when the +macro is defined, and once in interpretation mode, when the macro is +called. As seen above, this fact leads to exponential growth in the +quantity of escape characters required to delay interpolation of +<code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> at +each nesting level, which can be daunting. GNU <code class="code">troff</code> offers a +solution. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cE-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\E</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cE-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cE"></a> +<p><code class="code">\E</code> represents an escape character that is not interpreted in copy +mode. You can use it to ease the writing of nested macro definitions. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de M1 +. nop \E$1 +. de M2 +. nop \E$1 +. de M3 +. nop \E$1 +\\\\.. +. M3 better. +\\.. +. M2 bit +.. +This vehicle handles +.M1 a + ⇒ This vehicle handles a bit better. +</pre></div></div> + +<p>Observe that because <code class="code">\.</code> is not a true escape sequence, we can’t +use <code class="code">\E</code> to keep ‘<samp class="samp">..</samp>’ from ending a macro definition +prematurely. If the multiplicity of backslashes complicates +maintenance, use end macros. +</p> +<p><code class="code">\E</code> is also convenient to define strings containing escape +sequences that need to work when used in copy mode (for example, as +macro arguments), or which will be interpolated at varying macro nesting +depths. We might define strings to begin and end superscripting +as follows.<a class="footnote" id="DOCF102" href="#FOOT102"><sup>102</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds { \v'-.9m\s'\En[.s]*7u/10u'+.7m' +.ds } \v'-.7m\s0+.9m' +</pre></div></div> + +<p>When the <code class="code">ec</code> request is used to redefine the escape character, +<code class="code">\E</code> also makes it easier to distinguish the semantics of an escape +character from the other meaning(s) its character might have. Consider +the use of an unusual escape character, ‘<samp class="samp">-</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 1 +.ec - +.de xx +--na +.. +.xx + ⇒ -na +</pre></div></div> + +<p>This result may surprise you; some people expect ‘<samp class="samp">1</samp>’ to be output +since register ‘<samp class="samp">a</samp>’ has clearly been defined with that value. What +has happened? The robotic replacement of ‘<samp class="samp">\</samp>’ with ‘<samp class="samp">-</samp>’ has led +us astray. You might recognize the sequence ‘<samp class="samp">--</samp>’ more readily with +the default escape character as ‘<samp class="samp">\-</samp>’, the special character escape +sequence for the minus sign glyph. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr a 1 +.ec - +.de xx +-Ena +.. +.xx + ⇒ 1 +</pre></div></div> +</dd></dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Page-Motions"> +<div class="nav-panel"> +<p> +Next: <a href="#Drawing-Geometric-Objects" accesskey="n" rel="next">Drawing Geometric Objects</a>, Previous: <a href="#Writing-Macros" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Page-Motions-1">5.25 Page Motions</h3> +<a class="index-entry-id" id="index-page-motions"></a> +<a class="index-entry-id" id="index-motions_002c-page"></a> + +<p>See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>, for a discussion of the most commonly used +request for vertical motion, <code class="code">sp</code>, which spaces downward by one +vee. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002emk"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mk</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">reg</i></span>]</var><a class="copiable-link" href='#index-_002emk'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-mk"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ert"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ert'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rt"></a> +<a class="index-entry-id" id="index-marking-vertical-page-location-_0028mk_0029"></a> +<a class="index-entry-id" id="index-page-location_002c-vertical_002c-marking-_0028mk_0029"></a> +<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029"></a> +<a class="index-entry-id" id="index-vertical-page-location_002c-marking-_0028mk_0029"></a> +<a class="index-entry-id" id="index-returning-to-marked-vertical-page-location-_0028rt_0029"></a> +<a class="index-entry-id" id="index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029"></a> +<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029"></a> +<a class="index-entry-id" id="index-vertical-page-location_002c-returning-to-marked-_0028rt_0029"></a> +<p>You can <em class="dfn">mark</em> a location on a page for subsequent <em class="dfn">return</em>. +<code class="code">mk</code> takes an argument, a register name in which to store the +current page location. If given no argument, it stores the location in +an internal register. This location can be used later by the <code class="code">rt</code> +or the <code class="code">sp</code> requests (or the <code class="code">\v</code> escape). +</p> +<p>The <code class="code">rt</code> request returns <em class="emph">upward</em> to the location marked with +the last <code class="code">mk</code> request. If used with an argument, it returns to a +vertical position <var class="var">dist</var> from the top of the page (no previous +call to <code class="code">mk</code> is necessary in this case). The default scaling +unit is ‘<samp class="samp">v</samp>’. +</p> +<p>If a page break occurs between a <code class="code">mk</code> request and its matching +<code class="code">rt</code> request, the <code class="code">rt</code> request is silently ignored. +</p> +<p>A simple implementation of a macro to set text in two columns follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr column-length 1.5i +.nr column-gap 4m +.nr bottom-margin 1m +. +.de 2c +. br +. mk +. ll \\n[column-length]u +. wh -\\n[bottom-margin]u 2c-trap +. nr right-side 0 +.. +. +.de 2c-trap +. ie \\n[right-side] \{\ +. nr right-side 0 +. po -(\\n[column-length]u + \\n[column-gap]u) +. \" remove trap +. wh -\\n[bottom-margin]u +. \} +. el \{\ +. \" switch to right side +. nr right-side 1 +. po +(\\n[column-length]u + \\n[column-gap]u) +. rt +. \} +.. +</pre></div></div> + +<p>Now let us apply our two-column macro. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.pl 1.5i +.ll 4i +This is a small test that shows how the +rt request works in combination with mk. + +.2c +Starting here, text is typeset in two columns. +Note that this implementation isn't robust +and thus not suited for a real two-column +macro. + ⇒ This is a small test that shows how the + ⇒ rt request works in combination with mk. + ⇒ + ⇒ Starting here, isn't robust + ⇒ text is typeset and thus not + ⇒ in two columns. suited for a + ⇒ Note that this real two-column + ⇒ implementation macro. +</pre></div></div> +</dd></dl> + +<p>Several escape sequences enable fine control of movement about the page. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cv_0027expr_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\v<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cv_0027expr_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cv"></a> +<a class="index-entry-id" id="index-vertical-motion-_0028_005cv_0029"></a> +<a class="index-entry-id" id="index-motion_002c-vertical-_0028_005cv_0029"></a> +<p>Vertically move the drawing position. <var class="var">expr</var> indicates the +magnitude of motion: positive is downward and and negative upward. The +default scaling unit is ‘<samp class="samp">v</samp>’. The motion is relative to the current +drawing position unless <var class="var">expr</var> begins with the boundary-relative +motion operator ‘<samp class="samp">|</samp>’. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>. +</p> +<p>Text processing continues at the new drawing position; usually, vertical +motions should be in balanced pairs to avoid a confusing page layout. +</p> +<p><code class="code">\v</code> will not spring a vertical position trap. This can be useful; +for example, consider a page bottom trap macro that prints a marker in +the margin to indicate continuation of a footnote. See <a class="xref" href="#Traps">Traps</a>. +</p></dd></dl> + +<p>A few escape sequences that produce vertical motion are unusual. They +are thought to originate early in AT&T <code class="code">nroff</code> history to achieve +super- and subscripting by half-line motions on line printers and +teletypewriters before the phototypesetter made more precise positioning +available. They are reckoned in ems—not vees—to maintain continuity +with their original purpose of moving relative to the size of the type +rather than the distance between text baselines (vees).<a class="footnote" id="DOCF103" href="#FOOT103"><sup>103</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cr-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\r</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cr-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cr"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cu-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\u</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cu-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cu"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cd-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\d</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cd-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cd"></a> +<p>Move upward 1<span class="dmn">m</span>, upward .5<span class="dmn">m</span>, and +downward .5<span class="dmn">m</span>, respectively. +</p></dd></dl> + +<p>Let us see these escape sequences in use. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU. +</pre></div></div> + +<p>In the foregoing we have paired <code class="code">\u</code> and <code class="code">\d</code> to typeset a +superscript, and later a full em negative (“reverse”) motion to place +a superscript above a subscript. A numeral-width horizontal motion +escape sequence aligns the proton and nucleon numbers, while <code class="code">\k</code> +marks a horizontal position to which <code class="code">\h</code> returns so that we could +stack them. (We shall discuss these horizontal motion escape sequences +presently.) In serious applications, we often want to alter the type +size of the -scripts and to fine-tune the vertical motions, as the +<code class="code">groff</code> <samp class="file">ms</samp> package does with its super- and subscripting +string definitions. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005ch_0027expr_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\h<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005ch_0027expr_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005ch"></a> +<a class="index-entry-id" id="index-inserting-horizontal-space-_0028_005ch_0029"></a> +<a class="index-entry-id" id="index-horizontal-space-_0028_005ch_0029"></a> +<a class="index-entry-id" id="index-space_002c-horizontal-_0028_005ch_0029"></a> +<a class="index-entry-id" id="index-horizontal-motion-_0028_005ch_0029"></a> +<a class="index-entry-id" id="index-motion_002c-horizontal-_0028_005ch_0029"></a> +<p>Horizontally move the drawing position. <var class="var">expr</var> indicates the +magnitude of motion: positive is rightward and negative leftward. The +default scaling unit is ‘<samp class="samp">m</samp>’. The motion is relative to the current +drawing position unless <var class="var">expr</var> begins with the boundary-relative +motion operator ‘<samp class="samp">|</samp>’. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>. +</p></dd></dl> + +<p>The following string definition sets the TeX +logo.<a class="footnote" id="DOCF104" href="#FOOT104"><sup>104</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\" +</pre></div></div> + +<p>There are a number of special-case escape sequences for horizontal +motion. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cSP-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">SP</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cSP-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cSP"></a> +<a class="index-entry-id" id="index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029"></a> +<a class="index-entry-id" id="index-unbreakable-and-unadjustable-space-_0028_005cSP_0029"></a> +<a class="index-entry-id" id="index-unadjustable-and-unbreakable-space-_0028_005cSP_0029"></a> +<a class="index-entry-id" id="index-_005cspace"></a> +<p>Move right one word space. (The input is a backslash followed by a +space.) This escape sequence can be thought of as a non-adjustable, +unbreakable space. Usually you want <code class="code">\~</code> instead; see +<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p></dd></dl> + +<a class="index-entry-id" id="index-thin-space-_0028_005c_007c_0029"></a> +<a class="index-entry-id" id="index-space_002c-thin-_0028_005c_007c_0029"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_007c-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\|</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007c-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_007c"></a> +<p>Move one-sixth <span class="dmn">em</span> to the right on typesetting output devices. If +a glyph named ‘<samp class="samp">\|</samp>’ is defined in the current font, its width is +used instead, even on terminal output devices. +</p></dd></dl> + +<a class="index-entry-id" id="index-hair-space-_0028_005c_005e_0029"></a> +<a class="index-entry-id" id="index-space_002c-hair-_0028_005c_005e_0029"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_005e-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005e-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_005e"></a> +<p>Move one-twelfth <span class="dmn">em</span> to the right on typesetting output devices. +If a glyph named ‘<samp class="samp">\^</samp>’ is defined in the current font, its width is +used instead, even on terminal output devices. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c0-1"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c0-1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c0"></a> +<a class="index-entry-id" id="index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029"></a> +<a class="index-entry-id" id="index-digit_002dwidth-space-_0028_005c0_0029"></a> +<a class="index-entry-id" id="index-figure-space-_0028_005c0_0029"></a> +<a class="index-entry-id" id="index-numeral_002dwidth-space-_0028_005c0_0029"></a> +<p>Move right by the width of a numeral in the current font. +</p></dd></dl> + +<p>Horizontal motions are not discarded at the end of an output line as +word spaces are. See <a class="xref" href="#Breaking">Breaking</a>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cw_0027anything_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\w<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cw_0027anything_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cw"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[st]</code></strong><a class="copiable-link" href='#index-_005cn_005bst_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-st"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[sb]</code></strong><a class="copiable-link" href='#index-_005cn_005bsb_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sb"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rst]</code></strong><a class="copiable-link" href='#index-_005cn_005brst_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rst"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rsb]</code></strong><a class="copiable-link" href='#index-_005cn_005brsb_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rsb"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bct_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ct]</code></strong><a class="copiable-link" href='#index-_005cn_005bct_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ct"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bssc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ssc]</code></strong><a class="copiable-link" href='#index-_005cn_005bssc_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ssc"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bskw_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[skw]</code></strong><a class="copiable-link" href='#index-_005cn_005bskw_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-skw"></a> +<a class="index-entry-id" id="index-width-escape-_0028_005cw_0029"></a> +<p>Interpolate the width of <var class="var">anything</var> in basic units. This escape +sequence allows several properties of formatted output to be measured +without writing it out. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">The length of the string 'abc' is \w'abc'u. + ⇒ The length of the string 'abc' is 72u. +</pre></div></div> + +<a class="index-entry-id" id="index-dummy-environment_002c-used-by-_005cw-escape-sequence"></a> +<a class="index-entry-id" id="index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence"></a> +<p><var class="var">anything</var> is processed in a dummy environment: this means that +font and type size changes, for example, may occur within it without +affecting subsequent output. +</p> +<p>After each use, <code class="code">\w</code> sets several registers. +</p> +<a class="index-entry-id" id="index-CSTR-_002354-errata-5"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-sb-register"></a> +<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-st-register"></a> +<dl class="table"> +<dt><code class="code">st</code></dt> +<dt><code class="code">sb</code></dt> +<dd><p>The maximum vertical displacements of the text baseline above and below, +respectively. The sign convention is opposite that of relative vertical +motions; that is, depth below the (original) baseline is negative. +These registers are incorrectly documented in the <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> manual as “the highest and lowest extent of [the argument +to <code class="code">\w</code>] relative to the baseline”. +</p> +</dd> +<dt><code class="code">rst</code></dt> +<dt><code class="code">rsb</code></dt> +<dd><p>Like <code class="code">st</code> and <code class="code">sb</code>, but taking account of the heights and +depths of glyphs. In other words, these registers store the highest and +lowest vertical positions attained by <var class="var">anything</var>, doing what +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> documented <code class="code">st</code> and <code class="code">sb</code> as doing. +</p> +</dd> +<dt><code class="code">ct</code></dt> +<dd><p>Characterizes the geometry of glyphs occurring in <var class="var">anything</var>. +</p> +<dl class="table"> +<dt>0</dt> +<dd><p>only short glyphs, no descenders or tall glyphs +</p> +</dd> +<dt>1</dt> +<dd><p>at least one descender +</p> +</dd> +<dt>2</dt> +<dd><p>at least one tall glyph +</p> +</dd> +<dt>3</dt> +<dd><p>at least one each of a descender and a tall glyph +</p></dd> +</dl> + +</dd> +<dt><code class="code">ssc</code></dt> +<dd><p>The amount of horizontal space (possibly negative) that should be added +to the last glyph before a subscript. +</p> +</dd> +<dt><code class="code">skw</code></dt> +<dd><p>How far to right of the center of the last glyph in the <code class="code">\w</code> +argument, the center of an accent from a roman font should be placed +over that glyph. +</p></dd> +</dl> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005ckp"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\k</code><span class="r"><i class="slanted">p</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ckp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005ck"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005ck_0028ps"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\k(</code><span class="r"><i class="slanted">ps</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ck_0028ps'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005ck_005bposition_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\k[</code><span class="r"><i class="slanted">position</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005ck_005bposition_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-saving-horizontal-input-line-position-_0028_005ck_0029"></a> +<a class="index-entry-id" id="index-horizontal-input-line-position_002c-saving-_0028_005ck_0029"></a> +<a class="index-entry-id" id="index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029"></a> +<a class="index-entry-id" id="index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029"></a> +<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029"></a> +<p>Store the current horizontal position in the <em class="emph">input</em> line in a +register with the name <var class="var">position</var> (one-character name <var class="var">p</var>, +two-character name <var class="var">ps</var>). Use this, for example, to return to the +beginning of a string for highlighting or other decoration. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bhp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[hp]</code></strong><a class="copiable-link" href='#index-_005cn_005bhp_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-hp"></a> +<a class="index-entry-id" id="index-horizontal-input-line-position-register-_0028hp_0029"></a> +<a class="index-entry-id" id="index-input-line_002c-horizontal-position_002c-register-_0028hp_0029"></a> +<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029"></a> +<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029"></a> +<p>The current horizontal position at the input line. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002ek_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.k]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ek_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ek"></a> +<a class="index-entry-id" id="index-horizontal-output-line-position-register-_0028_002ek_0029"></a> +<a class="index-entry-id" id="index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029"></a> +<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029"></a> +<a class="index-entry-id" id="index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029"></a> +<p>A read-only register containing the current horizontal output position +(relative to the current indentation). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005co_0027abc_2026_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\o<code class="code">'</code></code><span class="r"><i class="slanted">abc…</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005co_0027abc_2026_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005co"></a> +<a class="index-entry-id" id="index-overstriking-glyphs-_0028_005co_0029"></a> +<a class="index-entry-id" id="index-glyphs_002c-overstriking-_0028_005co_0029"></a> +<p>Overstrike the glyphs of characters <var class="var">a</var>, <var class="var">b</var>, <var class="var">c</var>, …; +the glyphs are centered, written, and the drawing position advanced by +the widest of the glyphs. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005czc"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\z</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005czc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cz"></a> +<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029"></a> +<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029"></a> +<p>Format the character <var class="var">c</var> with zero width; that is, without advancing +the drawing position. Use <code class="code">\z</code> to overstrike glyphs aligned to +their left edges, in contrast to <code class="code">\o</code>’s centering. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cZ_0027anything_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\Z<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cZ_0027anything_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cZ"></a> +<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1"></a> +<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1"></a> +<p>Save the drawing position, format <var class="var">anything</var>, then restore it. Tabs +and leaders in the argument are ignored with an error diagnostic. +</p> +<p>We might implement a strike-through macro thus. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de ST +.nr width \w'\\$1' +\Z@\v'-.25m'\l'\\n[width]u'@\\$1 +.. +. +This is +.ST "a test" +an actual emergency! +</pre></div></div> +</dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Drawing-Geometric-Objects"> +<div class="nav-panel"> +<p> +Next: <a href="#Traps" accesskey="n" rel="next">Traps</a>, Previous: <a href="#Page-Motions" accesskey="p" rel="prev">Page Motions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Drawing-Geometric-Objects-1">5.26 Drawing Geometric Objects</h3> +<a class="index-entry-id" id="index-drawing-requests"></a> +<a class="index-entry-id" id="index-requests-for-drawing"></a> + +<p>A few of the formatter’s escape sequences draw lines and other geometric +objects. Combined with each other and with page motion commands +(see <a class="pxref" href="#Page-Motions">Page Motions</a>), a wide variety of figures is possible. For +complex drawings, these operations can be cumbersome; the preprocessors +<code class="code">gpic</code> or <code class="code">ggrn</code> are typically used instead. +</p> +<p>The <code class="code">\l</code> and <code class="code">\L</code> escape sequences draw horizontal and +vertical sequences of glyphs, respectively. Even the simplest of +output devices supports them. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cl_0027l_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027l_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cl"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cl_0027lc_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027lc_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-horizontal-lines-_0028_005cl_0029"></a> +<a class="index-entry-id" id="index-horizontal-line_002c-drawing-_0028_005cl_0029"></a> +<a class="index-entry-id" id="index-line_002c-horizontal_002c-drawing-_0028_005cl_0029"></a> +<p>Draw a horizontal line of length <var class="var">l</var> from the drawing position. +Rightward motion is positive. Afterward, the drawing position is at the +right end of the line. The default scaling unit is ‘<samp class="samp">m</samp>’. +</p> +<a class="index-entry-id" id="index-baseline-rule-special-character_0028_005c_005bru_005d_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-underscore-_0028_005c_005bru_005d_0029"></a> +<a class="index-entry-id" id="index-line-drawing-glyph"></a> +<a class="index-entry-id" id="index-glyph_002c-for-line-drawing"></a> +<p>The optional second parameter <var class="var">c</var> is a character with which to +draw the line. The default is the baseline rule special character, +<code class="code">\[ru]</code>. +</p> +<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a> +<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a> +<p>If <var class="var">c</var> is a valid scaling unit, put <code class="code">\&</code> after <var class="var">l</var> to +disambiguate the input. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de textbox +\[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]' +.. +</pre></div></div> + +<p>The foregoing outputs a box rule (a vertical line), the text +argument(s), and another box rule. We employ the boundary-relative +motion operator ‘<samp class="samp">|</samp>’. Finally, the line-drawing escape sequences +draw a radical extender (a form of overline) and an underline from the +drawing position to the position coresponding to beginning of the +<em class="emph">input</em> line. The drawing position returns to just after the +right-hand box rule because the lengths of the drawn lines are negative, +as noted above. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cL_0027l_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027l_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cL"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cL_0027lc_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027lc_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-vertical-lines-_0028_005cL_0029"></a> +<a class="index-entry-id" id="index-vertical-line-drawing-_0028_005cL_0029"></a> +<a class="index-entry-id" id="index-line_002c-vertical_002c-drawing-_0028_005cL_0029"></a> +<a class="index-entry-id" id="index-line-drawing-glyph-1"></a> +<a class="index-entry-id" id="index-glyph-for-line-drawing"></a> +<a class="index-entry-id" id="index-box-rule-glyph-_0028_005c_005bbr_005d_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029"></a> +<p>Draw a vertical line of length <var class="var">l</var> from the drawing position. +Downward motion is positive. The default scaling unit is ‘<samp class="samp">v</samp>’. The +default character is the box rule, <code class="code">\[br]</code>. As with vertical +motion escape sequences, text processing continues where the line ends. +<code class="code">\L</code> is otherwise similar to <code class="code">\l</code>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ nroff <<EOF +This is a \L'3v'test. +EOF + ⇒ This is a + ⇒ | + ⇒ | + ⇒ |test. +</pre></div></div> + +<p>When writing text, the drawing position is at the text baseline; recall +<a class="ref" href="#Page-Geometry">Page Geometry</a>. +</p></dd></dl> + +<p>The <code class="code">\D</code> escape sequence provides <em class="dfn">drawing commands</em> that +direct the output device to render geometrical objects rather than +glyphs. Specific devices may support only a subset, or may feature +additional ones; consult the man page for the output driver in use. +Terminal devices in particular implement almost none. See <a class="xref" href="#Graphics-Commands">Graphics Commands</a>. +</p> +<p>Rendering starts at the drawing position; when finished, the drawing +position is left at the rightmost point of the object, even for closed +figures, except where noted. GNU <code class="code">troff</code> draws stroked (outlined) +objects with the stroke color, and shades filled ones with the fill +color. See <a class="xref" href="#Colors">Colors</a>. Coordinates <var class="var">h</var> and <var class="var">v</var> are horizontal +and vertical motions relative to the drawing position or previous point +in the command. The default scaling unit for horizontal measurements +(and diameters of circles) is ‘<samp class="samp">m</samp>’; for vertical ones, ‘<samp class="samp">v</samp>’. +</p> +<p>Circles, ellipses, and polygons can be drawn filled or stroked. These +are independent properties; if you want a filled, stroked figure, you +must draw the same figure twice using each drawing command. A filled +figure is always smaller than an outlined one because the former is +drawn only within its defined area, whereas strokes have a line +thickness (set with ‘<samp class="samp">\D't'</samp>’). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\h'1i'\v'1i'\ +\# increase line thickness +\Z'\D't 5p''\ +\# draw stroked (unfilled) polygon +\Z'\D'p 3 3 -6 0''\ +\# draw filled (solid) polygon +\Z'\D'P 3 3 -6 0'' +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cD_0027command-argument-_2026_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\D<code class="code">'</code></code><span class="r"><i class="slanted">command argument …</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cD_0027command-argument-_2026_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cD"></a> +<p>Drawing command escape sequence parameters begin with an ordinary +character, <var class="var">command</var>, selecting the type of object to be drawn, +followed by <var class="var">argument</var>s whose meaning is determined by +<var class="var">command</var>. +</p> +<dl class="table"> +<dt id='index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'><span><code class="code">\D'~ <var class="var">h1</var> <var class="var">v1</var> … <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029"></a> +<p>Draw a B-spline to each point in sequence, leaving the drawing position +at (<var class="var">hn</var>, <var class="var">vn</var>). +</p> +</dd> +<dt id='index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'><span><code class="code">\D'a <var class="var">hc</var> <var class="var">vc</var> <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029"></a> +<p>Draw a circular arc centered at (<var class="var">hc</var>, <var class="var">vc</var>) counterclockwise +from the drawing position to a point (<var class="var">h</var>, <var class="var">v</var>) relative to the +center. <a class="footnote" id="DOCF105" href="#FOOT105"><sup>105</sup></a> +</p> +</dd> +<dt id='index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'><span><code class="code">\D'c <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a> +<p>Draw a circle of diameter <var class="var">d</var> with its leftmost point at the drawing +position. +</p> +</dd> +<dt id='index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'><span><code class="code">\D'C <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a> +<p>As ‘<samp class="samp">\D'C <span class="r">…</span>'</samp>’, but the circle is filled. +</p> +</dd> +<dt id='index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'><span><code class="code">\D'e <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a> +<p>Draw an ellipse of width <var class="var">h</var> and height <var class="var">v</var> with its leftmost +point at the drawing position. +</p> +</dd> +<dt id='index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'><span><code class="code">\D'E <var class="var">x</var> <var class="var">y</var>'</code><a class="copiable-link" href='#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a> +<p>As ‘<samp class="samp">\D'e <span class="r">…</span>'</samp>’, but the ellipse is filled. +</p> +</dd> +<dt id='index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'><span><code class="code">\D'l <var class="var">dx</var> <var class="var">dy</var>'</code><a class="copiable-link" href='#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029"></a> +<p>Draw line from the drawing position to (<var class="var">h</var>, <var class="var">v</var>). +</p> +<p>The following is a macro for drawing a box around a text argument; for +simplicity, the box margin is a fixed at 0.2<span class="dmn">m</span>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de TEXTBOX +. nr @wd \w'\\$1' +\h'.2m'\ +\h'-.2m'\v'(.2m - \\n[rsb]u)'\ +\D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\ +\D'l (\\n[@wd]u + .4m) 0'\ +\D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\ +\D'l -(\\n[@wd]u + .4m) 0'\ +\h'.2m'\v'-(.2m - \\n[rsb]u)'\ +\\$1\ +\h'.2m' +.. +</pre></div></div> + +<p>The argument is measured with the <code class="code">\w</code> escape sequence. Its width +is stored in register <code class="code">@wd</code>. <code class="code">\w</code> also sets the registers +<code class="code">rst</code> and <code class="code">rsb</code>; these contain its maximum vertical extents of +the argument. Then, four lines are drawn to form a box, offset by the +box margin. +</p> +</dd> +<dt id='index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'><span><code class="code">\D'p <var class="var">h1</var> <var class="var">v1</var> … <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a> +<p>Draw polygon with vertices at drawing position and each point in +sequence. GNU <code class="code">troff</code> closes the polygon by drawing a line from +(<var class="var">hn</var>, <var class="var">vn</var>) back to the initial drawing position. +Afterward, the drawing position is left at (<var class="var">hn</var>, <var class="var">vn</var>). +</p> +</dd> +<dt id='index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'><span><code class="code">\D'P <var class="var">dx1</var> <var class="var">dy1</var> <var class="var">dx2</var> <var class="var">dy2</var> …'</code><a class="copiable-link" href='#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029"></a> +<a class="index-entry-id" id="index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a> +<p>As ‘<samp class="samp">\D'P <span class="r">…</span>'</samp>’, but the polygon is filled. +</p> +<p>The following macro is like the ‘<samp class="samp">\D'l'</samp>’ example, but shades the +box. We draw the box before writing the text because colors in GNU +<code class="code">troff</code> have no transparency; in othe opposite order, the filled +polygon would occlude the text. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de TEXTBOX +. nr @wd \w'\\$1' +\h'.2m'\ +\h'-.2m'\v'(.2m - \\n[rsb]u)'\ +\M[lightcyan]\ +\D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \ + (\\n[@wd]u + .4m) 0 \ + 0 (\\n[rst]u - \\n[rsb]u + .4m) \ + -(\\n[@wd]u + .4m) 0'\ +\h'.2m'\v'-(.2m - \\n[rsb]u)'\ +\M[]\ +\\$1\ +\h'.2m' +.. +</pre></div></div> + +</dd> +<dt id='index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'><span><code class="code">\D't <var class="var">n</var>'</code><a class="copiable-link" href='#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029"></a> +<p>Set the stroke thickness of geometric objects to <var class="var">n</var> basic units. A +zero <var class="var">n</var> selects the minimal supported thickness. A negative +<var class="var">n</var> selects a thickness proportional to the type size; this is the +default. +</p></dd> +</dl> +</dd></dl> + +<p>In a hazy penumbra between text rendering and drawing commands we locate +the bracket-building escape sequence, <code class="code">\b</code>. It can assemble +apparently large glyphs by vertically stacking ordinary ones. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cb_0027contents_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\b<code class="code">'</code></code><span class="r"><i class="slanted">contents</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cb_0027contents_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cb"></a> +<a class="index-entry-id" id="index-pile_002c-glyph-_0028_005cb_0029"></a> +<a class="index-entry-id" id="index-glyph-pile-_0028_005cb_0029"></a> +<a class="index-entry-id" id="index-stacking-glyphs-_0028_005cb_0029"></a> +<p>Pile and center a sequence of glyphs vertically on the output line. +<em class="dfn">Piling</em> stacks glyphs corresponding to each character in +<var class="var">contents</var>, read from left to right, and placed from top to bottom. +GNU <code class="code">troff</code> separates the glyphs vertically by 1<span class="dmn">m</span>, and the +pile itself is centered 0.5<span class="dmn">m</span> above the text baseline. The +horizontal drawing position is then advanced by the width of the widest +glyph in the pile. +</p> +<a class="index-entry-id" id="index-_005cb_002c-limitations-of"></a> +<a class="index-entry-id" id="index-limitations-of-_005cb-escape-sequence"></a> +<p>This rather inflexible positioning algorithm doesn’t work with the +<code class="code">dvi</code> output device since its bracket pieces vary in height. +Instead, use the <code class="code">geqn</code> preprocessor. +</p> +<p><a class="ref" href="#Manipulating-Spacing">Manipulating Spacing</a> describes how to adjust the vertical spacing +of the output line with the <code class="code">\x</code> escape sequence. +</p> +<p>The application of <code class="code">\b</code> that lends its name is construction of +brackets, braces, and parentheses when typesetting mathematics. We +might construct a large opening (left) brace as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\b'\[lt]\[bv]\[lk]\[bv]\[lb]' +</pre></div></div> + +<p>See <cite class="cite">groff_char<span class="r">(7)</span></cite> for a list of special character +identifiers. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Deferring-Output"> +<div class="nav-panel"> +<p> +Next: <a href="#Traps" accesskey="n" rel="next">Traps</a>, Previous: <a href="#Drawing-Geometric-Objects" accesskey="p" rel="prev">Drawing Geometric Objects</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<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> + +<hr> +</div> +<div class="section-level-extent" id="Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#Diversions" accesskey="n" rel="next">Diversions</a>, Previous: <a href="#Deferring-Output" accesskey="p" rel="prev">Deferring Output</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Traps-1">5.28 Traps</h3> +<a class="index-entry-id" id="index-traps"></a> + +<p><em class="dfn">Traps</em> are locations in the output or conditions on the input that, +when reached or fulfilled, call a specified macro. These traps can +occur at a given location on the page, at a given location in the +current diversion (together, these are known as <i class="slanted">vertical +position traps</i>), at a blank line, at a line with leading space +characters, after a quantity of input lines, or at the end of input. +Macros called by traps are passed no arguments. +<a class="index-entry-id" id="index-planting-a-trap"></a> +<a class="index-entry-id" id="index-trap_002c-planting"></a> +Setting a trap is also called <em class="dfn">planting</em> one. +<a class="index-entry-id" id="index-trap_002c-springing"></a> +<a class="index-entry-id" id="index-springing-a-trap"></a> +It is said that a trap is <em class="dfn">sprung</em> if its condition is fulfilled. +</p> + + +<ul class="mini-toc"> +<li><a href="#Vertical-Position-Traps" accesskey="1">Vertical Position Traps</a></li> +<li><a href="#Input-Line-Traps" accesskey="2">Input Line Traps</a></li> +<li><a href="#Blank-Line-Traps" accesskey="3">Blank Line Traps</a></li> +<li><a href="#Leading-Space-Traps" accesskey="4">Leading Space Traps</a></li> +<li><a href="#End_002dof_002dinput-Traps" accesskey="5">End-of-input Traps</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Vertical-Position-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#Page-Location-Traps" accesskey="n" rel="next">Page Location Traps</a>, Previous: <a href="#Traps" accesskey="p" rel="prev">Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Vertical-Position-Traps-1">5.28.1 Vertical Position Traps</h4> +<a class="index-entry-id" id="index-vertical-position-traps"></a> +<a class="index-entry-id" id="index-traps_002c-vertical-position"></a> + +<p>A <em class="dfn">vertical position trap</em> calls a macro when the formatter’s +vertical drawing position reaches or passes, in the downward direction, +a certain location on the output page or in a diversion. Its +applications include setting page headers and footers, body text in +multiple columns, and footnotes. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002evpt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vpt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002evpt'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-vpt"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002evpt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.vpt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002evpt_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002evpt-1"></a> +<a class="index-entry-id" id="index-enabling-vertical-position-traps-_0028vpt_0029"></a> +<a class="index-entry-id" id="index-vertical-position-traps_002c-enabling-_0028vpt_0029"></a> +<a class="index-entry-id" id="index-vertical-position-trap-enable-register-_0028_002evpt_0029"></a> +<p>Enable vertical position traps if <var class="var">flag</var> is non-zero or absent; +disable them otherwise. Vertical position traps are those set by the +<code class="code">wh</code> request or by <code class="code">dt</code> within a diversion. The parameter +that controls whether vertical position traps are enabled is global. +Initially, vertical position traps are enabled. The current value is +stored in the <code class="code">.vpt</code> read-only register. +</p> +<a class="index-entry-id" id="index-page-break_002c-prevented-by-vpt"></a> +<a class="index-entry-id" id="index-break_002c-page_002c-prevented-by-vpt"></a> +<a class="index-entry-id" id="index-page-ejection_002c-prevented-by-vpt"></a> +<a class="index-entry-id" id="index-ejection_002c-page_002c-prevented-by-vpt"></a> +<p>A page can’t be ejected if <code class="code">vpt</code> is set to zero; see <a class="ref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>. +</p></dd></dl> + + + +<ul class="mini-toc"> +<li><a href="#Page-Location-Traps" accesskey="1">Page Location Traps</a></li> +<li><a href="#The-Implicit-Page-Trap" accesskey="2">The Implicit Page Trap</a></li> +<li><a href="#Diversion-Traps" accesskey="3">Diversion Traps</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="Page-Location-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#The-Implicit-Page-Trap" accesskey="n" rel="next">The Implicit Page Trap</a>, Previous: <a href="#Vertical-Position-Traps" accesskey="p" rel="prev">Vertical Position Traps</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Page-Location-Traps-1">5.28.1.1 Page Location Traps</h4> +<a class="index-entry-id" id="index-page-location-traps"></a> +<a class="index-entry-id" id="index-traps_002c-page-location"></a> + +<p>A <em class="dfn">page location trap</em> is a vertical position trap that applies to +the page; that is, to undiverted output. Many can be present; manage +them with the <code class="code">wh</code> and <code class="code">ch</code> requests. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.wh</code></strong> <var class="def-var-arguments">dist [<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ewh'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-wh"></a> +<p>Plant macro <var class="var">name</var> as page location trap at <var class="var">dist</var>. The default +scaling unit is ‘<samp class="samp">v</samp>’. Non-negative values for <var class="var">dist</var> set the +trap relative to the top of the page; negative values set the trap +relative to the bottom of the page. It is not possible to plant a trap +less than one basic unit from the page bottom: a <var class="var">dist</var> of <code class="code">-0</code> +is interpreted as <code class="code">0</code>, the top of the page.<a class="footnote" id="DOCF106" href="#FOOT106"><sup>106</sup></a> An existing <em class="emph">visible</em> trap (see below) at +<var class="var">dist</var> is removed; this is <code class="code">wh</code>’s sole function if <var class="var">name</var> +is missing. +</p> +<p>A trap is sprung only if it is <em class="dfn">visible</em>, meaning that its location +is reachable on the page<a class="footnote" id="DOCF107" href="#FOOT107"><sup>107</sup></a> and it +is not hidden by another trap at the same location already planted +there. +</p> +<a class="index-entry-id" id="index-page-headers"></a> +<a class="index-entry-id" id="index-page-footers"></a> +<a class="index-entry-id" id="index-headers-1"></a> +<a class="index-entry-id" id="index-footers-1"></a> +<a class="index-entry-id" id="index-top-margin"></a> +<a class="index-entry-id" id="index-margin_002c-top"></a> +<a class="index-entry-id" id="index-bottom-margin"></a> +<a class="index-entry-id" id="index-margin_002c-bottom"></a> +<p>A macro package might set headers and footers as follows; this example +configures vertical margins of one inch to the body text, and one +half-inch to the titles. Observe the use of the no-break control +character with <code class="code">sp</code> request to position our text baselines, +and the page number character ‘<samp class="samp">%</samp>’ used with the <code class="code">tl</code> request. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" hdfo.roff +.de hd \" page header +' sp .5i +' tl '\\*(Ti''\\*(Da' \" title and date strings +' sp .5i +.. +.de fo \" page footer +' sp .5i +. tl ''%'' +. bp +.. +.wh 0 hd \" trap at top of the page +.wh -1i fo \" trap 1 inch from bottom +</pre></div></div> + +<p>To use these traps, copy the above (or load it from a file with the +<code class="code">so</code> or <code class="code">mso</code> requests), then set up the strings it uses. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.so hdfo.roff +.ds Ti Final Report\" +.ds Da 21 May 2023\" +.ti +On 5 August of last year, +this committee tasked me with the investigation of the +CFIT (controlled flight into terrain) incident of +.\" <i class="i">...and so on...</i> +</pre></div></div> + +<p>A trap above the top or at or below the bottom of the page can be made +visible by either moving it into the page area or increasing the page +length so that the trap is on the page. Negative trap values always use +the <em class="emph">current</em> page length; they are not converted to an absolute +vertical position. +<a class="index-entry-id" id="index-page-location-traps_002c-debugging"></a> +<a class="index-entry-id" id="index-debugging-page-location-traps"></a> +We can use the <code class="code">ptr</code> request to dump our page location traps to the +standard error stream (see <a class="pxref" href="#Debugging">Debugging</a>). Their positions are reported +in basic units; an <code class="code">nroff</code> device example follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.pl 5i +.wh -1i xx +.ptr + error→ xx -240 +.pl 100i +.ptr + error→ xx -240 +</pre></div></div> + +<p>It is possible to have more than one trap at the same location (although +only one at a time can be visible); to achieve this, the traps must be +defined at different locations, then moved to the same place with the +<code class="code">ch</code> request. In the following example, the many empty lines +caused by the <code class="code">bp</code> request are not shown in the output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de a +. nop a +.. +.de b +. nop b +.. +.de c +. nop c +.. +. +.wh 1i a +.wh 2i b +.wh 3i c +.bp + ⇒ a b c +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ch b 1i +.ch c 1i +.bp + ⇒ a +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ch a 0.5i +.bp + ⇒ a b +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002et_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.t]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002et_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002et"></a> +<a class="index-entry-id" id="index-distance-to-next-vertical-position-trap-register-_0028_002et_0029"></a> +<a class="index-entry-id" id="index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029"></a> +<p>The read-only register <code class="code">.t</code> holds the distance to the next vertical +position trap. If there are no traps between the current position and +the bottom of the page, it contains the distance to the page bottom. +Within a diversion, in the absence of a diversion trap, this distance is +the largest representable integer in basic units—effectively infinite. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ech"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ch</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ech'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ch"></a> +<a class="index-entry-id" id="index-changing-trap-location-_0028ch_0029"></a> +<a class="index-entry-id" id="index-trap_002c-changing-location-_0028ch_0029"></a> +<p>Change the location of a trap by moving macro <var class="var">name</var> to new location +<var class="var">dist</var>, or by unplanting it altogether if <var class="var">dist</var> is absent. The +default scaling unit is ‘<samp class="samp">v</samp>’. Parameters to <code class="code">ch</code> are specified +in the opposite order from <code class="code">wh</code>. If <var class="var">name</var> is the earliest +planted macro of multiple traps at the same location, (re)moving it from +that location exposes the macro next least recently planted at the same +place.<a class="footnote" id="DOCF108" href="#FOOT108"><sup>108</sup></a> +</p> +<p>Changing a trap’s location is useful for building up footnotes in a +diversion to allow more space at the bottom of the page for them. +</p> + +</dd></dl> + +<p>The same macro can be installed simultaneously at multiple locations; +however, only the earliest-planted instance—that has not yet been +deleted with <code class="code">wh</code>—will be moved by <code class="code">ch</code>. The following +example (using an <code class="code">nroff</code> device) illustrates this behavior. Blank +lines have been elided from the output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de T +Trap sprung at \\n(nlu. +.br +.. +.wh 1i T +.wh 2i T +foo +.sp 11i +.bp +.ch T 4i +bar +.sp 11i +.bp +.ch T 5i +baz +.sp 11i +.bp +.wh 5i +.ch T 6i +qux +.sp 11i +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted"> ⇒ foo + ⇒ Trap sprung at 240u. + ⇒ Trap sprung at 480u. + ⇒ bar + ⇒ Trap sprung at 480u. + ⇒ Trap sprung at 960u. + ⇒ baz + ⇒ Trap sprung at 480u. + ⇒ Trap sprung at 1200u. + ⇒ qux + ⇒ Trap sprung at 1440u. +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002ene_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ne]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ene_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ene-1"></a> +<p>The read-only register <code class="code">.ne</code> contains the amount of space that was +needed in the last <code class="code">ne</code> request that caused a trap to be sprung; +it is useful in conjunction with the <code class="code">.trunc</code> register. See <a class="xref" href="#Page-Control">Page Control</a>. Since the <code class="code">.ne</code> register is set only by traps, it +doesn’t make sense to interpolate it outside of macros called by traps. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002etrunc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.trunc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etrunc_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002etrunc"></a> +<a class="index-entry-id" id="index-ne-request_002c-and-the-_002etrunc-register"></a> +<a class="index-entry-id" id="index-truncated-vertical-space-register-_0028_002etrunc_0029"></a> +<p>A read-only register containing the amount of vertical space truncated +from an <code class="code">sp</code> request by the most recently sprung vertical +position trap, or, if the trap was sprung by an <code class="code">ne</code> request, +minus the amount of vertical motion produced by the <code class="code">ne</code> +request. In other words, at the point a trap is sprung, it +represents the difference of what the vertical position would have +been but for the trap, and what the vertical position actually is. +Since the <code class="code">.trunc</code> register is set only by traps, it doesn’t make +sense to interpolate it outside of macros called by traps. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002epe_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pe]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epe_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002epe"></a> +<a class="index-entry-id" id="index-bp-request_002c-and-traps-_0028_002epe_0029"></a> +<a class="index-entry-id" id="index-traps_002c-sprung-by-bp-request-_0028_002epe_0029"></a> +<a class="index-entry-id" id="index-page-ejection-status-register-_0028_002epe_0029"></a> +<p>This Boolean-valued, read-only register interpolates 1 while a page +is being ejected, and 0 otherwise. +</p> +<p>In the following example, we plant the same trap at the top and the +bottom of the page. We also make the trap report its name and the +vertical drawing position. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de T +.tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe] +.. +.ll 46n +.wh 0 T +.wh -1v T +Those who can make you believe absurdities can make you +commit atrocities. \[em] Voltaire + error→ T: page 1, nl=0 .pe=0 + error→ T: page 1, nl=2600 .pe=1 + ⇒ Those who can make you believe absurdities can + ⇒ make you commit atrocities. -- Voltaire +</pre></div></div> +</dd></dl> + +<a class="index-entry-id" id="index-diversions_002c-and-traps"></a> +<a class="index-entry-id" id="index-traps_002c-and-diversions"></a> +<p>When designing macros, keep in mind that diversions and traps do +normally interact. For example, if a trap calls a header macro (while +outputting a diversion) that tries to change the font on the current +page, the effect is not visible before the diversion has completely been +printed (except for input protected with <code class="code">\!</code> or <code class="code">\?</code>) since +the data in the diversion is already formatted. In most cases, this is +not the expected behaviour. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="The-Implicit-Page-Trap"> +<div class="nav-panel"> +<p> +Next: <a href="#Diversion-Traps" accesskey="n" rel="next">Diversion Traps</a>, Previous: <a href="#Page-Location-Traps" accesskey="p" rel="prev">Page Location Traps</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="The-Implicit-Page-Trap-1">5.28.1.2 The Implicit Page Trap</h4> +<a class="index-entry-id" id="index-implicit-trap"></a> +<a class="index-entry-id" id="index-trap_002c-implicit"></a> + +<a class="index-entry-id" id="index-page-break-2"></a> +<a class="index-entry-id" id="index-break_002c-page-2"></a> +<a class="index-entry-id" id="index-page-ejection-2"></a> +<a class="index-entry-id" id="index-ejection_002c-page-2"></a> +<p>If, after starting GNU <code class="code">troff</code> without loading a macro package, you +use the <code class="code">ptr</code> request to dump a list of the active traps to the +standard error stream,<a class="footnote" id="DOCF109" href="#FOOT109"><sup>109</sup></a> nothing is reported. +Yet the <code class="code">.t</code> register will report a steadily decreasing value with +every output line your document produces, and once the value of +<code class="code">.t</code> gets to within <code class="code">.V</code> of zero, you will notice that +something trap-like happens—the page is ejected, a new one begins, and +the value of <code class="code">.t</code> becomes large once more. +</p> +<p>This <em class="dfn">implicit page trap</em> always exists in the top-level +diversion;<a class="footnote" id="DOCF110" href="#FOOT110"><sup>110</sup></a> it works like a trap in some +ways but not others. Its purpose is to eject the current page and start +the next one. It has no name, so it cannot be moved or deleted with +<code class="code">wh</code> or <code class="code">ch</code> requests. You cannot hide it by placing another +trap at its location, and can move it only by redefining the page length +with <code class="code">pl</code>. Its operation is suppressed when vertical page traps +are disabled with GNU <code class="code">troff</code>’s <code class="code">vpt</code> request. +</p> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Diversion-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#Input-Line-Traps" accesskey="n" rel="next">Input Line Traps</a>, Previous: <a href="#The-Implicit-Page-Trap" accesskey="p" rel="prev">The Implicit Page Trap</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Diversion-Traps-1">5.28.1.3 Diversion Traps</h4> +<a class="index-entry-id" id="index-diversion-traps"></a> +<a class="index-entry-id" id="index-traps_002c-diversion"></a> + +<p>A diversion is not formatted in the context of a page, so it lacks page +location traps; instead it can have a <em class="dfn">diversion trap</em>. There can +exist at most one such vertical position trap per diversion. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edt'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-dt"></a> +<a class="index-entry-id" id="index-_002et-register_002c-and-diversions"></a> +<a class="index-entry-id" id="index-setting-diversion-trap-_0028dt_0029"></a> +<a class="index-entry-id" id="index-diversion-trap_002c-setting-_0028dt_0029"></a> +<a class="index-entry-id" id="index-trap_002c-diversion_002c-setting-_0028dt_0029"></a> +<p>Set a trap <em class="emph">within</em> a diversion at location <var class="var">dist</var>, which is +interpreted relative to diversion rather than page boundaries. If invoked with +fewer than two arguments, any diversion trap in the current diversion is +removed. The register <code class="code">.t</code> works within diversions. It is an +error to invoke <code class="code">dt</code> in the top-level diversion. +See <a class="xref" href="#Diversions">Diversions</a>. +</p></dd></dl> + + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="Input-Line-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#Blank-Line-Traps" accesskey="n" rel="next">Blank Line Traps</a>, Previous: <a href="#Diversion-Traps" accesskey="p" rel="prev">Diversion Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Input-Line-Traps-1">5.28.2 Input Line Traps</h4> +<a class="index-entry-id" id="index-input-line-traps"></a> +<a class="index-entry-id" id="index-traps_002c-input-line"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eit"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.it</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eit'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-it"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eitc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.itc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eitc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-itc"></a> +<a class="index-entry-id" id="index-setting-input-line-trap-_0028it_002c-itc_0029"></a> +<a class="index-entry-id" id="index-input-line-trap_002c-setting-_0028it_002c-itc_0029"></a> +<a class="index-entry-id" id="index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029"></a> +<a class="index-entry-id" id="index-clearing-input-line-trap-_0028it_002c-itc_0029"></a> +<a class="index-entry-id" id="index-input-line-trap_002c-clearing-_0028it_002c-itc_0029"></a> +<a class="index-entry-id" id="index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029"></a> +<p>Set an input line trap, calling macro <var class="var">name</var> after processing the +next <var class="var">n</var> productive input lines (recall <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>). Any existing input line trap in the +environment is replaced. Without arguments, <code class="code">it</code> and <code class="code">itc</code> +clear any input line trap that has not yet sprung. +</p> +<p>Consider a macro ‘<samp class="samp">.ST <var class="var">s n</var></samp>’ which sets the next +<var class="var">n</var> input lines in the font style <var class="var">s</var>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de ST \" Use style $1 for next $2 text lines. +. it \\$2 ES +. ft \\$1 +.. +.de ES \" end ST +. ft R +.. +.ST I 1 +oblique +face +.ST I 1 +oblique\c +face + ⇒ <i class="i">oblique</i> face <i class="i">oblique</i>face <span class="r">(second “face” upright)</span> +</pre></div></div> + +<a class="index-entry-id" id="index-input-line-traps-and-interrupted-lines-_0028itc_0029"></a> +<a class="index-entry-id" id="index-interrupted-lines-and-input-line-traps-_0028itc_0029"></a> +<a class="index-entry-id" id="index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029"></a> +<a class="index-entry-id" id="index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029"></a> +<p>Unlike the <code class="code">ce</code> and <code class="code">rj</code> requests, <code class="code">it</code> counts lines +interrupted with the <code class="code">\c</code> escape sequence separately (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>); <code class="code">itc</code> does not. To see the difference, let’s +change the previous example to use <code class="code">itc</code> instead. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"><span class="r">…</span> +. itc \\$2 ES +<span class="r">…</span> + ⇒ <i class="i">oblique</i> face <i class="i">obliqueface</i> <span class="r">(second “face” oblique)</span> +</pre></div></div> + +<p>You can think of the <code class="code">ce</code> and <code class="code">rj</code> requests as implicitly +creating an input line trap with <code class="code">itc</code> that schedules a break when +the trap is sprung. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de BR +. br +. <i class="slanted">internal: disable centering-without-filling</i> +.. +. +.de ce +. if \\n[.br] .br +. itc \\$1 BR +. <i class="slanted">internal: enable centering-without-filling</i> +.. +</pre></div></div> + +<p>Let us consider in more detail the sorts of input lines that are or are +not “productive”. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de Trap +TRAP SPRUNG +.. +.de Mac +.if r a \l'5n' +.. +.it 2 Trap +. +foo +.Mac +bar +baz +.it 1 Trap +.sp \" moves, but does not write or draw +qux +.itc 1 Trap +\h'5n'\c \" moves, but does not write or draw +jat +</pre></div></div> + +<p>When ‘<samp class="samp">Trap</samp>’ gets called depends on whether the ‘<samp class="samp">a</samp>’ register is +defined; the control line with the <code class="code">if</code> request may or may not +produce written output. We also see that the spacing request <code class="code">sp</code>, +while certainly affecting the output, does not spring the input line +trap. Similarly, the horizontal motion escape sequence <code class="code">\h</code> also +affected the output, but was not “written”. Observe that we had to +follow it with <code class="code">\c</code> and use <code class="code">itc</code> to prevent the newline at +the end of the text line from causing a word break, which, like an +ordinary space character, counts as written output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ groff -Tascii input-trap-example.groff + ⇒ foo bar TRAP SPRUNG baz + ⇒ + ⇒ qux TRAP SPRUNG jat TRAP SPRUNG +$ groff -Tascii -ra1 input-trap-example.groff + ⇒ foo _____ TRAP SPRUNG bar baz + ⇒ + ⇒ qux TRAP SPRUNG jat TRAP SPRUNG +</pre></div></div> +</dd></dl> + +<p>Input line traps are associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>); switching to another environment suspends the +current input line trap, and going back resumes it, restoring the count +of qualifying lines enumerated in that environment. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Blank-Line-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#Leading-Space-Traps" accesskey="n" rel="next">Leading Space Traps</a>, Previous: <a href="#Input-Line-Traps" accesskey="p" rel="prev">Input Line Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Blank-Line-Traps-1">5.28.3 Blank Line Traps</h4> +<a class="index-entry-id" id="index-blank-line-traps"></a> +<a class="index-entry-id" id="index-traps_002c-blank-line"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eblm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.blm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eblm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-blm"></a> +<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-2"></a> +<p>Set a blank line trap, calling the macro <var class="var">name</var> when GNU +<code class="code">troff</code> encounters a blank line in an input file, instead of the +usual behavior (see <a class="pxref" href="#Breaking">Breaking</a>). A line consisting only of spaces is +also treated as blank and subject to this trap. If no argument is +supplied, the default blank line behavior is (re-)established. +</p></dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Leading-Space-Traps"> +<div class="nav-panel"> +<p> +Next: <a href="#End_002dof_002dinput-Traps" accesskey="n" rel="next">End-of-input Traps</a>, Previous: <a href="#Blank-Line-Traps" accesskey="p" rel="prev">Blank Line Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Leading-Space-Traps-1">5.28.4 Leading Space Traps</h4> +<a class="index-entry-id" id="index-leading-space-traps"></a> +<a class="index-entry-id" id="index-traps_002c-leading-space"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elsm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lsm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002elsm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lsm"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blsn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lsn]</code></strong><a class="copiable-link" href='#index-_005cn_005blsn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lsn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lss]</code></strong><a class="copiable-link" href='#index-_005cn_005blss_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lss"></a> +<a class="index-entry-id" id="index-leading-spaces-macro-_0028lsm_0029"></a> +<p>Set a leading space trap, calling the macro <var class="var">name</var> when GNU +<code class="code">troff</code> encounters leading spaces in an input line; the implicit +line break that normally happens in this case is suppressed. If no +argument is supplied, the default leading space behavior is +(re-)established (see <a class="pxref" href="#Breaking">Breaking</a>). +</p> +<p>The count of leading spaces on an input line is stored in register +<code class="code">lsn</code>, and the amount of corresponding horizontal motion in +register <code class="code">lss</code>, irrespective of whether a leading space trap is +set. When it is, the leading spaces are removed from the input line, +and no motion is produced before calling <var class="var">name</var>. +</p> +</dd></dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="End_002dof_002dinput-Traps"> +<div class="nav-panel"> +<p> +Previous: <a href="#Leading-Space-Traps" accesskey="p" rel="prev">Leading Space Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="End_002dof_002dinput-Traps-1">5.28.5 End-of-input Traps</h4> +<a class="index-entry-id" id="index-end_002dof_002dinput-traps"></a> +<a class="index-entry-id" id="index-traps_002c-end_002dof_002dinput"></a> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.em</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eem'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-em"></a> +<a class="index-entry-id" id="index-setting-end_002dof_002dinput-trap-_0028em_0029"></a> +<a class="index-entry-id" id="index-end_002dof_002dinput-trap_002c-setting-_0028em_0029"></a> +<a class="index-entry-id" id="index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029"></a> +<a class="index-entry-id" id="index-end_002dof_002dinput-macro-_0028em_0029"></a> +<a class="index-entry-id" id="index-macro_002c-end_002dof_002dinput-_0028em_0029"></a> +<p>Set a trap at the end of input, calling macro <var class="var">name</var> after the last +line of the last input file has been processed. If no argument is +given, any existing end-of-input trap is removed. +</p> +<p>For example, if the document had to have a section at the bottom of the +last page for someone to approve it, the <code class="code">em</code> request could be +used. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de approval +\c +. ne 3v +. sp (\\n[.t]u - 3v) +. in +4i +. lc _ +. br +Approved:\t\a +. sp +Date:\t\t\a +.. +. +.em approval +</pre></div></div> + +<p>The <code class="code">\c</code> in the above example needs explanation. For historical +reasons (compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>), the +end-of-input macro exits as soon as it causes a page break if no +partially collected line remains.<a class="footnote" id="DOCF111" href="#FOOT111"><sup>111</sup></a> +</p> +<a class="index-entry-id" id="index-page-break_002c-final"></a> +<a class="index-entry-id" id="index-break_002c-page_002c-final"></a> +<a class="index-entry-id" id="index-page-ejection_002c-of-final-page"></a> +<a class="index-entry-id" id="index-ejection_002c-page_002c-of-final-page"></a> +<p>Let us assume that there is no <code class="code">\c</code> in the above <code class="code">approval</code> +macro, that the page is full, and last output line has been broken with, +say, a <code class="code">br</code> request. Because there is no more room, a <code class="code">ne</code> +request at this point causes a page ejection, which in turn makes +<code class="code">troff</code> exit immediately as just described. In most situations, +this is not desired; people generally want to format the input after +<code class="code">ne</code>. +</p> +<p>To force processing of the whole end-of-input macro independently of +this behavior, it is thus advisable to (invisibly) ensure the existence +of a partially collected line (<code class="code">\c</code>) whenever there is a chance +that a page break can happen. In the above example, invoking the +<code class="code">ne</code> request ensures that there is room for the subsequent +formatted output on the same page, so we need insert <code class="code">\c</code> only +once. +</p> +<p>The next example shows how to append three lines, then start a new page +unconditionally. Since ‘<samp class="samp">.ne 1</samp>’<!-- /@w --> doesn’t give the desired +effect—there is always one line available or we are already at the +beginning of the next page—we temporarily increase the page length by +one line so that we can use ‘<samp class="samp">.ne 2</samp>’<!-- /@w -->. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de EM +.pl +1v +\c +.ne 2 +line one +.br +\c +.ne 2 +line two +.br +\c +.ne 2 +line three +.br +.pl -1v +\c +'bp +.. +.em EM +</pre></div></div> + +<p>This specific feature affects only the first potential page break caused +by the end-of-input macro; further page breaks emitted by the macro are +handled normally. +</p> +<p>Another possible use of the <code class="code">em</code> request is to make GNU +<code class="code">troff</code> emit a single large page instead of multiple pages. For +example, one may want to produce a long plain text file for reading +in a terminal or emulator without page footers and headers interrupting +the body of the document. One approach is to set the page length at the +beginning of the document to a very large value to hold all the +text,<a class="footnote" id="DOCF112" href="#FOOT112"><sup>112</sup></a> and +automatically adjust it to the exact height of the document after the +text has been output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de adjust-page-length +. br +. pl \\n[nl]u \" \n[nl]: current vertical position +.. +. +.de single-page-mode +. pl 99999 +. em adjust-page-length +.. +. +.\" Activate the above code if configured. +.if \n[do-continuous-rendering] \ +. single-page-mode +</pre></div></div> + +<p>Since only one end-of-input trap exists and another macro package may +already use it, care must be taken not to break the mechanism. A simple +solution would be to append the above macro to the macro package’s +end-of-input macro using the <code class="code">am</code> request. +</p></dd></dl> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Diversions"> +<div class="nav-panel"> +<p> +Next: <a href="#Punning-Names" accesskey="n" rel="next">Punning Names</a>, Previous: <a href="#Traps" accesskey="p" rel="prev">Traps</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Diversions-1">5.29 Diversions</h3> +<a class="index-entry-id" id="index-diversions"></a> + +<p>In <code class="code">roff</code> systems it is possible to format text as if for output, +but instead of writing it immediately, one can <em class="dfn">divert</em> the +formatted text into a named storage area. It is retrieved later by +specifying its name after a control character. The same name space is +used for such <i class="slanted">diversions</i> as for strings and macros; see +<a class="ref" href="#Identifiers">Identifiers</a>. Such text is sometimes said to be “stored in a +macro”, but this coinage obscures the important distinction between +macros and strings on one hand and diversions on the other; the former +store <em class="emph">unformatted</em> input text, and the latter capture +<em class="emph">formatted</em> output. Diversions also do not interpret arguments. +Applications of diversions include “keeps” (preventing a page break +from occurring at an inconvenient place by forcing a set of output lines +to be set as a group), footnotes, tables of contents, and indices. +<a class="index-entry-id" id="index-top_002dlevel-diversion"></a> +<a class="index-entry-id" id="index-diversion_002c-top_002dlevel"></a> +For orthogonality it is said that GNU <code class="code">troff</code> is in the +<em class="dfn">top-level diversion</em> if no diversion is active (that is, formatted +output is being “diverted” immediately to the output device). +</p> +<p>Dereferencing an undefined diversion will create an empty one of that +name and cause a warning in category ‘<samp class="samp">mac</samp>’ to be emitted. +See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of +warnings. A diversion does not exist for the purpose of testing with +the <code class="code">d</code> conditional operator until its initial definition ends +(see <a class="pxref" href="#Operators-in-Conditionals">Operators in Conditionals</a>). The following requests are used to +create and alter diversions. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.di</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edi'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-di"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eda"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.da</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eda'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-da"></a> +<a class="index-entry-id" id="index-beginning-diversion-_0028di_002c-box_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-beginning-_0028di_002c-box_0029"></a> +<a class="index-entry-id" id="index-ending-diversion-_0028di_002c-box_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-ending-_0028di_002c-box_0029"></a> +<a class="index-entry-id" id="index-appending-to-a-diversion-_0028da_002c-boxa_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-appending-to-_0028da_002c-boxa_0029"></a> +<p>Start collecting formatted output in a diversion called <var class="var">name</var>. The +<code class="code">da</code> request appends to a diversion called <var class="var">name</var>, creating it +if necessary. If <var class="var">name</var> already exists as an alias, the target of +the alias is replaced or appended to; recall <a class="ref" href="#Strings">Strings</a>. The pending +output line is diverted as well. Switching to another environment (with +the <code class="code">ev</code> request) before invoking <code class="code">di</code> or <code class="code">da</code> avoids +including any pending output line in the diversion; see +<a class="ref" href="#Environments">Environments</a>. +</p> +<p>Invoking <code class="code">di</code> or <code class="code">da</code> without an argument stops diverting +output to the diversion named by the most recent corresponding request. +If <code class="code">di</code> or <code class="code">da</code> is called without an argument when there is no +current diversion, a warning in category ‘<samp class="samp">di</samp>’ is produced. +See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression +of warnings. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Before the diversion. +.di yyy +In the diversion. +.br +.di +After the diversion. +.br + ⇒ After the diversion. +.yyy + ⇒ Before the diversion. In the diversion. +</pre></div></div> +</dd></dl> + +<a class="index-entry-id" id="index-box-_0028diversion-operation_0029"></a> +<p>GNU <code class="code">troff</code> supports <em class="dfn">box</em> requests to exclude a partially +collected line from a diversion, as this is often desirable. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebox"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.box</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ebox'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-box"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eboxa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.boxa</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eboxa'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-boxa"></a> +<p>Divert (or append) output to <var class="var">name</var>, similarly to the <code class="code">di</code> and +<code class="code">da</code> requests, respectively. Any pending output line is <em class="emph">not</em> +included in the diversion. Without an argument, stop diverting output; +any pending output line inside the diversion is discarded. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Before the box. +.box xxx +In the box. +.br +Hidden treasure. +.box +After the box. +.br + ⇒ Before the box. After the box. +.xxx + ⇒ In the box. +</pre></div></div> +</dd></dl> + +<p>Apart from pending output line inclusion and the request names that +populate them, boxes are handled exactly as diversions are. All of the +following <code class="code">groff</code> language elements can be used with them +interchangeably. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002ez_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.z]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ez_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ez"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ed_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.d]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ed_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ed"></a> +<a class="index-entry-id" id="index-nl-register_002c-and-_002ed"></a> +<a class="index-entry-id" id="index-nested-diversions"></a> +<a class="index-entry-id" id="index-diversion_002c-nested"></a> +<a class="index-entry-id" id="index-diversion-name-register-_0028_002ez_0029"></a> +<a class="index-entry-id" id="index-vertical-position-in-diversion-register-_0028_002ed_0029"></a> +<a class="index-entry-id" id="index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029"></a> +<p>Diversions may be nested. The read-only string-valued register +<code class="code">.z</code> contains the name of the current diversion. The read-only +register <code class="code">.d</code> contains the current vertical place in the diversion. +If the input text is not being diverted, <code class="code">.d</code> reports the same +location as the register <code class="code">nl</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002eh_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.h]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eh_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eh"></a> +<a class="index-entry-id" id="index-high_002dwater-mark-register-_0028_002eh_0029"></a> +<a class="index-entry-id" id="index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029"></a> +<a class="index-entry-id" id="index-position-of-lowest-text-line-_0028_002eh_0029"></a> +<a class="index-entry-id" id="index-text-line_002c-position-of-lowest-_0028_002eh_0029"></a> +<p>The read-only register <code class="code">.h</code> stores the <em class="dfn">high-water mark</em> on the +current page or in the current diversion. It corresponds to the text +baseline of the lowest line on the page.<a class="footnote" id="DOCF113" href="#FOOT113"><sup>113</sup></a> +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tm .h==\n[.h], nl==\n[nl] + ⇒ .h==0, nl==-1 +This is a test. +.br +.sp 2 +.tm .h==\n[.h], nl==\n[nl] + ⇒ .h==40, nl==120 +</pre></div></div> + +<a class="index-entry-id" id="index-_002eh-register_002c-difference-from-nl"></a> +<a class="index-entry-id" id="index-nl-register_002c-difference-from-_002eh"></a> +<p>As implied by the example, vertical motion does not produce text +baselines and thus does not increase the value interpolated by +‘<samp class="samp">\n[.h]</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bdn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dn]</code></strong><a class="copiable-link" href='#index-_005cn_005bdn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-dn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bdl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dl]</code></strong><a class="copiable-link" href='#index-_005cn_005bdl_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-dl"></a> +<a class="index-entry-id" id="index-dn-register_002c-and-da-_0028boxa_0029"></a> +<a class="index-entry-id" id="index-dl-register_002c-and-da-_0028boxa_0029"></a> +<a class="index-entry-id" id="index-da-request_002c-and-dn-_0028dl_0029"></a> +<a class="index-entry-id" id="index-boxa-request_002c-and-dn-_0028dl_0029"></a> +<p>After completing a diversion, the writable registers <code class="code">dn</code> and +<code class="code">dl</code> contain its vertical and horizontal sizes. Only the lines +just processed are counted: for the computation of <code class="code">dn</code> and +<code class="code">dl</code>, the requests <code class="code">da</code> and <code class="code">boxa</code> are handled as if +<code class="code">di</code> and <code class="code">box</code> had been used, respectively—lines that have +been already stored in the diversion (box) are not taken into account. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.\" Center text both horizontally and vertically. +.\" Macro .(c starts centering mode; .)c terminates it. +. +.\" Disable the escape character with .eo so that we +.\" don't have to double backslashes on the "\n"s. +.eo +.de (c +. br +. ev (c +. evc 0 +. in 0 +. nf +. di @c +.. +</pre></div></div> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de )c +. br +. ev +. di +. nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v) +. sp \n[@s]u +. ce 1000 +. @c +. ce 0 +. sp \n[@s]u +. br +. fi +. rr @s +. rm @c +.. +.ec +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005c_0021anything"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\!</code><span class="r"><i class="slanted">anything</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0021anything'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_0021"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003fanything_005c_003f"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\?</code><span class="r"><i class="slanted">anything</i></span><code class="t">\?</code></strong><a class="copiable-link" href='#index-_005c_003fanything_005c_003f'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005c_003f"></a> +<a class="index-entry-id" id="index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029"></a> +<a class="index-entry-id" id="index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029"></a> +<p><em class="dfn">Transparently</em> embed <var class="var">anything</var> into the current diversion, +preventing requests, macro calls, and escape sequences from being +interpreted when read into a diversion. This is useful for preventing +them from taking effect until the diverted text is actually output. The +<code class="code">\!</code> escape sequence transparently embeds input up to and including +the end of the line. The <code class="code">\?</code> escape sequence transparently embeds +input until its own next occurrence. +</p> +<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode-1"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f-1"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f-1"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_0021"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_0021"></a> +<p><var class="var">anything</var> may not contain newlines; use <code class="code">\!</code> by itself to +embed newlines in a diversion. The escape sequence <code class="code">\?</code> is also +recognized in copy mode and turned into a single internal code; it is +this code that terminates <var class="var">anything</var>. Thus the following example +prints 4. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.nr x 1 +.nf +.di d +\?\\?\\\\?\\\\\\\\nx\\\\?\\?\? +.di +.nr x 2 +.di e +.d +.di +.nr x 3 +.di f +.e +.di +.nr x 4 +.f +</pre></div></div> + +<p>Both escape sequences read the data in copy mode. +</p> +<a class="index-entry-id" id="index-_005c_0021_002c-in-top_002dlevel-diversion"></a> +<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_0021"></a> +<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_0021"></a> +<p>If <code class="code">\!</code> is used in the top-level diversion, its argument is +directly embedded into GNU <code class="code">troff</code>’s intermediate output. This can +be used, for example, to control a postprocessor that processes the data +before it is sent to an output driver. +</p> +<a class="index-entry-id" id="index-_005c_003f_002c-in-top_002dlevel-diversion"></a> +<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_003f"></a> +<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_003f"></a> +<p>The <code class="code">\?</code> escape used in the top-level diversion produces no output +at all; its argument is simply ignored. +</p></dd></dl> + +<a class="index-entry-id" id="index-_005c_0021_002c-and-output-request"></a> +<a class="index-entry-id" id="index-output-request_002c-and-_005c_0021"></a> +<a class="index-entry-id" id="index-output-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-output-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-output-request"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eoutput"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.output</code></strong> <var class="def-var-arguments">contents</var><a class="copiable-link" href='#index-_002eoutput'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-output"></a> +<p>Emit <var class="var">contents</var> directly to GNU <code class="code">troff</code>’s intermediate output +(subject to copy mode interpretation); this is similar to <code class="code">\!</code> used +at the top level. An initial neutral double quote in <var class="var">contents</var> is +stripped to allow embedding of leading spaces. +</p> +<p>This request can’t be used before the first page has started—if you +get an error, simply insert <code class="code">.br</code> before the <code class="code">output</code> request. +</p> +<p>Use with caution! It is normally only needed for mark-up used by a +postprocessor that does something with the output before sending it to +the output device, filtering out <var class="var">contents</var> again. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002easciify"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.asciify</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002easciify'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-asciify"></a> +<a class="index-entry-id" id="index-unformatting-diversions-_0028asciify_0029"></a> +<a class="index-entry-id" id="index-diversion_002c-unformatting-_0028asciify_0029"></a> +<a class="index-entry-id" id="index-trin-request_002c-and-asciify"></a> +<p><em class="dfn">Unformat</em> the diversion <var class="var">div</var> in a way such that Unicode basic +Latin (<abbr class="acronym">ASCII</abbr>) characters, characters translated with the +<code class="code">trin</code> request, space characters, and some escape sequences, that +were formatted and diverted into <var class="var">div</var> are treated like ordinary +input characters when <var class="var">div</var> is reread. Doing so can be useful in +conjunction with the <code class="code">writem</code> request. <code class="code">asciify</code> can be also +used for gross hacks; for example, the following sets +register <code class="code">n</code> to 1. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.tr @. +.di x +@nr n 1 +.br +.di +.tr @@ +.asciify x +.x +</pre></div></div> + +<p><code class="code">asciify</code> cannot return all items in a diversion to their source +equivalent: nodes such as those produced by the <code class="code">\N</code> escape +sequence will remain nodes, so the result cannot be guaranteed to be a +pure string. See <a class="xref" href="#Copy-Mode">Copy Mode</a>. Glyph parameters such as the type face +and size are not preserved; use <code class="code">unformat</code> to achieve that. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eunformat"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.unformat</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002eunformat'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-unformat"></a> +<p>Like <code class="code">asciify</code>, unformat the diversion <var class="var">div</var>. However, +<code class="code">unformat</code> handles only tabs and spaces between words, the latter +usually arising from spaces or newlines in the input. Tabs are treated +as input tokens, and spaces become adjustable again. The vertical sizes +of lines are not preserved, but glyph information (font, type size, +space width, and so on) is retained. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Punning-Names"> +<div class="nav-panel"> +<p> +Next: <a href="#Environments" accesskey="n" rel="next">Environments</a>, Previous: <a href="#Diversions" accesskey="p" rel="prev">Diversions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Punning-Names-1">5.30 Punning Names</h3> +<a class="index-entry-id" id="index-diversions-1"></a> + +<p>Macros, strings, and diversions share a name space; recall +<a class="ref" href="#Identifiers">Identifiers</a>. Internally, the same mechanism is used to store +them. You can thus call a macro with string interpolation syntax and +vice versa. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de subject +Typesetting +.. +.de predicate +rewards attention to detail +.. +\*[subject] \*[predicate]. +Truly. + ⇒ Typesetting + ⇒ rewards attention to detail Truly. +</pre></div></div> + +<p>What went wrong? Strings don’t contain newlines, but macros do. String +interpolation placed a newline at the end of ‘<samp class="samp">\*[subject]</samp>’, and the +next thing on the input was a space. Then when ‘<samp class="samp">\*[predicate]</samp>’ was +interpolated, it was followed by the empty request ‘<samp class="samp">.</samp>’ on a line by +itself. If we want to use macros as strings, we must take interpolation +behavior into account. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de subject +Typesetting\\ +.. +.de predicate +rewards attention to detail\\ +.. +\*[subject] \*[predicate]. +Truly. + ⇒ Typesetting rewards attention to detail. Truly. +</pre></div></div> + +<p>By ending each text line of the macros with an escaped +<code class="code">\<kbd class="key">RET</kbd></code>, we get the desired effect (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>).<a class="footnote" id="DOCF114" href="#FOOT114"><sup>114</sup></a> +What would have happened if we had used only one backslash at a time +instead? +</p> +<p>Interpolating a string does not hide existing macro arguments. We can +also place the escaped newline outside the string interpolation instead +of within the string definition. Thus, in a macro, a more efficient way +of doing +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.xx \\$@ +</pre></div></div> + +<p>is +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">\\*[xx]\\ +</pre></div></div> + +<p>The latter calling syntax doesn’t change the value of <code class="code">\$0</code>, which +is then inherited from the calling macro (see <a class="pxref" href="#Parameters">Parameters</a>). +</p> +<p>Diversions can be also called with string syntax. It is sometimes +convenient to copy one-line diversions to a string. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.di xx +the +.ft I +interpolation system +.ft +.br +.di +.ds yy This is a test of \*(xx\c +\*(yy. + ⇒ This is a test of the <i class="i">interpolation system</i>. +</pre></div></div> + +<p>As the previous example shows, it is possible to store formatted output +in strings. The <code class="code">\c</code> escape sequence prevents the subsequent +newline from being interpreted as a break (again, +see <a class="pxref" href="#Line-Continuation">Line Continuation</a>). +</p> +<p>Copying multi-output line diversions produces unexpected results. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.di xxx +a funny +.br +test +.br +.di +.ds yyy This is \*[xxx]\c +\*[yyy]. + ⇒ test This is a funny. +</pre></div></div> + +<p>Usually, it is not predictable whether a diversion contains one or more +output lines, so this mechanism should be avoided. With <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>, this was the only solution to strip off a final newline +from a diversion. Another disadvantage is that the spaces in the copied +string are already formatted, preventing their adjustment. This can +cause ugly results. +</p> +<a class="index-entry-id" id="index-stripping-final-newline-in-diversions"></a> +<a class="index-entry-id" id="index-diversion_002c-stripping-final-newline"></a> +<a class="index-entry-id" id="index-final-newline_002c-stripping-in-diversions"></a> +<a class="index-entry-id" id="index-newline_002c-final_002c-stripping-in-diversions"></a> +<a class="index-entry-id" id="index-horizontal-space_002c-unformatting"></a> +<a class="index-entry-id" id="index-space_002c-horizontal_002c-unformatting"></a> +<a class="index-entry-id" id="index-unformatting-horizontal-space"></a> +<p>A clean solution to this problem is available in GNU <code class="code">troff</code>, using +the requests <code class="code">chop</code> to remove the final newline of a diversion, and +<code class="code">unformat</code> to make the horizontal spaces adjustable again. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.box xxx +a funny +.br +test +.br +.box +.chop xxx +.unformat xxx +This is \*[xxx]. + ⇒ This is a funny test. +</pre></div></div> + +<p>See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>. +</p> + +<hr> +</div> +<div class="section-level-extent" id="Environments"> +<div class="nav-panel"> +<p> +Next: <a href="#Suppressing-Output" accesskey="n" rel="next">Suppressing Output</a>, Previous: <a href="#Diversions" accesskey="p" rel="prev">Diversions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Environments-1">5.31 Environments</h3> +<a class="index-entry-id" id="index-environments"></a> + +<p>As discussed in <a class="ref" href="#Deferring-Output">Deferring Output</a>, environments store most of the +parameters that determine the appearance of text. A default environment +named ‘<samp class="samp">0</samp>’ exists when GNU <code class="code">troff</code> starts up; it is modified by +formatting-related requests and escape sequences. +</p> +<a class="index-entry-id" id="index-stack"></a> +<p>You can create new environments and switch among them. Only one is +current at any given time. Active environments are managed using a +<em class="dfn">stack</em>, a data structure supporting “push” and “pop” +operations. The current environment is at the top of the stack. +The same environment name can be pushed onto the stack multiple times, +possibly interleaved with others. Popping the environment stack does +not destroy the current environment; it remains accessible by name and +can be made current again by pushing it at any time. Environments +cannot be renamed or deleted, and can only be modified when current. To +inspect the environment stack, use the <code class="code">pev</code> request; see +<a class="ref" href="#Debugging">Debugging</a>. +</p> +<p>Environments store the following information. +</p> +<ul class="itemize mark-bullet"> +<li>a partially collected line, if any + +</li><li>data about the most recently output glyph and line (registers +<code class="code">.cdp</code>, <code class="code">.cht</code>, <code class="code">.csk</code>, <code class="code">.n</code>, <code class="code">.w</code>) + +</li><li>typeface parameters (size, family, style, height and slant, inter-word +and inter-sentence space sizes) + +</li><li>page parameters (line length, title length, vertical spacing, line +spacing, indentation, line numbering, centering, right-alignment, +underlining, hyphenation parameters) + +</li><li>filling enablement; adjustment enablement and mode + +</li><li>tab stops; tab, leader, escape, control, no-break control, hyphenation, +and margin characters + +</li><li>input line traps + +</li><li>stroke and fill colors +</li></ul> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ev</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">ident</i></span>]</var><a class="copiable-link" href='#index-_002eev'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ev"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ev]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eev_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eev-1"></a> +<a class="index-entry-id" id="index-switching-environments-_0028ev_0029"></a> +<a class="index-entry-id" id="index-environment_002c-switching-_0028ev_0029"></a> +<a class="index-entry-id" id="index-environment-number_002fname-register-_0028_002eev_0029"></a> +<p>Enter the environment <var class="var">ident</var>, which is created if it does not +already exist, using the same parameters as for the default environment +used at startup. With no argument, GNU <code class="code">troff</code> switches to the +previous environment. +</p> +<p>Invoking <code class="code">ev</code> with an argument puts environment <var class="var">ident</var> onto +the top of the environment stack. (If it isn’t already present in the +stack, this is a proper push.) Without an argument, <code class="code">ev</code> pops the +environment stack, making the previous environment current. It is an +error to pop the environment stack with no previous environment +available. The read-only string-valued register <code class="code">.ev</code> contains the +name of the current environment—the one at the top of the stack. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ev footnote-env +.fam N +.ps 6 +.vs 8 +.ll -.5i +.ev + +<span class="r">…</span> + +.ev footnote-env +\[dg] Observe the smaller text and vertical spacing. +.ev +</pre></div></div> + +<p>We can familiarize ourselves with stack behavior by wrapping the +<code class="code">ev</code> request with a macro that reports the contents of the +<code class="code">.ev</code> register to the standard error stream. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de EV +. ev \\$1 +. tm environment is now \\n[.ev] +.. +. +.EV foo +.EV bar +.EV +.EV baz +.EV +.EV +.EV +</pre></div></div> + +<div class="example"> +<div class="group"><pre class="example-preformatted"> error→ environment is now foo + error→ environment is now bar + error→ environment is now foo + error→ environment is now baz + error→ environment is now foo + error→ environment is now 0 + error→ error: environment stack underflow + error→ environment is now 0 +</pre></div></div> + +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eevc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.evc</code></strong> <var class="def-var-arguments">environment</var><a class="copiable-link" href='#index-_002eevc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-evc"></a> +<a class="index-entry-id" id="index-copying-environment-_0028evc_0029"></a> +<a class="index-entry-id" id="index-environment_002c-copying-_0028evc_0029"></a> +<p>Copy the contents of <var class="var">environment</var> to the current environment. +</p> +<p>The following environment data are not copied. +</p> +<ul class="itemize mark-bullet"> +<li>a partially collected line, if present; + +</li><li>the interruption status of the previous input line (due to use of the +<code class="code">\c</code> escape sequence); + +</li><li>the count of remaining lines to center, to right-justify, or to +underline (with or without underlined spaces)—these are set to zero; + +</li><li>the activation status of temporary indentation; + +</li><li>input line traps and their associated data; + +</li><li>the activation status of line numbering (which can be reactivated with +‘<samp class="samp">.nm +0</samp>’<!-- /@w -->); and + +</li><li>the count of consecutive hyphenated lines (set to zero). +</li></ul> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002ew_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.w]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ew_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ew"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002echt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cht]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002echt_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002echt"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecdp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cdp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecdp_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ecdp"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecsk_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.csk]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecsk_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ecsk"></a> +<a class="index-entry-id" id="index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a> +<a class="index-entry-id" id="index-width_002c-of-last-glyph-_0028_002ew_0029"></a> +<a class="index-entry-id" id="index-height_002c-of-last-glyph-_0028_002echt_0029"></a> +<a class="index-entry-id" id="index-depth_002c-of-last-glyph-_0028_002ecdp_0029"></a> +<a class="index-entry-id" id="index-skew_002c-of-last-glyph-_0028_002ecsk_0029"></a> +<a class="index-entry-id" id="index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a> +<p>The <code class="code">\n[.w]</code> register contains the width of the last glyph +formatted in the environment. +</p> +<p>The <code class="code">\n[.cht]</code> register contains the height of the last glyph +formatted in the environment. +</p> +<p>The <code class="code">\n[.cdp]</code> register contains the depth of the last glyph +formatted in the environment. It is positive for glyphs extending below +the baseline. +</p> +<p>The <code class="code">\n[.csk]</code> register contains the <em class="dfn">skew</em> (how far to the +right of the glyph’s center that GNU <code class="code">troff</code> should place an +accent) of the last glyph formatted in the environment. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002en_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.n]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002en_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002en"></a> +<a class="index-entry-id" id="index-environment_002c-previous-line-length-_0028_002en_0029"></a> +<a class="index-entry-id" id="index-line-length_002c-previous-_0028_002en_0029"></a> +<a class="index-entry-id" id="index-length-of-previous-line-_0028_002en_0029"></a> +<a class="index-entry-id" id="index-previous-line-length-_0028_002en_0029"></a> +<p>The <code class="code">\n[.n]</code> register contains the length of the previous output +line emitted in the environment. +</p></dd></dl> + + + + +<hr> +</div> +<div class="section-level-extent" id="Suppressing-Output"> +<div class="nav-panel"> +<p> +Next: <a href="#Colors" accesskey="n" rel="next">Colors</a>, Previous: <a href="#Environments" accesskey="p" rel="prev">Environments</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Suppressing-Output-1">5.32 Suppressing Output</h3> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cO_005bnum_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\O[</code><span class="r"><i class="slanted">num</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cO_005bnum_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cO"></a> +<a class="index-entry-id" id="index-suppressing-output-_0028_005cO_0029"></a> +<a class="index-entry-id" id="index-output_002c-suppressing-_0028_005cO_0029"></a> +<p>Suppress GNU <code class="code">troff</code> output of glyphs and geometric objects. The +sequences <code class="code">\O2</code>, <code class="code">\O3</code>, <code class="code">\O4</code>, and <code class="code">\O5</code> are +intended for internal use by <code class="code">grohtml</code>. +</p> +<dl class="table"> +<dt>‘<samp class="samp">\O0</samp>’</dt> +<dd><p>Disable the emission of glyphs and geometric objects to the output +driver, provided that this sequence occurs at the outermost suppression +level (see <code class="code">\O3</code> and <code class="code">\04</code> below). Horizontal motions +corresponding to non-overstruck glyph widths still occur. +</p> +</dd> +<dt>‘<samp class="samp">\O1</samp>’</dt> +<dd><p>Enable the emission of glyphs and geometric objects to the output +driver, provided that this sequence occurs at the outermost suppression +level. +</p></dd> +</dl> + +<a class="index-entry-id" id="index-opminx"></a> +<a class="index-entry-id" id="index-opminy"></a> +<a class="index-entry-id" id="index-opmaxx"></a> +<a class="index-entry-id" id="index-opmaxy"></a> +<p><code class="code">\O0</code> and <code class="code">\O1</code> also reset the four registers <code class="code">opminx</code>, +<code class="code">opminy</code>, <code class="code">opmaxx</code>, and <code class="code">opmaxy</code> to −1. These +four registers mark the top left and bottom right hand corners of a box +encompassing all written or drawn output. +</p> +<dl class="table"> +<dt>‘<samp class="samp">\O2</samp>’</dt> +<dd><p>At the outermost suppression level, enable emission of glyphs and +geometric objects, and write to the standard error stream the page +number and values of the four aforementioned registers encompassing +glyphs written since the last interpolation of a <code class="code">\O</code> sequence, as +well as the page offset, line length, image file name (if any), +horizontal and vertical device motion quanta, and input file name. +Numeric values are in basic units. +</p> +</dd> +<dt>‘<samp class="samp">\O3</samp>’</dt> +<dd><p>Begin a nested suppression level. <code class="command">grohtml</code> uses this mechanism +to create images of output preprocessed with <code class="command">gpic</code>, +<code class="command">geqn</code>, and <code class="command">gtbl</code>. At startup, GNU <code class="code">troff</code> is at +the outermost suppression level. <code class="command">pre-grohtml</code> generates these +sequences when processing the document, using GNU <code class="command">troff</code> with +the <code class="code">ps</code> output device, Ghostscript, and the PNM tools to produce +images in PNG format. They start a new page if the device is not +<code class="code">html</code> or <code class="code">xhtml</code>, to reduce the number of images crossing a +page boundary. +</p> +</dd> +<dt>‘<samp class="samp">\O4</samp>’</dt> +<dd><p>End a nested suppression level. +</p></dd> +</dl> + +<dl class="table"> +<dt>‘<samp class="samp">\O[5<var class="var">P</var><var class="var">file</var>]</samp>’</dt> +<dd><p>At the outermost suppression level, write the name <code class="code">file</code> to the +standard error stream at position <var class="var">P</var>, which must be one of +<code class="code">l</code>, <code class="code">r</code>, <code class="code">c</code>, or <code class="code">i</code>, corresponding to left, +right, centered, and inline alignments within the document, +respectively. <var class="var">file</var> is a name associated with the production of +the next image. +</p></dd> +</dl> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005b_002eO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.O]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eO_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eO"></a> +<a class="index-entry-id" id="index-suppression-nesting-level-register"></a> +<a class="index-entry-id" id="index-nesting-level_002c-suppression_002c-register"></a> +<a class="index-entry-id" id="index-level_002c-suppression-nesting_002c-register"></a> +<p>Output suppression nesting level applied by <code class="code">\O3</code> and <code class="code">\O4</code> +escape sequences. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="I_002fO"> +<div class="nav-panel"> +<p> +Next: <a href="#Postprocessor-Access" accesskey="n" rel="next">Postprocessor Access</a>, Previous: <a href="#Suppressing-Output" accesskey="p" rel="prev">Suppressing Output</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="I_002fO-1">5.33 I/O</h3> +<a class="index-entry-id" id="index-i_002fo"></a> +<a class="index-entry-id" id="index-input-and-output-requests"></a> +<a class="index-entry-id" id="index-requests-for-input-and-output"></a> +<a class="index-entry-id" id="index-output-and-input-requests"></a> + +<p><code class="code">gtroff</code> has several requests for including files: +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.so</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002eso'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-so"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002esoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.soquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002esoquiet'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-soquiet"></a> +<a class="index-entry-id" id="index-including-a-file-_0028so_0029"></a> +<a class="index-entry-id" id="index-file_002c-inclusion-_0028so_0029"></a> +<p>Replace the <code class="code">so</code> request’s control line with the contents of the +file named by the argument, “sourcing” it. <var class="var">file</var> is sought in +the directories specified by <samp class="option">-I</samp> command-line option. If +<var class="var">file</var> does not exist, a warning in category ‘<samp class="samp">file</samp>’ is produced +and the request has no further effect. See <a class="xref" href="#Warnings">Warnings</a>, for +information about the enablement and suppression of warnings. +</p> +<p><code class="code">so</code> can be useful for large documents; e.g., allowing each chapter +of a book to be kept in a separate file. However, files interpolated +with <code class="code">so</code> are not preprocessed; to overcome this limitation, see +the <cite class="cite">gsoelim<span class="r">(1)</span></cite> man page. +</p> +<p>Since GNU <code class="code">troff</code> replaces the entire control line with the +contents of a file, it matters whether <code class="code">file</code> is terminated with a +newline or not. Assume that file <samp class="file">xxx</samp> contains only the word +‘<samp class="samp">foo</samp>’ without a trailing newline. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">$ printf 'foo' > xxx + +The situation is +.so xxx +bar. + ⇒ The situation is foobar. +</pre></div></div> + +<p><code class="code">soquiet</code> works the same way, except that no warning diagnostic is +issued if <var class="var">file</var> does not exist. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pso</code></strong> <var class="def-var-arguments">command</var><a class="copiable-link" href='#index-_002epso'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pso"></a> +<p>Read the standard output from the specified <var class="var">command</var> and include +it in place of the <code class="code">pso</code> request. +</p> +<a class="index-entry-id" id="index-safer-mode-3"></a> +<a class="index-entry-id" id="index-mode_002c-safer-3"></a> +<a class="index-entry-id" id="index-unsafe-mode-3"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-3"></a> +<p>It is an error to use this request in safer mode, which is the +default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp> +option to enable unsafe mode. +</p> +<p>The comment regarding a final newline for the <code class="code">so</code> request is valid +for <code class="code">pso</code> also. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002emso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mso</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emso'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-mso"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002emsoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.msoquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emsoquiet'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-msoquiet"></a> +<p>Identical to the <code class="code">so</code> and <code class="code">soquiet</code> requests, respectively, +except that <code class="code">gtroff</code> searches for the specified <var class="var">file</var> in the +same directories as macro files for the <samp class="option">-m</samp> command-line option. +If the file name to be included has the form <samp class="file"><var class="var">name</var>.tmac</samp> and +it isn’t found, these requests try to include <samp class="file">tmac.<var class="var">name</var></samp> and +vice versa. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etrf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002etrf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-trf"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ecf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002ecf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cf"></a> +<a class="index-entry-id" id="index-transparent-output-_0028cf_002c-trf_0029"></a> +<a class="index-entry-id" id="index-output_002c-transparent-_0028cf_002c-trf_0029"></a> +<a class="index-entry-id" id="index-cf-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-cf-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-cf-request"></a> +<a class="index-entry-id" id="index-trf-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-trf-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-trf-request"></a> +<p>Transparently output the contents of <var class="var">file</var>. Each line is output as +if it were preceded by <code class="code">\!</code>; however, the lines are <em class="emph">not</em> +subject to copy mode interpretation. If the file does not end with a +newline, <code class="code">trf</code> adds one. Both requests cause a break. +</p> +<p>When used in a diversion, these requests embed a node (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>) in it that, when reread, causes the contents of <var class="var">file</var> +to be transparently copied to the output. In <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>, the contents of <var class="var">file</var> are immediately copied to the +output regardless of whether there is a current diversion; this +behaviour is so anomalous that it must be considered a bug. +</p> +<a class="index-entry-id" id="index-trf-request_002c-and-invalid-characters"></a> +<a class="index-entry-id" id="index-characters_002c-invalid-for-trf-request"></a> +<a class="index-entry-id" id="index-invalid-characters-for-trf-request"></a> +<p>While <code class="code">cf</code> copies the contents of <var class="var">file</var> completely +unprocessed, <code class="code">trf</code> disallows characters such as NUL that are not +valid <code class="code">gtroff</code> input characters (see <a class="pxref" href="#Identifiers">Identifiers</a>). +</p> +<p>For <code class="code">cf</code>, within a diversion, “completely unprocessed” means that +each line of a file to be inserted is handled as if it were preceded by +<code class="code">\!\\!</code>. +</p> +<p>To define a macro <code class="code">x</code> containing the contents of +file <samp class="file">f</samp>, use +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ev 1 +.di x +.trf f +.di +.ev +</pre></div></div> + +<p>The calls to <code class="code">ev</code> prevent the partially collected output line +from becoming part of the diversion (see <a class="pxref" href="#Diversions">Diversions</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enx"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nx</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002enx'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nx"></a> +<a class="index-entry-id" id="index-processing-next-file-_0028nx_0029"></a> +<a class="index-entry-id" id="index-file_002c-processing-next-_0028nx_0029"></a> +<a class="index-entry-id" id="index-next-file_002c-processing-_0028nx_0029"></a> +<p>Force <code class="code">gtroff</code> to continue processing of the file specified as an +argument. If no argument is given, immediately jump to the end of file. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002erd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rd</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">prompt</i></span> [<span class="r"><i class="slanted">arg1</i></span> <span class="r"><i class="slanted">arg2</i></span> …]]</var><a class="copiable-link" href='#index-_002erd'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-rd"></a> +<a class="index-entry-id" id="index-reading-from-standard-input-_0028rd_0029"></a> +<a class="index-entry-id" id="index-standard-input_002c-reading-from-_0028rd_0029"></a> +<a class="index-entry-id" id="index-input_002c-standard_002c-reading-from-_0028rd_0029"></a> +<p>Read from standard input, and include what is read as though it were +part of the input file. Text is read until a blank line is encountered. +</p> +<p>If standard input is a TTY input device (keyboard), write <var class="var">prompt</var> +to standard error, followed by a colon (or send BEL for a beep if no +argument is given). +</p> +<p>Arguments after <var class="var">prompt</var> are available for the input. For example, +the line +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.rd data foo bar +</pre></div></div> + +<p>with the input ‘<samp class="samp">This is \$2.</samp>’<!-- /@w --> prints +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">This is bar. +</pre></div></div> +</dd></dl> + +<a class="index-entry-id" id="index-form-letters"></a> +<a class="index-entry-id" id="index-letters_002c-form"></a> +<p>Using the <code class="code">nx</code> and <code class="code">rd</code> requests, it is easy to set up form +letters. The form letter template is constructed like this, putting the +following lines into a file called <samp class="file">repeat.let</samp>: +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ce +\*(td +.sp 2 +.nf +.rd +.sp +.rd +.fi +Body of letter. +.bp +.nx repeat.let +</pre></div></div> + +<a class="index-entry-id" id="index-ex-request_002c-used-with-nx-and-rd"></a> +<p>When this is run, a file containing the following lines should be +redirected in. Requests included in this file are executed as though +they were part of the form letter. The last block of input is the +<code class="code">ex</code> request, which tells GNU <code class="code">troff</code> to stop processing. If +this were not there, <code class="code">troff</code> would not know when to stop. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">Trent A. Fisher +708 NW 19th Av., #202 +Portland, OR 97209 + +Dear Trent, + +Len Adollar +4315 Sierra Vista +San Diego, CA 92103 + +Dear Mr. Adollar, + +.ex +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pi</code></strong> <var class="def-var-arguments">pipe</var><a class="copiable-link" href='#index-_002epi'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pi"></a> +<p>Pipe the output of <code class="code">gtroff</code> to the shell command(s) specified by +<var class="var">pipe</var>. This request must occur before <code class="code">gtroff</code> has a chance +to print anything. +</p> +<a class="index-entry-id" id="index-safer-mode-4"></a> +<a class="index-entry-id" id="index-mode_002c-safer-4"></a> +<a class="index-entry-id" id="index-unsafe-mode-4"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-4"></a> +<p>It is an error to use this request in safer mode, which is the +default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp> +option to enable unsafe mode. +</p> +<p>Multiple calls to <code class="code">pi</code> are allowed, acting as a chain. For +example, +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.pi foo +.pi bar +... +</pre></div></div> + +<p>is the same as ‘<samp class="samp">.pi foo | bar</samp>’<!-- /@w -->. +</p> +<a class="index-entry-id" id="index-groff_002c-and-pi-request"></a> +<a class="index-entry-id" id="index-pi-request_002c-and-groff"></a> +<p>The intermediate output format of GNU <code class="code">troff</code> is piped to the +specified commands. Consequently, calling <code class="code">groff</code> without the +<samp class="option">-Z</samp> option normally causes a fatal error. +</p></dd></dl> + +<a class="index-entry-id" id="index-system-commands_002c-running"></a> +<a class="index-entry-id" id="index-running-system-commands"></a> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002esy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sy</code></strong> <var class="def-var-arguments">cmds</var><a class="copiable-link" href='#index-_002esy'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-sy"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsystat_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[systat]</code></strong><a class="copiable-link" href='#index-_005cn_005bsystat_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-systat"></a> +<p>Execute the shell command(s) specified by <var class="var">cmds</var>. The output is not +saved anywhere, so it is up to the user to do so. +</p> +<a class="index-entry-id" id="index-safer-mode-5"></a> +<a class="index-entry-id" id="index-mode_002c-safer-5"></a> +<a class="index-entry-id" id="index-unsafe-mode-5"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-5"></a> +<p>It is an error to use this request in safer mode; this is the default. +Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to +enable unsafe mode. +</p> +<p>The following code fragment introduces the current time into a document. +</p> +<a class="index-entry-id" id="index-perl"></a> +<div class="example"> +<div class="group"><pre class="example-preformatted">.sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\ + (localtime(time))[2,1,0]' > /tmp/x\n[$$] +.so /tmp/x\n[$$] +.sy rm /tmp/x\n[$$] +\nH:\nM:\nS +</pre></div></div> + +<p>This works by having the Perl script (run by <code class="code">sy</code>) write +<code class="code">nr</code> requests that set the registers <code class="code">H</code>, <code class="code">M</code>, and +<code class="code">S</code> to a temporary file. The <code class="code">roff</code> document then reads the +temporary file using the <code class="code">so</code> request. +</p> +<a class="index-entry-id" id="index-time_002c-formatting"></a> +<a class="index-entry-id" id="index-formatting-the-time"></a> +<p>The registers <code class="code">seconds</code>, <code class="code">minutes</code>, and <code class="code">hours</code>, +initialized at startup of GNU <code class="code">troff</code>, should satisfy most +requirements. Use the <code class="code">af</code> request to format their values for +output. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.af hours 00 +.af minutes 00 +.af seconds 00 +\n[hours]:\n[minutes]:\n[seconds] + ⇒ 02:17:54 +</pre></div></div> + +<a class="index-entry-id" id="index-system_0028_0029-return-value-register-_0028systat_0029"></a> +<p>The writable register <code class="code">systat</code> contains the return value of the +<code class="code">system()</code> function executed by the last <code class="code">sy</code> request. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eopen"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.open</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopen'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-open"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002eopena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.opena</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopena'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-opena"></a> +<a class="index-entry-id" id="index-opening-file-_0028open_0029"></a> +<a class="index-entry-id" id="index-file_002c-opening-_0028open_0029"></a> +<a class="index-entry-id" id="index-appending-to-a-file-_0028opena_0029"></a> +<a class="index-entry-id" id="index-file_002c-appending-to-_0028opena_0029"></a> +<p>Open the specified <var class="var">file</var> for writing and associates the specified +<var class="var">stream</var> with it. +</p> +<p>The <code class="code">opena</code> request is like <code class="code">open</code>, but if the file exists, +append to it instead of truncating it. +</p> +<a class="index-entry-id" id="index-safer-mode-6"></a> +<a class="index-entry-id" id="index-mode_002c-safer-6"></a> +<a class="index-entry-id" id="index-unsafe-mode-6"></a> +<a class="index-entry-id" id="index-mode_002c-unsafe-6"></a> +<p>It is an error to use these requests in safer mode; this is the default. +Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to +enable unsafe mode. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewrite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.write</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewrite'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-write"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002ewritec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writec</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewritec'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-writec"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-write-request"></a> +<a class="index-entry-id" id="index-write-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-write-request"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-writec-request"></a> +<a class="index-entry-id" id="index-writec-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writec-request"></a> +<a class="index-entry-id" id="index-writing-to-file-_0028write_002c-writec_0029"></a> +<a class="index-entry-id" id="index-file_002c-writing-to-_0028write_002c-writec_0029"></a> +<p>Write to the file associated with the specified <var class="var">stream</var>. The +stream must previously have been the subject of an open request. The +remainder of the line is interpreted as the <code class="code">ds</code> request reads its +second argument: an initial neutral double quote in <var class="var">contents</var> is +stripped to allow embedding of leading spaces, and it is read in copy +mode. +</p> +<p>The <code class="code">writec</code> request is like <code class="code">write</code>, but only <code class="code">write</code> +appends a newline to the data. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewritem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writem</code></strong> <var class="def-var-arguments">stream xx</var><a class="copiable-link" href='#index-_002ewritem'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-writem"></a> +<a class="index-entry-id" id="index-asciify-request_002c-and-writem"></a> +<p>Write the contents of the macro or string <var class="var">xx</var> to the file +associated with the specified <var class="var">stream</var>. +</p> +<a class="index-entry-id" id="index-writem-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-writem-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writem-request"></a> +<p><var class="var">xx</var> is read in copy mode, i.e., already formatted elements are +ignored. Consequently, diversions must be unformatted with the +<code class="code">asciify</code> request before calling <code class="code">writem</code>. Usually, this +means a loss of information. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eclose"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.close</code></strong> <var class="def-var-arguments">stream</var><a class="copiable-link" href='#index-_002eclose'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-close"></a> +<a class="index-entry-id" id="index-closing-file-_0028close_0029"></a> +<a class="index-entry-id" id="index-file_002c-closing-_0028close_0029"></a> +<p>Close the specified <var class="var">stream</var>; the stream is no longer an acceptable +argument to the <code class="code">write</code> request. +</p> +<p>Here a simple macro to write an index entry. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.open idx test.idx +. +.de IX +. write idx \\n[%] \\$* +.. +. +.IX test entry +. +.close idx +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cVe"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\V</code><span class="r"><i class="slanted">e</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cVe'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cV"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cV_0028ev"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\V(</code><span class="r"><i class="slanted">ev</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cV_0028ev'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cV_005benv_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\V[</code><span class="r"><i class="slanted">env</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cV_005benv_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cV_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-_005cV"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005cV"></a> +<p>Interpolate the contents of the specified environment variable <var class="var">env</var> +(one-character name <var class="var">e</var>, two-character name <var class="var">ev</var>) as +returned by the function <cite class="cite">getenv<span class="r">(3)</span></cite>. <code class="code">\V</code> is interpreted +even in copy mode (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Postprocessor-Access"> +<div class="nav-panel"> +<p> +Next: <a href="#Miscellaneous" accesskey="n" rel="next">Miscellaneous</a>, Previous: <a href="#I_002fO" accesskey="p" rel="prev">I/O</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Postprocessor-Access-1">5.34 Postprocessor Access</h3> +<a class="index-entry-id" id="index-postprocessor-access"></a> +<a class="index-entry-id" id="index-access-to-postprocessor"></a> + +<p>Two escape sequences and two requests enable documents to pass +information directly to a postprocessor. These are useful for +exercising device-specific capabilities that the <code class="code">groff</code> language +does not abstract or generalize; examples include the embedding of +hyperlinks and image files. Device-specific functions are documented in +each output driver’s man page, such as <cite class="cite">gropdf<span class="r">(1)</span></cite>, +<cite class="cite">grops<span class="r">(1)</span></cite>, or <cite class="cite">grotty<span class="r">(1)</span></cite>. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edevice"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.device</code></strong> <var class="def-var-arguments">xxx <span class="r">…</span></var><a class="copiable-link" href='#index-_002edevice'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-device"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cX_0027xxx-_2026_0027"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\X<code class="code">'</code></code><span class="r"><i class="slanted">xxx <span class="r">…</span></i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cX_0027xxx-_2026_0027'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cX"></a> +<p>Embed all <var class="var">xxx</var> arguments into GNU <code class="code">troff</code> output as parameters +to a device control command ‘<samp class="samp">x X</samp>’<!-- /@w -->. The meaning and +interpretation of such parameters is determined by the output driver or +other postprocessor. +</p> +<a class="index-entry-id" id="index-device-request_002c-and-copy-mode"></a> +<a class="index-entry-id" id="index-copy-mode_002c-and-device-request"></a> +<a class="index-entry-id" id="index-mode_002c-copy_002c-and-device-request"></a> +<p>The <code class="code">device</code> request processes its arguments in copy mode +(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). An initial neutral double quote in <var class="var">contents</var> +is stripped to allow embedding of leading spaces. +<a class="index-entry-id" id="index-_005c_0026_002c-in-_005cX"></a> +<a class="index-entry-id" id="index-_005c_0029_002c-in-_005cX"></a> +<a class="index-entry-id" id="index-_005c_0025_002c-in-_005cX"></a> +<a class="index-entry-id" id="index-_005c_003a_002c-in-_005cX"></a> +By contrast, within <code class="code">\X</code> arguments, the escape sequences <code class="code">\&</code>, +<code class="code">\)</code>, <code class="code">\%</code>, and <code class="code">\:</code> are ignored; <code class="code">\<kbd class="key">SP</kbd></code> and +<code class="code">\~</code> are converted to single space characters; and <code class="code">\\</code> has +its escape character stripped. So that the basic Latin subset of the +Unicode character set<a class="footnote" id="DOCF115" href="#FOOT115"><sup>115</sup></a> can be reliably encoded in device control +commands, seven special character escape sequences (‘<samp class="samp">\-</samp>’, +‘<samp class="samp">\[aq]</samp>’, ‘<samp class="samp">\[dq]</samp>’, ‘<samp class="samp">\[ga]</samp>’, ‘<samp class="samp">\[ha]</samp>’, ‘<samp class="samp">\[rs]</samp>’, +and ‘<samp class="samp">\[ti]</samp>’,) are mapped to basic Latin characters; see the +<cite class="cite">groff_char<span class="r">(7)</span></cite> man page. For this transformation, character +translations and special character definitions are +ignored.<a class="footnote" id="DOCF116" href="#FOOT116"><sup>116</sup></a> The use of any +other escape sequence in <code class="code">\X</code> parameters is normally an error. +</p> +<a class="index-entry-id" id="index-use_005fcharnames_005fin_005fspecial"></a> +<a class="index-entry-id" id="index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"></a> +<a class="index-entry-id" id="index-_005cX_002c-and-special-characters"></a> +<p>If the <code class="code">use_charnames_in_special</code> directive appears in the output +device’s <samp class="file">DESC</samp> file, the use of special character escape sequences +is <em class="emph">not</em> an error; they are simply output verbatim (with the +exception of the seven mapped to Unicode basic Latin characters, +discussed above). <code class="code">use_charnames_in_special</code> is currently employed +only by <code class="code">grohtml</code>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edevicem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.devicem</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edevicem'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-devicem"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cYn"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\Y</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cYn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_005cY"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cY_0028nm"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\Y(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cY_0028nm'> ¶</a></span></dt> +<dt class="deffnx def-cmd-deffn" id="index-_005cY_005bname_005d"><span class="category-def">Escape sequence: </span><span><strong class="def-name"><code class="t">\Y[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cY_005bname_005d'> ¶</a></span></dt> +<dd><p>This is approximately equivalent to ‘<samp class="samp">\X'\*[<var class="var">name</var>]'</samp>’ +(one-character name <var class="var">n</var>, two-character name <var class="var">nm</var>). +However, the contents of the string or macro <var class="var">name</var> are not +interpreted; also it is permitted for <var class="var">name</var> to have been defined as +a macro and thus contain newlines (it is not permitted for the argument +to <code class="code">\X</code> to contain newlines). The inclusion of newlines requires +an extension to the <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> output format, and +confuses drivers that do not know about this extension (see <a class="pxref" href="#Device-Control-Commands">Device Control Commands</a>). +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etag"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tag</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etag'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tag"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002etaga"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.taga</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etaga'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-taga"></a> +<p>Reserved for internal use. +</p></dd></dl> + + + +<hr> +</div> +<div class="section-level-extent" id="Miscellaneous"> +<div class="nav-panel"> +<p> +Next: <a href="#Gtroff-Internals" accesskey="n" rel="next"><code class="code">gtroff</code> Internals</a>, Previous: <a href="#Postprocessor-Access" accesskey="p" rel="prev">Postprocessor Access</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Miscellaneous-1">5.35 Miscellaneous</h3> + +<p>We document here GNU <code class="code">troff</code> features that fit poorly elsewhere. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">start</i></span> [<span class="r"><i class="slanted">increment</i></span> [<span class="r"><i class="slanted">space</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]]]</var><a class="copiable-link" href='#index-_002enm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nm"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bln_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ln]</code></strong><a class="copiable-link" href='#index-_005cn_005bln_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ln"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enm_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002enm-1"></a> +<a class="index-entry-id" id="index-printing-line-numbers-_0028nm_0029"></a> +<a class="index-entry-id" id="index-line-numbers_002c-printing-_0028nm_0029"></a> +<a class="index-entry-id" id="index-numbers_002c-line_002c-printing-_0028nm_0029"></a> +<p>Begin (or, with no arguments, cease) numbering output lines. +<var class="var">start</var> assigns the number of the <em class="emph">next</em> output line. Only +line numbers divisible by <var class="var">increment</var> are marked (default: +‘<samp class="samp">1</samp>’). <var class="var">space</var> configures the horizontal spacing between the +number and the text (default: ‘<samp class="samp">1</samp>’). Any given <var class="var">indentation</var> is +applied to the numbers (default: ‘<samp class="samp">0</samp>’). The third and fourth +arguments are reckoned in numeral widths (<code class="code">\0</code>). <var class="var">start</var> must +be non-negative and <var class="var">increment</var> positive. +</p> +<p>The formatter aligns the number to the right in a width of three numeral +spaces plus <var class="var">indentation</var>, then catenates <var class="var">space</var> and the output +line. The line length is <em class="emph">not</em> reduced. Depending on the value of +the page offset,<a class="footnote" id="DOCF117" href="#FOOT117"><sup>117</sup></a> numbers wider than +the allocated space protrude into the left margin, or shift the output +line to the right. +</p> +<p>Line numbering parameters corresponding to missing arguments are not +altered. After numbering is disabled, ‘<samp class="samp">.nm +0</samp>’ resumes it using +the previously active parameters. +</p> +<p>The parameters of <code class="code">nm</code> are associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p> +<a class="index-entry-id" id="index-output-line-number-register-_0028ln_0029"></a> +<a class="index-entry-id" id="index-line-number_002c-output_002c-register-_0028ln_0029"></a> +<p>While numbering is enabled, the output line number register <code class="code">ln</code> is +updated as each line is output, even if no line number is formatted with +it because it is being skipped (it is not a multiple of <var class="var">increment</var>) +or because numbering is suppressed (see the <code class="code">nn</code> request below). +</p> +<p>The <code class="code">.nm</code> register tracks the enablement status of numbering. +Temporary suspension of numbering with the <code class="code">nn</code> request does +<em class="emph">not</em> alter its value. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.po 5n +.ll 44n +Programming, +when stripped of all its circumstantial irrelevancies, +.nm 999 1 1 -4 +boils down to no more and no less than +.nm +0 3 +very effective thinking so as to avoid unmastered +.nn 2 +complexity, +to very vigorous separation of your many +different concerns. +.br +\(em Edsger Dijkstra +.sp +.nm 1 1 1 +This guy's arrogance takes your breath away. +.br +\(em John Backus + ⇒ Programming, when stripped of all its cir- + ⇒ 999 cumstantial irrelevancies, boils down to no + ⇒ more and no less than very effective think- + ⇒ ing so as to avoid unmastered complexity, to + ⇒ very vigorous separation of your many dif- + ⇒ ferent concerns. + ⇒ 1002 -- Edsger Dijkstra + ⇒ + ⇒ 1 This guy’s arrogance takes your breath away. + ⇒ 2 -- John Backus +</pre></div></div> +</dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002enn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">skip</i></span>]</var><a class="copiable-link" href='#index-_002enn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-nn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002enn-1"></a> +<p>Suppress numbering of the next <var class="var">skip</var> output lines that would +otherwise be numbered. The default is 1. <code class="code">nn</code> can be invoked +when line numbering is not active; suppression of numbering will take +effect for <var class="var">skip</var> lines once <code class="code">nm</code> enables it. +</p> +<p>The <code class="code">.nn</code> register stores the count of output lines still to have +their numbering suppressed. +</p> +<p>This count is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). +</p></dd></dl> + +<p>To test whether the current output line will be numbered, you must check +both the <code class="code">.nm</code> and <code class="code">.nn</code> registers. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"> .de is-numbered + . nop This line + . ie (\\n[.nm] & (1-\\n[.nn])) IS + . el ISN'T + . nop numbered. + . br + .. + Test line numbering. + .is-numbered + .nm 1 + .nn 1 + .is-numbered + .is-numbered + .nm + .is-numbered + ⇒ Test line numbering. This line ISN’T numbered. + ⇒ This line ISN’T numbered. + ⇒ 1 This line IS numbered. + ⇒ This line ISN’T numbered. +</pre></div></div> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002emc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">margin-character</i></span> [<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002emc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-mc"></a> +<a class="index-entry-id" id="index-margin-glyph-_0028mc_0029"></a> +<a class="index-entry-id" id="index-glyph_002c-for-margins-_0028mc_0029"></a> +<p>Begin (or, with no arguments, cease) writing a <em class="dfn">margin-character</em> to +the right of each output line. The <var class="var">distance</var> argument separates +<var class="var">margin-character</var> from the right margin. If absent, the most +recent value is used; the default is 10 points. If an output line +exceeds the line length, the margin character is appended to it. +<a class="index-entry-id" id="index-tl-request_002c-and-mc"></a> +No margin character is written on lines produced by the <code class="code">tl</code> +request. +</p> +<p>The margin character is a property of the output line; the margin +character last configured when the line is output controls. If the +margin character is disabled before an output line breaks, none is +output (but see below). +</p> +<p>The margin character is associated with the environment +(see <a class="pxref" href="#Environments">Environments</a>). +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 5i +.nf +.mc \[br] +This paragraph is marked with a margin character. +.sp +As seen above, vertical space isn't thus marked. +\& +An output line that is present, but empty, is. + ⇒ This paragraph is marked with a margin character. | + ⇒ + ⇒ As seen above, vertical space isn’t thus marked. | + ⇒ | + ⇒ An output line that is present, but empty, is. | +</pre></div></div> +</dd></dl> + +<p>For compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, a call to <code class="code">mc</code> +to set the margin character can’t be undone immediately; at least one +line gets a margin character. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ll 10n +.nf +.mc | +.mc * +.mc +foo +bar + ⇒ foo * + ⇒ bar +</pre></div></div> + +<a class="index-entry-id" id="index-gdiffmk"></a> +<a class="index-entry-id" id="index-nrchbar"></a> +<a class="index-entry-id" id="index-changebar"></a> +<a class="index-entry-id" id="index-diffmk"></a> +<p>The margin character mechanism is commonly used to annotate changes in +documents. The <code class="code">groff</code> distribution ships a program, +<code class="command">gdiffmk</code>, to assist with this task.<a class="footnote" id="DOCF118" href="#FOOT118"><sup>118</sup></a> +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epsbb"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.psbb</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002epsbb'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-psbb"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bllx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[llx]</code></strong><a class="copiable-link" href='#index-_005cn_005bllx_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-llx"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blly_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lly]</code></strong><a class="copiable-link" href='#index-_005cn_005blly_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lly"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005burx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[urx]</code></strong><a class="copiable-link" href='#index-_005cn_005burx_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-urx"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bury_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ury]</code></strong><a class="copiable-link" href='#index-_005cn_005bury_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ury"></a> +<a class="index-entry-id" id="index-PostScript_002c-bounding-box"></a> +<a class="index-entry-id" id="index-bounding-box"></a> +<p>Retrieve the bounding box of the PostScript image found in <var class="var">file</var>, +which must conform to Adobe’s <em class="dfn">Document Structuring Conventions</em> +(DSC), locate a <code class="code">%%BoundingBox</code> comment, and store the (upper-, +lower-, <span class="w-nolinebreak-text">-left</span><!-- /@w -->, <span class="w-nolinebreak-text">-right</span><!-- /@w -->) values into the registers <code class="code">llx</code>, +<code class="code">lly</code>, <code class="code">urx</code>, and <code class="code">ury</code>. If an error occurs (for +example, if no <code class="code">%%BoundingBox</code> comment is present), the formatter +sets these registers to 0. +</p> +<p>The search path for <var class="var">file</var> can be controlled with the <samp class="option">-I</samp> +command-line option. +</p></dd></dl> + + + + +<hr> +</div> +<div class="section-level-extent" id="Gtroff-Internals"> +<div class="nav-panel"> +<p> +Next: <a href="#Debugging" accesskey="n" rel="next">Debugging</a>, Previous: <a href="#Miscellaneous" accesskey="p" rel="prev">Miscellaneous</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="gtroff-Internals">5.36 <code class="code">gtroff</code> Internals</h3> + +<a class="index-entry-id" id="index-input-token"></a> +<a class="index-entry-id" id="index-token_002c-input"></a> +<a class="index-entry-id" id="index-output-node"></a> +<a class="index-entry-id" id="index-node_002c-output"></a> +<p><code class="code">gtroff</code> processes input in three steps. One or more input +characters are converted to an <em class="dfn">input token</em>.<a class="footnote" id="DOCF119" href="#FOOT119"><sup>119</sup></a> Then, one or more input tokens are converted to +an <em class="dfn">output node</em>. Finally, output nodes are converted to the +intermediate output language understood by all output devices. +</p> +<p>Actually, before step one happens, <code class="code">gtroff</code> converts certain escape +sequences into reserved input characters (not accessible by the user); +such reserved characters are used for other internal processing also – +this is the very reason why not all characters are valid input. +See <a class="xref" href="#Identifiers">Identifiers</a>, for more on this topic. +</p> +<p>For example, the input string ‘<samp class="samp">fi\[:u]</samp>’ is converted into a +character token ‘<samp class="samp">f</samp>’, a character token ‘<samp class="samp">i</samp>’, and a special +token ‘<samp class="samp">:u</samp>’ (representing u umlaut). Later on, the character +tokens ‘<samp class="samp">f</samp>’ and ‘<samp class="samp">i</samp>’ are merged to a single output node +representing the ligature glyph ‘<samp class="samp">fi</samp>’ (provided the current font has +a glyph for this ligature); the same happens with ‘<samp class="samp">:u</samp>’. All output +glyph nodes are ‘processed’, which means that they are invariably +associated with a given font, font size, advance width, etc. During the +formatting process, <code class="code">gtroff</code> itself adds various nodes to control +the data flow. +</p> +<p>Macros, diversions, and strings collect elements in two chained lists: a +list of input tokens that have been passed unprocessed, and a list of +output nodes. Consider the following diversion. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.di xxx +a +\!b +c +.br +.di +</pre></div></div> + +<p>It contains these elements. +</p> +<table class="multitable"> +<tbody><tr><td>node list</td><td>token list</td><td>element number</td></tr> +<tr><td><i class="i">line start node</i></td><td>—</td><td>1</td></tr> +<tr><td><i class="i">glyph node <code class="code">a</code></i></td><td>—</td><td>2</td></tr> +<tr><td><i class="i">word space node</i></td><td>—</td><td>3</td></tr> +<tr><td>—</td><td><code class="code">b</code></td><td>4</td></tr> +<tr><td>—</td><td><code class="code">\n</code></td><td>5</td></tr> +<tr><td><i class="i">glyph node <code class="code">c</code></i></td><td>—</td><td>6</td></tr> +<tr><td><i class="i">vertical size node</i></td><td>—</td><td>7</td></tr> +<tr><td><i class="i">vertical size node</i></td><td>—</td><td>8</td></tr> +<tr><td>—</td><td><code class="code">\n</code></td><td>9</td></tr> +</tbody> +</table> + +<a class="index-entry-id" id="index-_005cv_002c-internal-representation"></a> +<p>Elements 1, 7, and 8 are inserted by <code class="code">gtroff</code>; the latter two +(which are always present) specify the vertical extent of the last line, +possibly modified by <code class="code">\x</code>. The <code class="code">br</code> request finishes the +pending output line, inserting a newline input token, which is +subsequently converted to a space when the diversion is reread. Note +that the word space node has a fixed width that isn’t adjustable +anymore. To convert horizontal space nodes back to input tokens, use +the <code class="code">unformat</code> request. +</p> +<p>Macros only contain elements in the token list (and the node list is +empty); diversions and strings can contain elements in both lists. +</p> +<p>The <code class="code">chop</code> request simply reduces the number of elements in a +macro, string, or diversion by one. Exceptions are <em class="dfn">compatibility +save</em> and <em class="dfn">compatibility ignore</em> input tokens, which are ignored. +The <code class="code">substring</code> request also ignores those input tokens. +</p> +<p>Some requests like <code class="code">tr</code> or <code class="code">cflags</code> work on glyph identifiers +only; this means that the associated glyph can be changed without +destroying this association. This can be very helpful for substituting +glyphs. In the following example, we assume that glyph ‘<samp class="samp">foo</samp>’ isn’t +available by default, so we provide a substitution using the +<code class="code">fchar</code> request and map it to input character ‘<samp class="samp">x</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.fchar \[foo] foo +.tr x \[foo] +</pre></div></div> + +<p>Now let us assume that we install an additional special font ‘<samp class="samp">bar</samp>’ +that has glyph ‘<samp class="samp">foo</samp>’. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.special bar +.rchar \[foo] +</pre></div></div> + +<p>Since glyphs defined with <code class="code">fchar</code> are searched before glyphs in +special fonts, we must call <code class="code">rchar</code> to remove the definition of the +fallback glyph. Anyway, the translation is still active; ‘<samp class="samp">x</samp>’ now +maps to the real glyph ‘<samp class="samp">foo</samp>’. +</p> +<a class="index-entry-id" id="index-compatibility-mode_002c-and-parameters"></a> +<a class="index-entry-id" id="index-mode_002c-compatibility_002c-and-parameters"></a> +<a class="index-entry-id" id="index-arguments_002c-and-compatibility-mode"></a> +<a class="index-entry-id" id="index-parameters_002c-and-compatibility-mode"></a> +<a class="index-entry-id" id="index-macro-arguments_002c-and-compatibility-mode"></a> +<a class="index-entry-id" id="index-request-arguments_002c-and-compatibility-mode"></a> +<p>Macro and request arguments preserve compatibility mode enablement. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cp 1 \" switch to compatibility mode +.de xx +\\$1 +.. +.cp 0 \" switch compatibility mode off +.xx caf\['e] + ⇒ café +</pre></div></div> + +<p>Since compatibility mode is enabled while <code class="code">de</code> is invoked, the +macro <code class="code">xx</code> enables compatibility mode when it is called. Argument +<code class="code">$1</code> can still be handled properly because it inherits the +compatibility mode enablement status that was active at the point where +<code class="code">xx</code> was called. +</p> +<p>After interpolation of the parameters, the compatibility save and +restore tokens are removed. +</p> + + + +<hr> +</div> +<div class="section-level-extent" id="Debugging"> +<div class="nav-panel"> +<p> +Next: <a href="#Implementation-Differences" accesskey="n" rel="next">Implementation Differences</a>, Previous: <a href="#Gtroff-Internals" accesskey="p" rel="prev"><code class="code">gtroff</code> Internals</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Debugging-1">5.37 Debugging</h3> +<a class="index-entry-id" id="index-debugging"></a> + +<div class="flushright"><p class="flushright-paragraph"><i class="slanted">Standard troff voodoo, just put a power of two backslashes in +front of it until it works and if you still have problems add a \c.</i> +— Ron Natalie +</p></div> +<p>GNU <code class="code">troff</code> is not the easiest language to debug, in part thanks to +its design features of recursive interpolation and the use of +multi-stage pipeline processing in the surrounding system. Nevertheless +there exist several features useful for troubleshooting. +</p> +<p>Preprocessors use the <code class="code">lf</code> request to preserve the identity of the +line numbers and names of input files. GNU <code class="code">troff</code> emits a variety +of error diagnostics and supports several categories of warning; the +output of these can be selectively suppressed. A trace of the +formatter’s input processing stack can be emitted when errors or +warnings occur by means of GNU <code class="code">troff</code>’s <samp class="option">-b</samp> option, or +produced on demand with the <code class="code">backtrace</code> request. The <code class="code">tm</code> +and related requests can be used to emit customized diagnostic messages +or for instrumentation while troubleshooting. The <code class="code">ex</code> and +<code class="code">ab</code> requests cause early termination with successful and error +exit codes respectively, to halt further processing when continuing +would be fruitless. Examine the state of the formatter with requests +that write lists of defined names (macros, strings, and diversions), +environments, registers, and page location traps to the standard error +stream. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002elf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lf</code></strong> <var class="def-var-arguments">line [<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002elf'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-lf"></a> +<a class="index-entry-id" id="index-soelim"></a> +<a class="index-entry-id" id="index-multi_002dfile-documents"></a> +<a class="index-entry-id" id="index-documents_002c-multi_002dfile"></a> +<a class="index-entry-id" id="index-setting-input-line-number-_0028lf_0029"></a> +<a class="index-entry-id" id="index-input-line-number_002c-setting-_0028lf_0029"></a> +<a class="index-entry-id" id="index-number_002c-input-line_002c-setting-_0028lf_0029"></a> +<p>Set the input line number (and, optionally, the file name) GNU +<code class="code">troff</code> shall use for error and warning messages. <var class="var">line</var> is +the input line number of the <em class="emph">next</em> line. Without an argument, the +request is ignored. +</p> +<p><code class="code">lf</code>’s primary purpose is to aid the debugging of documents that +undergo preprocessing. Programs like <code class="command">tbl</code> that transform input +in their own languages into <code class="code">roff</code> requests use it so that any +diagnostic messages emitted by <code class="code">troff</code> correspond to the source +document. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002etm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tm"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002etm1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm1</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm1'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tm1"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_002etmc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tmc</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etmc'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-tmc"></a> +<a class="index-entry-id" id="index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029"></a> +<a class="index-entry-id" id="index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029"></a> +<p>Send <var class="var">message</var>, which consumes the remainder of the input line and +cannot contain special characters, to the standard error stream, +followed by a newline. Leading spaces in <var class="var">message</var> are ignored. +</p> +<p><code class="code">tm1</code> is similar, but recognizes and strips a leading neutral +double quote from <var class="var">message</var> to allow the embedding of leading +spaces. +</p> +<p><code class="code">tmc</code> works as <code class="code">tm1</code>, but does not append a newline. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eab"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ab</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">message</i></span>]</var><a class="copiable-link" href='#index-_002eab'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ab"></a> +<a class="index-entry-id" id="index-aborting-_0028ab_0029"></a> +<p>Write any <var class="var">message</var> to the standard error stream (like <code class="code">tm</code>) +and then abort GNU <code class="code">troff</code>; that is, stop processing and terminate +with a failure status. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eex"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ex</code></strong><a class="copiable-link" href='#index-_002eex'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ex"></a> +<a class="index-entry-id" id="index-ex-request_002c-use-in-debugging"></a> +<a class="index-entry-id" id="index-exiting-_0028ex_0029"></a> +<p>Exit GNU <code class="code">troff</code>; that is, stop processing and terminate with a +successful status. To stop processing only the current file, use the +<code class="code">nx</code> request; see <a class="ref" href="#I_002fO">I/O</a>. +</p></dd></dl> + +<p>When doing something involved, it is useful to leave the debugging +statements in the code and have them turned on by a command-line flag. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.if \n[DB] .tm debugging output +</pre></div></div> + +<p>To activate such statements, use the <samp class="option">-r</samp> option to set the +register. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">groff -rDB=1 <i class="slanted">file</i> +</pre></div></div> + +<p>If it is known in advance that there are many errors and no useful +output, GNU <code class="code">troff</code> can be forced to suppress formatted output with +the <samp class="option">-z</samp> option. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pev</code></strong><a class="copiable-link" href='#index-_002epev'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pev"></a> +<a class="index-entry-id" id="index-dumping-environments-_0028pev_0029"></a> +<a class="index-entry-id" id="index-environments_002c-dumping-_0028pev_0029"></a> +<p>Report the state of the current environment followed by that of all +other environments to the standard error stream. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pm</code></strong><a class="copiable-link" href='#index-_002epm'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pm"></a> +<a class="index-entry-id" id="index-dumping-symbol-table-_0028pm_0029"></a> +<a class="index-entry-id" id="index-symbol-table_002c-dumping-_0028pm_0029"></a> +<p>Report, to the standard error stream, the names of all defined macros, +strings, and diversions with their sizes in bytes. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002epnr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pnr</code></strong><a class="copiable-link" href='#index-_002epnr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-pnr"></a> +<a class="index-entry-id" id="index-dumping-registers-_0028pnr_0029"></a> +<a class="index-entry-id" id="index-registers_002c-dumping-_0028pnr_0029"></a> +<p>Report the names and contents of all currently defined registers to the +standard error stream. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002eptr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ptr</code></strong><a class="copiable-link" href='#index-_002eptr'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-ptr"></a> +<a class="index-entry-id" id="index-dumping-page-location-traps-_0028ptr_0029"></a> +<a class="index-entry-id" id="index-listing-page-location-traps-_0028ptr_0029"></a> +<a class="index-entry-id" id="index-traps_002c-page-location_002c-dumping-_0028ptr_0029"></a> +<a class="index-entry-id" id="index-traps_002c-page-location_002c-listing-_0028ptr_0029"></a> +<p>Report the names and positions of all page location traps to the +standard error stream. Empty slots in the list, where a trap has been +planted but subsequently (re)moved, are printed as well. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002efl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fl</code></strong><a class="copiable-link" href='#index-_002efl'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-fl"></a> +<a class="index-entry-id" id="index-flush-output-_0028fl_0029"></a> +<a class="index-entry-id" id="index-output_002c-flush-_0028fl_0029"></a> +<a class="index-entry-id" id="index-interactive-use-of-gtroff"></a> +<a class="index-entry-id" id="index-gtroff_002c-interactive-use"></a> +<p>Instruct <code class="code">gtroff</code> to flush its output immediately. The intent is +for interactive use, but this behaviour is currently not implemented in +<code class="code">gtroff</code>. Contrary to Unix <code class="code">troff</code>, TTY output is sent to a +device driver also (<code class="code">grotty</code>), making it non-trivial to communicate +interactively. +</p> +<p>This request causes a line break. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ebacktrace"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.backtrace</code></strong><a class="copiable-link" href='#index-_002ebacktrace'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-backtrace"></a> +<a class="index-entry-id" id="index-backtrace-of-input-stack-_0028backtrace_0029"></a> +<a class="index-entry-id" id="index-input-stack_002c-backtrace-_0028backtrace_0029"></a> +<p>Write the state of the input stack to the standard error stream. +</p> +<p>Consider the following in a file <samp class="file">test</samp>. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de xxx +. backtrace +.. +.de yyy +. xxx +.. +. +.yyy + error→ troff: backtrace: 'test':2: macro 'xxx' + error→ troff: backtrace: 'test':5: macro 'yyy' + error→ troff: backtrace: file 'test':8 +</pre></div></div> + +<p>The <samp class="option">-b</samp> option of GNU <code class="code">troff</code> causes a backtrace to be +generated on each error or warning. Some warnings have to be enabled; +See <a class="xref" href="#Warnings">Warnings</a>. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_005cn_005bslimit_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[slimit]</code></strong><a class="copiable-link" href='#index-_005cn_005bslimit_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-slimit"></a> +<a class="index-entry-id" id="index-input-stack_002c-setting-limit"></a> +<p>If greater than 0, sets the maximum quantity of objects on GNU +<code class="code">troff</code>’s internal input stack. If less than or equal to 0, +there is no limit: recursion can continue until program memory is +exhausted. The default is 1,000. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewarnscale"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warnscale</code></strong> <var class="def-var-arguments">su</var><a class="copiable-link" href='#index-_002ewarnscale'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-warnscale"></a> +<p>Set the scaling unit used in certain warnings to <var class="var">su</var>, which can take the values ‘<samp class="samp">u</samp>’, ‘<samp class="samp">i</samp>’, ‘<samp class="samp">c</samp>’, +‘<samp class="samp">p</samp>’, and ‘<samp class="samp">P</samp>’. The default is ‘<samp class="samp">i</samp>’. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002espreadwarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.spreadwarn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">limit</i></span>]</var><a class="copiable-link" href='#index-_002espreadwarn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-spreadwarn"></a> +<p>Emit a <code class="code">break</code> warning if the additional space inserted for each +space between words in an output line adjusted to both margins with +‘<samp class="samp">.ad b</samp>’<!-- /@w --> is larger than or equal to <var class="var">limit</var>. A negative +value is treated as zero; an absent argument toggles the warning on and +off without changing <var class="var">limit</var>. The default scaling unit is ‘<samp class="samp">m</samp>’. +At startup, <code class="code">spreadwarn</code> is inactive and <var class="var">limit</var> is 3<span class="dmn">m</span>. +</p> +<p>For example, +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.spreadwarn 0.2m +</pre></div></div> + +<p>causes a warning if <code class="code">break</code> warnings are not suppressed and +<code class="code">gtroff</code> must add 0.2<span class="dmn">m</span> or more for each inter-word space in a +line. See <a class="xref" href="#Warnings">Warnings</a>. +</p></dd></dl> + +<a class="index-entry-id" id="index-warnings"></a> +<p>GNU <code class="code">troff</code> has command-line options for reporting warnings +(<samp class="option">-w</samp>) and backtraces (<samp class="option">-b</samp>) when a warning or an error +occurs. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ewarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ewarn'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-warn"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ewarn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.warn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ewarn_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ewarn-1"></a> +<a class="index-entry-id" id="index-warning-level-_0028warn_0029"></a> +<p>Select the categories, or “types”, of reported warnings. +<var class="var">n</var> is the sum of the numeric codes associated with each +warning category that is to be enabled; all other categories are +disabled. The categories and their associated codes are listed in +<a class="ref" href="#Warnings">Warnings</a>. For example, ‘<samp class="samp">.warn 0</samp>’ disables all warnings, and +‘<samp class="samp">.warn 1</samp>’ disables all warnings except those about missing glyphs. +If no argument is given, all warning categories are enabled. +</p> +<p>The read-only register <code class="code">.warn</code> contains the sum of the numeric +codes of enabled warning categories. +</p></dd></dl> + + + +<ul class="mini-toc"> +<li><a href="#Warnings" accesskey="1">Warnings</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Warnings"> +<div class="nav-panel"> +<p> +Previous: <a href="#Debugging" accesskey="p" rel="prev">Debugging</a>, Up: <a href="#Debugging" accesskey="u" rel="up">Debugging</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Warnings-1">5.37.1 Warnings</h4> +<a class="index-entry-id" id="index-warnings-1"></a> + +<p>Warning diagnostics emitted by GNU <code class="code">troff</code> are divided into named, +numbered categories. The name associated with each warning category is +used by the <samp class="option">-w</samp> and <samp class="option">-W</samp> options. Each category is also +assigned a power of two; the sum of enabled category values is used by +the <code class="code">warn</code> request and the <code class="code">.warn</code> register. +</p> +<p>Warnings of each category are produced under the following +circumstances. +</p> +<a class="index-entry-id" id="index-categories_002c-warning"></a> +<a class="index-entry-id" id="index-warning-categories"></a> +<dl class="table"> +<dt>‘<samp class="samp">char</samp>’</dt> +<dt>‘<samp class="samp">1</samp>’</dt> +<dd><p>No mounted font defines a glyph for the requested character. This +category is enabled by default. +</p> +</dd> +<dt>‘<samp class="samp">number</samp>’</dt> +<dt>‘<samp class="samp">2</samp>’</dt> +<dd><p>An invalid numeric expression was encountered. This category is enabled +by default. +See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>. +</p> +</dd> +<dt id='index-filling_002c-and-break-warnings'><span>‘<samp class="samp">break</samp>’<a class="copiable-link" href='#index-filling_002c-and-break-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">4</samp>’</dt> +<dd><a class="index-entry-id" id="index-mode_002c-fill_002c-and-break-warnings"></a> +<p>A filled output line could not be broken such that its length was less +than the output line length ‘<samp class="samp">\n[.l]</samp>’. This category is enabled by +default. +</p> +</dd> +<dt>‘<samp class="samp">delim</samp>’</dt> +<dt>‘<samp class="samp">8</samp>’</dt> +<dd><p>The closing delimiter in an escape sequence was missing or mismatched. +</p> +</dd> +<dt id='index-ie-request_002c-and-warnings'><span>‘<samp class="samp">el</samp>’<a class="copiable-link" href='#index-ie-request_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">16</samp>’</dt> +<dd><a class="index-entry-id" id="index-el-request_002c-and-warnings"></a> +<p>The <code class="code">el</code> request was encountered with no prior corresponding +<code class="code">ie</code> request. See <a class="xref" href="#if_002delse">if-else</a>. +</p> +</dd> +<dt>‘<samp class="samp">scale</samp>’</dt> +<dt>‘<samp class="samp">32</samp>’</dt> +<dd><p>A scaling unit inappropriate to its context was used in a numeric +expression. +</p> +</dd> +<dt>‘<samp class="samp">range</samp>’</dt> +<dt>‘<samp class="samp">64</samp>’</dt> +<dd><p>A numeric expression was out of range for its context. +</p> +</dd> +<dt>‘<samp class="samp">syntax</samp>’</dt> +<dt>‘<samp class="samp">128</samp>’</dt> +<dd><p>A self-contradictory hyphenation mode was requested; an empty or +incomplete numeric expression was encountered; an operand to a numeric +operator was missing; an attempt was made to define a recursive, empty, +or nonsensical character class; or a <code class="code">groff</code> extension conditional +expression operator was used while in compatibility mode. +</p> +</dd> +<dt id='index-di-request_002c-and-warnings'><span>‘<samp class="samp">di</samp>’<a class="copiable-link" href='#index-di-request_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">256</samp>’</dt> +<dd><a class="index-entry-id" id="index-da-request_002c-and-warnings"></a> +<a class="index-entry-id" id="index-box-request_002c-and-warnings"></a> +<a class="index-entry-id" id="index-boxa-request_002c-and-warnings"></a> +<p>A <code class="code">di</code>, <code class="code">da</code>, <code class="code">box</code>, or <code class="code">boxa</code> request was invoked +without an argument when there was no current diversion. +</p> +</dd> +<dt id='index-de_002c-de1_002c-dei-requests_002c-and-warnings'><span>‘<samp class="samp">mac</samp>’<a class="copiable-link" href='#index-de_002c-de1_002c-dei-requests_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">512</samp>’</dt> +<dd><a class="index-entry-id" id="index-am_002c-am1_002c-ami-requests_002c-and-warnings"></a> +<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-warnings"></a> +<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-warnings"></a> +<a class="index-entry-id" id="index-di-request_002c-and-warnings-1"></a> +<a class="index-entry-id" id="index-da-request_002c-and-warnings-1"></a> +<a class="index-entry-id" id="index-box_002c-boxa-requests_002c-and-warnings"></a> +<a class="index-entry-id" id="index-_005c_002a_002c-and-warnings"></a> +<p>An undefined string, macro, or diversion was used. When such an object +is dereferenced, an empty one of that name is automatically created. +So, unless it is later deleted, at most one warning is given for each. +</p> +<p>This warning is also emitted upon an attempt to move an unplanted trap +macro (see <a class="pxref" href="#Page-Location-Traps">Page Location Traps</a>). In such cases, the unplanted macro +is <em class="emph">not</em> dereferenced, so it is not created if it does not exist. +</p> +</dd> +<dt id='index-nr-request_002c-and-warnings'><span>‘<samp class="samp">reg</samp>’<a class="copiable-link" href='#index-nr-request_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">1024</samp>’</dt> +<dd><a class="index-entry-id" id="index-_005cR_002c-and-warnings"></a> +<a class="index-entry-id" id="index-_005cn_002c-and-warnings"></a> +<p>An undefined register was used. When an undefined register is +dereferenced, it is automatically defined with a value of 0. So, +unless it is later deleted, at most one warning is given for each. +</p> +</dd> +<dt id='index-_005ct_002c-and-warnings'><span>‘<samp class="samp">tab</samp>’<a class="copiable-link" href='#index-_005ct_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">2048</samp>’</dt> +<dd><p>A tab character was encountered where a number was expected, or appeared +in an unquoted macro argument. +</p> +</dd> +<dt id='index-_005c_007d_002c-and-warnings'><span>‘<samp class="samp">right-brace</samp>’<a class="copiable-link" href='#index-_005c_007d_002c-and-warnings'> ¶</a></span></dt> +<dt>‘<samp class="samp">4096</samp>’</dt> +<dd><p>A right brace escape sequence <code class="code">\}</code> was encountered where a number +was expected. +</p> +</dd> +<dt>‘<samp class="samp">missing</samp>’</dt> +<dt>‘<samp class="samp">8192</samp>’</dt> +<dd><p>A request was invoked with a mandatory argument absent. +</p> +</dd> +<dt>‘<samp class="samp">input</samp>’</dt> +<dt>‘<samp class="samp">16384</samp>’</dt> +<dd><p>An invalid character occurred on the input stream. +</p> +</dd> +<dt>‘<samp class="samp">escape</samp>’</dt> +<dt>‘<samp class="samp">32768</samp>’</dt> +<dd><p>An unsupported escape sequence was encountered. +</p> +</dd> +<dt id='index-compatibility-mode'><span>‘<samp class="samp">space</samp>’<a class="copiable-link" href='#index-compatibility-mode'> ¶</a></span></dt> +<dt>‘<samp class="samp">65536</samp>’</dt> +<dd><p>A space was missing between a request or macro and its argument. This +warning is produced when an undefined name longer than two characters is +encountered and the first two characters of the name constitute a +defined name. No request is invoked, no macro called, and an empty +macro is not defined. This category is enabled by default. It never +occurs in compatibility mode. +</p> +</dd> +<dt>‘<samp class="samp">font</samp>’</dt> +<dt>‘<samp class="samp">131072</samp>’</dt> +<dd><p>A non-existent font was selected, or the selection was ignored because a +font selection escape sequence was used after the output line +continuation escape sequence on an input line. This category is enabled +by default. +</p> +</dd> +<dt>‘<samp class="samp">ig</samp>’</dt> +<dt>‘<samp class="samp">262144</samp>’</dt> +<dd><p>An invalid escape sequence occurred in input ignored using the <code class="code">ig</code> +request. This warning category diagnoses a condition that is an error +when it occurs in non-ignored input. +</p> +</dd> +<dt>‘<samp class="samp">color</samp>’</dt> +<dt>‘<samp class="samp">524288</samp>’</dt> +<dd><p>An undefined color was selected, an attempt was made to define a color +using an unrecognized color space, an invalid component in a color +definition was encountered, or an attempt was made to redefine a default +color. +</p> +</dd> +<dt>‘<samp class="samp">file</samp>’</dt> +<dt>‘<samp class="samp">1048576</samp>’</dt> +<dd><p>An attempt was made to load a file that does not exist. This category +is enabled by default. +</p></dd> +</dl> + +<p>Two warning names group other warning categories for convenience. +</p> +<dl class="table"> +<dt>‘<samp class="samp">all</samp>’</dt> +<dd><p>All warning categories except ‘<samp class="samp">di</samp>’, ‘<samp class="samp">mac</samp>’ and ‘<samp class="samp">reg</samp>’. +This shorthand is intended to produce all warnings that are useful with +macro packages written for <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> and its +descendants, which have less fastidious diagnostics than GNU +<code class="code">troff</code>. +</p> +</dd> +<dt>‘<samp class="samp">w</samp>’</dt> +<dd><p>All warning categories. Authors of documents and macro packages +targeting <code class="code">groff</code> are encouraged to use this setting. +</p></dd> +</dl> + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Implementation-Differences"> +<div class="nav-panel"> +<p> +Next: <a href="#Safer-Mode" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="#Debugging" accesskey="p" rel="prev">Debugging</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Implementation-Differences-1">5.38 Implementation Differences</h3> +<a class="index-entry-id" id="index-implementation-differences"></a> +<a class="index-entry-id" id="index-differences-in-implementation"></a> +<a class="index-entry-id" id="index-incompatibilities-with-AT_0026T-troff"></a> + +<p>GNU <code class="code">troff</code> has a number of features that cause incompatibilities +with documents written for other versions of <code class="code">troff</code>. Some GNU +extensions to <code class="code">troff</code> have become supported by other +implementations. +</p> + + +<ul class="mini-toc"> +<li><a href="#Safer-Mode" accesskey="1">Safer Mode</a></li> +<li><a href="#Compatibility-Mode" accesskey="2">Compatibility Mode</a></li> +<li><a href="#Other-Differences" accesskey="3">Other Differences</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Safer-Mode"> +<div class="nav-panel"> +<p> +Next: <a href="#Compatibility-Mode" accesskey="n" rel="next">Compatibility Mode</a>, Previous: <a href="#Implementation-Differences" accesskey="p" rel="prev">Implementation Differences</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Safer-Mode-1">5.38.1 Safer Mode</h4> +<a class="index-entry-id" id="index-safer-mode-7"></a> +<a class="index-entry-id" id="index-mode_002c-safer-7"></a> + +<a class="index-entry-id" id="index-pi-request_002c-disabled-by-default"></a> +<a class="index-entry-id" id="index-sy-request_002c-disabled-by-default"></a> +<p>The formatter operates in “safer” mode by default; to mitigate risks +from untrusted input documents, the <code class="code">pi</code> and <code class="code">sy</code> requests are +disabled. GNU <code class="code">troff</code>’s <samp class="option">-U</samp> option enables “unsafe +mode”, restoring their function and enabling additional <code class="code">groff</code> +extension requests, <code class="code">open</code>, <code class="code">opena</code>, and <code class="code">pso</code>. +See <a class="xref" href="#I_002fO">I/O</a>. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Compatibility-Mode"> +<div class="nav-panel"> +<p> +Next: <a href="#Safer-Mode" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="#Other-Differences" accesskey="p" rel="prev">Other Differences</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Compatibility-Mode-1">5.38.2 Compatibility Mode</h4> +<a class="index-entry-id" id="index-compatibility-mode-1"></a> +<a class="index-entry-id" id="index-mode_002c-compatibility"></a> + +<a class="index-entry-id" id="index-long-names"></a> +<a class="index-entry-id" id="index-names_002c-long"></a> +<a class="index-entry-id" id="index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cn_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>Long identifier names may be GNU <code class="code">troff</code>’s most obvious innovation. +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> interprets ‘<samp class="samp">.dsabcd</samp>’ as defining a +string ‘<samp class="samp">ab</samp>’ with contents ‘<samp class="samp">cd</samp>’. Normally, GNU <code class="code">troff</code> +interprets this as a call of a macro named <code class="code">dsabcd</code>. +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> also interprets ‘<samp class="samp">\*[</samp>’ and ‘<samp class="samp">\n[</samp>’ as +an interpolation of a string or register, respectively, named ‘<samp class="samp">[</samp>’. +In GNU <code class="code">troff</code>, however, the ‘<samp class="samp">[</samp>’ is normally interpreted as +delimiting a long name. In compatibility mode, GNU <code class="code">troff</code> +interprets names in the traditional way; they thus can be two characters +long at most. +</p> +<dl class="first-deffn"> +<dt class="deffn" id="index-_002ecp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecp'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-cp"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eC_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.C]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eC_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002eC"></a> +<p>If <var class="var">n</var> is missing or non-zero, turn on compatibility mode; +otherwise, turn it off. +</p> +<p>The read-only register <code class="code">.C</code> is 1 if compatibility mode is on, +0 otherwise. +</p> +<p>Compatibility mode can be also turned on with the <samp class="option">-C</samp> +command-line option. +</p></dd></dl> + +<dl class="first-deffn"> +<dt class="deffn" id="index-_002edo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.do</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edo'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-do"></a> +</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecp_005d'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-_002ecp-1"></a> +<p>The <code class="code">do</code> request interprets the string, request, diversion, or +macro <var class="var">name</var> (along with any further arguments) with compatibility +mode disabled. Compatibility mode is restored (only if it was active) +when the <em class="emph">expansion</em> of <var class="var">name</var> is interpreted; that is, the +restored compatibility state applies to the contents of the macro, +string, or diversion <var class="var">name</var> as well as data read from files or pipes +if <var class="var">name</var> is any of the <code class="code">so</code>, <code class="code">soquiet</code>, <code class="code">mso</code>, +<code class="code">msoquiet</code>, or <code class="code">pso</code> requests. +</p> +<p>The following example illustrates several aspects of <code class="code">do</code> behavior. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de mac1 +FOO +.. +.de1 mac2 +groff +.mac1 +.. +.de mac3 +compatibility +.mac1 +.. +.de ma +\\$1 +.. +.cp 1 +.do mac1 +.do mac2 \" mac2, defined with .de1, calls "mac1" +.do mac3 \" mac3 calls "ma" with argument "c1" +.do mac3 \[ti] \" groff syntax accepted in .do arguments + ⇒ FOO groff FOO compatibility c1 ~ +</pre></div></div> + +<p>The read-only register <code class="code">.cp</code>, meaningful only when dereferenced +from a <code class="code">do</code> request, is 1 if compatibility mode was on when +the <code class="code">do</code> request was encountered, and 0 if it was not. This +register is specialized and may require a statement of rationale. +</p> +<p>When writing macro packages or documents that use GNU <code class="code">troff</code> +features and which may be mixed with other packages or documents that do +not—common scenarios include serial processing of man pages or use of +the <code class="code">so</code> or <code class="code">mso</code> requests—you may desire correct operation +regardless of compatibility mode enablement in the surrounding context. +It may occur to you to save the existing value of ‘<samp class="samp">\n(.C</samp>’ into a +register, say, ‘<samp class="samp">_C</samp>’, at the beginning of your file, turn +compatibility mode off with ‘<samp class="samp">.cp 0</samp>’, then restore it from that +register at the end with ‘<samp class="samp">.cp \n(_C</samp>’. At the same time, a modular +design of a document or macro package may lead you to multiple layers of +inclusion. You cannot use the same register name everywhere lest you +“clobber” the value from a preceding or enclosing context. The +two-character register name space of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> is +confining and mnemonically challenging; you may wish to use the more +capacious name space of GNU <code class="code">troff</code>. However, attempting ‘<samp class="samp">.nr +_my_saved_C \n(.C</samp>’ will not work in compatibility mode; the register +name is too long. “This is exactly what <code class="code">do</code> is for,” you think, +‘<samp class="samp">.do nr _my_saved_C \n(.C</samp>’. The foregoing will always save zero to +your register, because <code class="code">do</code> turns compatibility mode <em class="emph">off</em> +while it interprets its argument list. +</p> +<p>To robustly save compatibility mode before switching it off, use +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.do nr _my_saved_C \n[.cp] +.cp 0 +</pre></div></div> + +<p>at the beginning of your file, followed by +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.cp \n[_my_saved_C] +.do rr _my_saved_C +</pre></div></div> + +<p>at the end. As in the C language, we all have to share one big +name space, so choose a register name that is unlikely to collide with +other uses. +</p></dd></dl> + +<a class="index-entry-id" id="index-input-level-in-delimited-arguments"></a> +<a class="index-entry-id" id="index-interpolation-depth-in-delimited-arguments"></a> +<a class="index-entry-id" id="index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>Normally, GNU <code class="code">troff</code> preserves the interpolation depth in +delimited arguments, but not in compatibility mode. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.ds xx ' +\w'abc\*(xxdef' + ⇒ 168 <span class="r">(normal mode on a terminal device)</span> + ⇒ 72def' <span class="r">(compatibility mode on a terminal device)</span> +</pre></div></div> + +<a class="index-entry-id" id="index-_005cf_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cH_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cS_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>Furthermore, the escape sequences <code class="code">\f</code>, <code class="code">\H</code>, <code class="code">\m</code>, +<code class="code">\M</code>, <code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code> are transparent for the +purpose of recognizing a control character at the beginning of a line +only in compatibility mode. For example, this code produces bold output +in both cases, but the text differs. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.de xx +Hello! +.. +\fB.xx\fP + ⇒ .xx <span class="r">(normal mode)</span> + ⇒ Hello! <span class="r">(compatibility mode)</span> +</pre></div></div> + +<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"></a> +<p>Normally, the syntax form <code class="code">\s</code><var class="var">n</var> accepts only a single +character (a digit) for <var class="var">n</var>, consistently with other forms that +originated in <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, like <code class="code">\*</code>, <code class="code">\$</code>, +<code class="code">\f</code>, <code class="code">\g</code>, <code class="code">\k</code>, <code class="code">\n</code>, and <code class="code">\z</code>. In +compatibility mode only, a non-zero <var class="var">n</var> must be in the range +4–39. Legacy documents relying upon this quirk of parsing<a class="footnote" id="DOCF120" href="#FOOT120"><sup>120</sup></a> should be migrated to another +<code class="code">\s</code> form. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Other-Differences"> +<div class="nav-panel"> +<p> +Previous: <a href="#Compatibility-Mode" accesskey="p" rel="prev">Compatibility Mode</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Other-Differences-1">5.38.3 Other Differences</h4> + +<p><code class="code">groff</code> request names unrecognized by other <code class="code">troff</code> +implementations will likely be ignored by them; escape sequences that +are <code class="code">groff</code> extensions are liable to be interpreted as if the +escape character were not present. +<a class="index-entry-id" id="index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"></a> +For example, the adjustable, non-breaking escape sequence <code class="code">\~</code> +is also supported by Heirloom Doctools <code class="code">troff</code> 050915 (September +2005), <code class="code">mandoc</code> 1.9.5 (2009-09-21), <code class="code">neatroff</code> (commit +1c6ab0f6e, 2016-09-13), and Plan 9 from User Space <code class="code">troff</code> +(commit 93f8143600, 2022-08-12), but not by Solaris or Documenter’s +Workbench <code class="code">troff</code>s. +See <a class="xref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>. +</p> +<a class="index-entry-id" id="index-_005cA_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005cc_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>GNU <code class="code">troff</code> does not allow the use of the escape sequences +<code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\&</code>, <code class="code">\{</code>, <code class="code">\}</code>, +<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>, +<code class="code">\%</code>, and <code class="code">\c</code> in identifiers; <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> +does. The <code class="code">\A</code> escape sequence (see <a class="pxref" href="#Identifiers">Identifiers</a>) may be +helpful in avoiding use of these escape sequences in names. +</p> +<a class="index-entry-id" id="index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-rivers"></a> +<p>When adjusting to both margins, <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> at first +adjusts spaces starting from the right; GNU <code class="code">troff</code> begins from +the left. Both implementations adjust spaces from opposite ends on +alternating output lines in this adjustment mode to prevent “rivers” +in the text. +</p> +<a class="index-entry-id" id="index-hyphenation_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>GNU <code class="code">troff</code> does not always hyphenate words as <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> does. The <abbr class="acronym">AT&T</abbr> implementation uses a set of +hard-coded rules specific to English, while GNU <code class="code">troff</code> uses +language-specific hyphenation pattern files derived from TeX. +Furthermore, in old versions of <code class="code">troff</code> there was a limited amount +of space to store hyphenation exceptions (arguments to the <code class="code">hw</code> +request); GNU <code class="code">troff</code> has no such restriction. +</p> +<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations"></a> +<p>GNU <code class="code">troff</code> predefines a string <code class="code">.T</code> containing the argument +given to the <samp class="option">-T</samp> command-line option, namely the current output +device (for example, ‘<samp class="samp">pdf</samp>’ or ‘<samp class="samp">utf8</samp>’). The existence of this +string is a common feature of post-CSTR #54 +<code class="code">troff</code>s<a class="footnote" id="DOCF121" href="#FOOT121"><sup>121</sup></a> but valid values are specific +to each implementation. +</p> +<a class="index-entry-id" id="index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff"></a> +<p><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> ignored attempts to remove read-only +registers; GNU <code class="code">troff</code> honors such requests. See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>. +</p> +<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff"></a> +<p>The (read-only) register <code class="code">.T</code> interpolates 1 if GNU +<code class="code">troff</code> is called with the <samp class="option">-T</samp> command-line option, and +0 otherwise. This behavior differs from AT&T <code class="code">troff</code>, which +interpolated 1 only if <code class="code">nroff</code> was the formatter and was +called with <samp class="option">-T</samp>. +</p> +<a class="index-entry-id" id="index-lf-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> and other implementations handle the +<code class="code">lf</code> request differently. For them, its <var class="var">line</var> argument +changes the line number of the <em class="emph">current</em> line. +</p> +<a class="index-entry-id" id="index-environment-availability-and-naming_002c-incompatibilities-with"></a> +<p><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> had only environments named ‘<samp class="samp">0</samp>’, +‘<samp class="samp">1</samp>’, and ‘<samp class="samp">2</samp>’. In GNU <code class="code">troff</code>, any number of environments +may exist, using any valid identifiers for their names +(see <a class="pxref" href="#Identifiers">Identifiers</a>.) +</p> +<a class="index-entry-id" id="index-fractional-point-sizes-1"></a> +<a class="index-entry-id" id="index-fractional-type-sizes-1"></a> +<a class="index-entry-id" id="index-point-sizes_002c-fractional-1"></a> +<a class="index-entry-id" id="index-type-sizes_002c-fractional-1"></a> +<a class="index-entry-id" id="index-sizes_002c-fractional"></a> +<a class="index-entry-id" id="index-ps-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>Fractional type sizes cause one noteworthy incompatibility. In +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> the <code class="code">ps</code> request ignores scaling units +and thus ‘<samp class="samp">.ps 10u</samp>’ sets the type size to 10 points, whereas in +GNU <code class="code">troff</code> it sets the type size to 10 <em class="emph">scaled</em> points. +See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>. +</p> +<a class="index-entry-id" id="index-ab-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>The <code class="code">ab</code> request differs from <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>: +GNU <code class="code">troff</code> writes no message to the standard error stream if no +arguments are given, and it exits with a failure status instead of a +successful one. +</p> +<a class="index-entry-id" id="index-bp-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>The <code class="code">bp</code> request differs from <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>: +GNU <code class="code">troff</code> does not accept a scaling unit on the argument, a page +number; the former (somewhat uselessly) does. +</p> +<a class="index-entry-id" id="index-pm-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>The <code class="code">pm</code> request differs from <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>: +GNU <code class="code">troff</code> reports the sizes of macros, strings, and diversions in +bytes and ignores an argument to report only the sum of the sizes. +</p> +<a class="index-entry-id" id="index-ss-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>Unlike <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not ignore the +<code class="code">ss</code> request if the output is a terminal device; instead, the +values of minimal inter-word and additional inter-sentence space are +each rounded down to the nearest multiple of 12. +</p> +<a class="index-entry-id" id="index-bd-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-cs-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-tr-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-fp-request_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a> +<p>In GNU <code class="code">troff</code> there is a fundamental difference between +(unformatted) characters and (formatted) glyphs. Everything that +affects how a glyph is output is stored with the glyph node; once a +glyph node has been constructed, it is unaffected by any subsequent +requests that are executed, including <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>, +<code class="code">tr</code>, or <code class="code">fp</code> requests. Normally, glyphs are constructed from +characters immediately before the glyph is added to an output line. +Macros, diversions, and strings are all, in fact, the same type of +object; they contain a sequence of intermixed character and glyph nodes. +Special characters transform from one to the other: before being added +to the output, they behave as characters; afterward, they are glyphs. A +glyph node does not behave like a character node when it is processed by +a macro: it does not inherit any of the special properties that the +character from which it was constructed might have had. For example, +the input +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">.di x +\\\\ +.br +.di +.x +</pre></div></div> + +<p>produces ‘<samp class="samp">\\</samp>’ in GNU <code class="code">troff</code>. Each pair of backslashes +becomes one backslash <em class="emph">glyph</em>; the resulting backslashes are thus +not interpreted as escape <em class="emph">characters</em> when they are reread as the +diversion is output. <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> <em class="emph">would</em> interpret +them as escape characters when rereading them and end up printing one +‘<samp class="samp">\</samp>’. +</p> +<a class="index-entry-id" id="index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a> +<a class="index-entry-id" id="index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a> +<a class="index-entry-id" id="index-_005ce_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"></a> +<a class="index-entry-id" id="index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-transparent-output_002c-incompatibilities-with-AT_0026T-troff"></a> +<a class="index-entry-id" id="index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff"></a> +<p>One correct way to obtain a printable backslash in most documents is to +use the <code class="code">\e</code> escape sequence; this always prints a single instance +of the current escape character,<a class="footnote" id="DOCF122" href="#FOOT122"><sup>122</sup></a> regardless of whether or not it is used in a diversion; it +also works in both GNU <code class="code">troff</code> and <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>. +</p> +<p>The other correct way, appropriate in contexts independent of the +backslash’s common use as a <code class="code">troff</code> escape character—perhaps in +discussion of character sets or other programming languages—is +the character escape <code class="code">\(rs</code> or <code class="code">\[rs]</code>, for “reverse +solidus”, from its name in the <abbr class="acronym">ECMA-6</abbr> (<abbr class="acronym">ISO/IEC</abbr> 646) +standard.<a class="footnote" id="DOCF123" href="#FOOT123"><sup>123</sup></a> +</p> +<p>To store an escape sequence in a diversion that is interpreted when the +diversion is reread, either use the traditional <code class="code">\!</code> transparent +output facility, or, if this is unsuitable, the new <code class="code">\?</code> escape +sequence. See <a class="xref" href="#Diversions">Diversions</a> and <a class="ref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>. +</p> +<p>In the somewhat pathological case where a diversion exists containing a +partially collected line and a partially collected line at the top-level +diversion has never existed, <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> will output the +partially collected line at the end of input; GNU <code class="code">troff</code> will not. +</p> + + + + +<hr> +</div> +</div> +</div> +<div class="chapter-level-extent" id="File-Formats"> +<div class="nav-panel"> +<p> +Next: <a href="#Copying-This-Manual" accesskey="n" rel="next">Copying This Manual</a>, Previous: <a href="#GNU-troff-Reference" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="chapter" id="File-Formats-1">6 File Formats</h2> +<a class="index-entry-id" id="index-file-formats"></a> +<a class="index-entry-id" id="index-formats_002c-file"></a> + +<p>All files read and written by <code class="code">gtroff</code> are text files. The +following two sections describe their format. +</p> + + + + +<ul class="mini-toc"> +<li><a href="#gtroff-Output" accesskey="1"><code class="code">gtroff</code> Output</a></li> +<li><a href="#Device-and-Font-Description-Files" accesskey="2">Device and Font Description Files</a></li> +</ul> +<hr> +<div class="section-level-extent" id="gtroff-Output"> +<div class="nav-panel"> +<p> +Next: <a href="#Device-and-Font-Description-Files" accesskey="n" rel="next">Device and Font Description Files</a>, Previous: <a href="#File-Formats" accesskey="p" rel="prev">File Formats</a>, Up: <a href="#File-Formats" accesskey="u" rel="up">File Formats</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="gtroff-Output-1">6.1 <code class="code">gtroff</code> Output</h3> +<a class="index-entry-id" id="index-gtroff_002c-output"></a> +<a class="index-entry-id" id="index-output_002c-gtroff"></a> + +<p>This section describes the <code class="code">groff</code> intermediate output format +produced by GNU <code class="code">troff</code>. +</p> +<p>As <code class="code">groff</code> is a wrapper program around GNU <code class="code">troff</code> and +automatically calls an output driver (or “postprocessor”), this output +does not show up normally. This is why it is called +<em class="emph">intermediate</em>. <code class="code">groff</code> provides the option <samp class="option">-Z</samp> to +inhibit postprocessing such that the produced intermediate output is +sent to standard output just as it is when calling GNU <code class="code">troff</code> +directly. +</p> +<a class="index-entry-id" id="index-troff-output"></a> +<a class="index-entry-id" id="index-output_002c-troff"></a> +<a class="index-entry-id" id="index-intermediate-output"></a> +<a class="index-entry-id" id="index-output_002c-intermediate"></a> +<p>Here, the term <em class="dfn">troff output</em> describes what is output by +GNU <code class="code">troff</code>, while <em class="dfn">intermediate output</em> refers to the language +that is accepted by the parser that prepares this output for the output +drivers. This parser handles whitespace more flexibly than +<abbr class="acronym">AT&T</abbr>’s implementation and implements obsolete elements for +compatibility; otherwise, both formats are the same.<a class="footnote" id="DOCF124" href="#FOOT124"><sup>124</sup></a> +</p> +<p>The main purpose of the intermediate output concept is to facilitate the +development of postprocessors by providing a common programming +interface for all devices. It has a language of its own that is +completely different from the <code class="code">gtroff</code> language. While the +<code class="code">gtroff</code> language is a high-level programming language for text +processing, the intermediate output language is a kind of low-level +assembler language by specifying all positions on the page for writing +and drawing. +</p> +<p>The intermediate output produced by <code class="code">gtroff</code> is fairly readable, +while output from <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> is rather hard to +understand because of strange habits that are still supported, but not +used any longer by <code class="code">gtroff</code>. +</p> + + +<ul class="mini-toc"> +<li><a href="#Language-Concepts" accesskey="1">Language Concepts</a></li> +<li><a href="#Command-Reference" accesskey="2">Command Reference</a></li> +<li><a href="#Intermediate-Output-Examples" accesskey="3">Intermediate Output Examples</a></li> +<li><a href="#Output-Language-Compatibility" accesskey="4">Output Language Compatibility</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="Language-Concepts"> +<div class="nav-panel"> +<p> +Next: <a href="#Command-Reference" accesskey="n" rel="next">Command Reference</a>, Previous: <a href="#gtroff-Output" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Language-Concepts-1">6.1.1 Language Concepts</h4> + +<p>The fundamental operation of the GNU <code class="code">troff</code> formatter is the +translation of the <code class="code">groff</code> input language into a device-independent +form primarily concerned with what has to be written or drawn at +specific positions on the output device. This language is simple and +imperative. In the following discussion, the term <em class="dfn">command</em> always +refers to this intermediate output language, and never to the +<code class="code">groff</code> language intended for direct use by document authors. +Intermediate output commands comprise several categories: glyph output; +font, color, and text size selection; motion of the printing position; +page advancement; drawing of geometric objects; and device control +commands, a catch-all for operations not easily classified as any of the +foregoing, such as directives to start and stop output, identify the +intended output device, or place URL hyperlinks in supported output +formats. +</p> + +<ul class="mini-toc"> +<li><a href="#Separation" accesskey="1">Separation</a></li> +<li><a href="#Argument-Units" accesskey="2">Argument Units</a></li> +<li><a href="#Document-Parts" accesskey="3">Document Parts</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="Separation"> +<div class="nav-panel"> +<p> +Next: <a href="#Argument-Units" accesskey="n" rel="next">Argument Units</a>, Previous: <a href="#Language-Concepts" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Separation-1">6.1.1.1 Separation</h4> + +<p><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> output has strange requirements regarding +whitespace. The <code class="code">gtroff</code> output parser, however, is more tolerant, +making whitespace maximally optional. Such characters, i.e., the tab, +space, and newline, always have a syntactical meaning. They are never +printable because spacing within the output is always done by +positioning commands. +</p> +<p>Any sequence of space or tab characters is treated as a single +<em class="dfn">syntactical space</em>. It separates commands and arguments, but is +only required when there would occur a clashing between the command code +and the arguments without the space. Most often, this happens when +variable-length command names, arguments, argument lists, or command +clusters meet. Commands and arguments with a known, fixed length need +not be separated by syntactical space. +</p> +<p>A line break is a syntactical element, too. Every command argument can +be followed by whitespace, a comment, or a newline character. Thus a +<em class="dfn">syntactical line break</em> is defined to consist of optional +syntactical space that is optionally followed by a comment, and a +newline character. +</p> +<p>The normal commands, those for positioning and text, consist of a single +letter taking a fixed number of arguments. For historical reasons, the +parser allows stacking of such commands on the same line, but +fortunately, in <code class="code">gtroff</code>’s intermediate output, every command with +at least one argument is followed by a line break, thus providing +excellent readability. +</p> +<p>The other commands—those for drawing and device controlling—have a +more complicated structure; some recognize long command names, and some +take a variable number of arguments. So all ‘<samp class="samp">D</samp>’ and ‘<samp class="samp">x</samp>’ +commands were designed to request a syntactical line break after their +last argument. Only one command, ‘<samp class="samp">x X</samp>’<!-- /@w -->, has an argument that +can span several input lines; all other commands must have all of +their arguments on the same line as the command, i.e., the arguments may +not be split by a line break. +</p> +<p>Empty lines (these are lines containing only space and/or a comment), +can occur everywhere. They are just ignored. +</p> +<hr> +</div> +<div class="subsubsection-level-extent" id="Argument-Units"> +<div class="nav-panel"> +<p> +Next: <a href="#Document-Parts" accesskey="n" rel="next">Document Parts</a>, Previous: <a href="#Separation" accesskey="p" rel="prev">Separation</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Argument-Units-1">6.1.1.2 Argument Units</h4> + +<p>Some commands take integer arguments that are assumed to represent +values in a measurement unit, but the letter for the corresponding +scaling unit is not written with the output command arguments. Most +commands assume the scaling unit ‘<samp class="samp">u</samp>’, the basic unit of the device, +some use ‘<samp class="samp">z</samp>’, the scaled point unit of the device, while others, +such as the color commands, expect plain integers. +</p> +<p>Single characters can have the eighth bit set, as can the names of +fonts and special characters. The names of characters and fonts can be +of arbitrary length. A character that is to be printed is always in +the current font. +</p> +<p>A string argument is always terminated by the next whitespace character +(space, tab, or newline); an embedded ‘<samp class="samp">#</samp>’ character is regarded as +part of the argument, not as the beginning of a comment command. An +integer argument is already terminated by the next non-digit character, +which then is regarded as the first character of the next argument or +command. +</p> +<hr> +</div> +<div class="subsubsection-level-extent" id="Document-Parts"> +<div class="nav-panel"> +<p> +Previous: <a href="#Argument-Units" accesskey="p" rel="prev">Argument Units</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Document-Parts-1">6.1.1.3 Document Parts</h4> + +<p>A correct intermediate output document consists of two parts, the +<em class="dfn">prologue</em> and the <em class="dfn">body</em>. +</p> +<p>The task of the prologue is to set the general device parameters using +three exactly specified commands. <code class="code">gtroff</code>’s prologue is +guaranteed to consist of the following three lines (in that order): +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">x T <var class="var">device</var> +x res <var class="var">n</var> <var class="var">h</var> <var class="var">v</var> +x init +</pre></div></div> + +<p>with the arguments set as outlined in <a class="ref" href="#Device-Control-Commands">Device Control Commands</a>. +The parser for the intermediate output format is able to interpret +additional whitespace and comments as well even in the prologue. +</p> +<p>The body is the main section for processing the document data. +Syntactically, it is a sequence of any commands different from the ones +used in the prologue. Processing is terminated as soon as the first +‘<samp class="samp">x stop</samp>’<!-- /@w --> command is encountered; the last line of any +<code class="code">gtroff</code> intermediate output always contains such a command. +</p> +<p>Semantically, the body is page oriented. A new page is started by a +‘<samp class="samp">p</samp>’ command. Positioning, writing, and drawing commands are always +done within the current page, so they cannot occur before the first +‘<samp class="samp">p</samp>’ command. Absolute positioning (by the ‘<samp class="samp">H</samp>’ and ‘<samp class="samp">V</samp>’ +commands) is done relative to the current page; all other positioning is +done relative to the current location within this page. +</p> + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="Command-Reference"> +<div class="nav-panel"> +<p> +Next: <a href="#Intermediate-Output-Examples" accesskey="n" rel="next">Intermediate Output Examples</a>, Previous: <a href="#Language-Concepts" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Command-Reference-1">6.1.2 Command Reference</h4> + +<p>This section describes all intermediate output commands, both from +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> as well as the <code class="code">gtroff</code> extensions. +</p> + +<ul class="mini-toc"> +<li><a href="#Comment-Command" accesskey="1">Comment Command</a></li> +<li><a href="#Simple-Commands" accesskey="2">Simple Commands</a></li> +<li><a href="#Graphics-Commands" accesskey="3">Graphics Commands</a></li> +<li><a href="#Device-Control-Commands" accesskey="4">Device Control Commands</a></li> +<li><a href="#Obsolete-Command" accesskey="5">Obsolete Command</a></li> +</ul> +<hr> +<div class="subsubsection-level-extent" id="Comment-Command"> +<div class="nav-panel"> +<p> +Next: <a href="#Simple-Commands" accesskey="n" rel="next">Simple Commands</a>, Previous: <a href="#Command-Reference" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Comment-Command-1">6.1.2.1 Comment Command</h4> + +<dl class="table"> +<dt><code class="code">#<var class="var">anything</var>‹<span class="r">end of line</span>›</code></dt> +<dd><p>A comment. Ignore any characters from the ‘<samp class="samp">#</samp>’ character up to the +next newline character. +</p> +<p>This command is the only possibility for commenting in the intermediate +output. Each comment can be preceded by arbitrary syntactical space; +every command can be terminated by a comment. +</p></dd> +</dl> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Simple-Commands"> +<div class="nav-panel"> +<p> +Next: <a href="#Graphics-Commands" accesskey="n" rel="next">Graphics Commands</a>, Previous: <a href="#Comment-Command" accesskey="p" rel="prev">Comment Command</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Simple-Commands-1">6.1.2.2 Simple Commands</h4> + +<p>The commands in this subsection have a command code consisting of a +single character, taking a fixed number of arguments. Most of them are +commands for positioning and text writing. These commands are tolerant +of whitespace. Optionally, syntactical space can be inserted before, +after, and between the command letter and its arguments. All of these +commands are stackable; i.e., they can be preceded by other simple +commands or followed by arbitrary other commands on the same line. A +separating syntactical space is necessary only when two integer +arguments would clash or if the preceding argument ends with a string +argument. +</p> +<dl class="table"> +<dt><code class="code">C <var class="var">id</var>‹<span class="r">whitespace</span>›</code></dt> +<dd><p>Typeset the glyph of the special character <var class="var">id</var>. Trailing +syntactical space is necessary to allow special character names of +arbitrary length. The drawing position is not advanced. +</p> +</dd> +<dt><code class="code">c <var class="var">g</var></code></dt> +<dd><p>Typeset the glyph of the ordinary character <var class="var">c</var>. The drawing +position is not advanced. +</p> +</dd> +<dt><code class="code">f <var class="var">n</var></code></dt> +<dd><p>Select the font mounted at position <var class="var">n</var>. <var class="var">n</var> cannot +be negative. +</p> +</dd> +<dt><code class="code">H <var class="var">n</var></code></dt> +<dd><p>Horizontally move the drawing position to <var class="var">n</var> basic units from +the left edge of the page. <var class="var">n</var> cannot be negative. +</p> +</dd> +<dt><code class="code">h <var class="var">n</var></code></dt> +<dd><p>Move the drawing position right <var class="var">n</var> basic units. <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce +such values, but <code class="code">groff</code>’s output driver library handles them. +</p> +</dd> +<dt><code class="code">m <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> …<span class="r">]</span></code></dt> +<dd><p>Select the stroke color using the <var class="var">component</var>s in the color space +<var class="var">scheme</var>. Each <var class="var">component</var> is an integer between 0 and 65535. +The quantity of components and their meanings vary with each +<var class="var">scheme</var>. This command is a <code class="code">groff</code> extension. +</p> +<dl class="table"> +<dt><code class="code">mc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var></code></dt> +<dd><p>Use the CMY color scheme with components cyan, magenta, and yellow. +</p> +</dd> +<dt><code class="code">md</code></dt> +<dd><p>Use the default color (no components; black in most cases). +</p> +</dd> +<dt><code class="code">mg <var class="var">gray</var></code></dt> +<dd><p>Use a grayscale color scheme with a component ranging between 0 (black) +and 65535 (white). +</p> +</dd> +<dt><code class="code">mk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var></code></dt> +<dd><p>Use the CMYK color scheme with components cyan, magenta, yellow, and +black. +</p> +</dd> +<dt><code class="code">mr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var></code></dt> +<dd><p>Use the RGB color scheme with components red, green, and blue. +</p></dd> +</dl> + +</dd> +<dt><code class="code">N <var class="var">n</var></code></dt> +<dd><p>Typeset the glyph with index <var class="var">n</var> in the current font. +<var class="var">n</var> is normally a non-negative integer. The drawing position +is not advanced. The <code class="code">html</code> and <code class="code">xhtml</code> devices use this +command with negative <var class="var">n</var> to produce unbreakable space; the +absolute value of <var class="var">n</var> is taken and interpreted in basic units. +</p> +</dd> +<dt><code class="code">n <var class="var">b</var> <var class="var">a</var></code></dt> +<dd><p>Indicate a break. No action is performed; the command is present to +make the output more easily parsed. The integers <var class="var">b</var> +and <var class="var">a</var> describe the vertical space amounts before and after +the break, respectively. GNU <code class="code">troff</code> issues this command but +<code class="code">groff</code>’s output driver library ignores it. See <code class="code">v</code> and +<code class="code">V</code> below. +</p> +</dd> +<dt><code class="code">p <var class="var">n</var></code></dt> +<dd><p>Begin a new page, setting its number to <var class="var">n</var>. Each page is +independent, even from those using the same number. The vertical +drawing position is set to 0. All positioning, writing, and +drawing commands are interpreted in the context of a page, so a +<code class="code">p</code> command must precede them. +</p> +</dd> +<dt><code class="code">s <var class="var">n</var></code></dt> +<dd><p>Set type size to <var class="var">n</var> scaled points (unit <code class="code">z</code> in GNU +<code class="code">troff</code>. +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> used unscaled points <code class="code">p</code> instead; +see <a class="ref" href="#Output-Language-Compatibility">Output Language Compatibility</a>. +</p> +</dd> +<dt><code class="code">t <var class="var">xyz</var>‹<span class="r">whitespace</span>›</code></dt> +<dt><code class="code">t <var class="var">xyz</var> <var class="var">dummy-arg</var>‹<span class="r">whitespace</span>›</code></dt> +<dd><p>Typeset a word <var class="var">xyz</var>; that is, set a sequence of ordinary glyphs +named <var class="var">x</var>, <var class="var">y</var>, <var class="var">z</var>, …, terminated by a space +character or a line break; an optional second integer argument is +ignored (this allows the formatter to generate an even number of +arguments). Each glyph is set at the current drawing position, and the position is +then advanced horizontally by the glyph’s width. A glyph’s width is +read from its metrics in the font description file, scaled to the +current type size, and rounded to a multiple of the horizontal motion +quantum. Use the <code class="code">C</code> command to emplace glyphs of special +characters. The <code class="code">t</code> command is a <code class="code">groff</code> extension and +is output only for devices whose <samp class="file">DESC</samp> file contains the +<code class="code">tcommand</code> directive; see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>. +</p> +</dd> +<dt><code class="code">u <var class="var">n</var> <var class="var">xyz</var>‹<span class="r">whitespace</span>›</code></dt> +<dd><p>Typeset word <var class="var">xyz</var> with track kerning. As <code class="code">t</code>, but after +placing each glyph, the drawing position is further advanced +horizontally by <var class="var">n</var> basic units (<code class="code">u</code>). The +<code class="code">u</code> command is a <code class="code">groff</code> extension and is output only for +devices whose <samp class="file">DESC</samp> file contains the <code class="code">tcommand</code> directive; +see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>. +</p> +</dd> +<dt><code class="code">V <var class="var">n</var></code></dt> +<dd><p>Vertically move the drawing position to <var class="var">n</var> basic units from +the top edge of the page. <var class="var">n</var> cannot be negative. +</p> +</dd> +<dt><code class="code">v <var class="var">n</var></code></dt> +<dd><p>Move the drawing position down <var class="var">n</var> basic units. <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce +such values, but <code class="code">groff</code>’s output driver library handles them. +</p> +</dd> +<dt><code class="code">w</code></dt> +<dd><p>Indicate an inter-word space. No action is performed; the command is +present to make the output more easily parsed. Only adjustable, +breakable inter-word spaces are thus described; those resulting from +<code class="code">\~</code> or horizontal motion escape sequences are not. GNU +<code class="code">troff</code> issues this command but <code class="code">groff</code>’s output driver +library ignores it. See <code class="code">h</code> and <code class="code">H</code> above. +</p></dd> +</dl> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Graphics-Commands"> +<div class="nav-panel"> +<p> +Next: <a href="#Device-Control-Commands" accesskey="n" rel="next">Device Control Commands</a>, Previous: <a href="#Simple-Commands" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Graphics-Commands-1">6.1.2.3 Graphics Commands</h4> + +<p>Each graphics or drawing command in the intermediate output starts with +the letter ‘<samp class="samp">D</samp>’, followed by one or two characters that specify a +subcommand; this is followed by a fixed or variable number of integer +arguments that are separated by a single space character. A ‘<samp class="samp">D</samp>’ +command may not be followed by another command on the same line (apart +from a comment), so each ‘<samp class="samp">D</samp>’ command is terminated by a syntactical +line break. +</p> +<p><code class="code">gtroff</code> output follows the classical spacing rules (no space +between command and subcommand, all arguments are preceded by a single +space character), but the parser allows optional space between the +command letters and makes the space before the first argument optional. +As usual, each space can be any sequence of tab and space characters. +</p> +<p>Some graphics commands can take a variable number of arguments. In this +case, they are integers representing a size measured in basic units +‘<samp class="samp">u</samp>’. The arguments called <var class="var">h1</var>, <var class="var">h2</var>, …, <var class="var">hn</var> +stand for horizontal distances where positive means right, negative +left. The arguments called <var class="var">v1</var>, <var class="var">v2</var>, …, <var class="var">vn</var> stand +for vertical distances where positive means down, negative up. All +these distances are offsets relative to the current location. +</p> +<p>Each graphics command directly corresponds to a similar <code class="code">gtroff</code> +<code class="code">\D</code> escape sequence. See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>. +</p> +<p>Unknown ‘<samp class="samp">D</samp>’ commands are assumed to be device-specific. Its +arguments are parsed as strings; the whole information is then sent to +the postprocessor. +</p> +<p>In the following command reference, the syntax element ‹<span class="r">line +break</span>› means a syntactical line break as defined above. +</p> +<dl class="table"> +<dt><code class="code">D~ <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> … <var class="var">hn</var> <var class="var">vn</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw B-spline from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>), then +to offset (<var class="var">h2</var>,<var class="var">v2</var>), if given, etc., up to +(<var class="var">hn</var>,<var class="var">vn</var>). This command takes a variable number of argument +pairs; the current position is moved to the terminal point of the drawn +curve. +</p> +</dd> +<dt><code class="code">Da <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw arc from current position to +(<var class="var">h1</var>,<var class="var">v1</var>)<em class="math">+</em>(<var class="var">h2</var>,<var class="var">v2</var>) with center at +(<var class="var">h1</var>,<var class="var">v1</var>); then move the current position to the final point +of the arc. +</p> +</dd> +<dt><code class="code">DC <var class="var">d</var>‹<span class="r">line break</span>›</code></dt> +<dt><code class="code">DC <var class="var">d</var> <var class="var">dummy-arg</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw a solid circle using the current fill color with +diameter <var class="var">d</var> (integer in basic units ‘<samp class="samp">u</samp>’) with leftmost +point at the current position; then move the current position to the +rightmost point of the circle. An optional second integer argument is +ignored (this allows the formatter to generate an even number of +arguments). This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">Dc <var class="var">d</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw circle line with diameter <var class="var">d</var> (integer in basic units +‘<samp class="samp">u</samp>’) with leftmost point at the current position; then move the +current position to the rightmost point of the circle. +</p> +</dd> +<dt><code class="code">DE <var class="var">h</var> <var class="var">v</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw a solid ellipse in the current fill color with a horizontal +diameter of <var class="var">h</var> and a vertical diameter of <var class="var">v</var> (both +integers in basic units ‘<samp class="samp">u</samp>’) with the leftmost point at the current +position; then move to the rightmost point of the ellipse. This command +is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">De <var class="var">h</var> <var class="var">v</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw an outlined ellipse with a horizontal diameter of <var class="var">h</var> and +a vertical diameter of <var class="var">v</var> (both integers in basic units +‘<samp class="samp">u</samp>’) with the leftmost point at current position; then move to the +rightmost point of the ellipse. +</p> +</dd> +<dt><code class="code">DF <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> …<span class="r">]</span>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects using different color schemes; +the analogous command for setting the color of text, line graphics, and +the outline of graphic objects is ‘<samp class="samp">m</samp>’. The color components are +specified as integer arguments between 0 and 65535. The number of color +components and their meaning vary for the different color schemes. +These commands are generated by <code class="code">gtroff</code>’s escape sequences +‘<samp class="samp">\D'F …'</samp>’ and <code class="code">\M</code> (with no other corresponding +graphics commands). No position changing. This command is a +<code class="code">gtroff</code> extension. +</p> +<dl class="table"> +<dt><code class="code">DFc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects using the CMY color scheme, +having the 3 color components <var class="var">cyan</var>, <var class="var">magenta</var>, and +<var class="var">yellow</var>. +</p> +</dd> +<dt><code class="code">DFd‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects to the default fill color value +(black in most cases). No component arguments. +</p> +</dd> +<dt><code class="code">DFg <var class="var">gray</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects to the shade of gray given by +the argument, an integer between 0 (black) and 65535 (white). +</p> +</dd> +<dt><code class="code">DFk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects using the CMYK color scheme, +having the 4 color components <var class="var">cyan</var>, <var class="var">magenta</var>, +<var class="var">yellow</var>, and <var class="var">black</var>. +</p> +</dd> +<dt><code class="code">DFr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set fill color for solid drawing objects using the RGB color scheme, +having the 3 color components <var class="var">red</var>, <var class="var">green</var>, and +<var class="var">blue</var>. +</p></dd> +</dl> + +</dd> +<dt><code class="code">Df <var class="var">n</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The argument <var class="var">n</var> must be an integer in the range <em class="math">-32767</em> +to 32767. +</p> +<dl class="table"> +<dt><em class="math">0 ≤ <var class="var">n</var> ≤ 1000</em></dt> +<dd><p>Set the color for filling solid drawing objects to a shade of gray, +where 0 corresponds to solid white, 1000 (the default) to solid black, +and values in between to intermediate shades of gray; this is obsoleted +by command ‘<samp class="samp">DFg</samp>’. +</p> +</dd> +<dt><em class="math"><var class="var">n</var> < 0</em> or <em class="math"><var class="var">n</var> > 1000</em></dt> +<dd><p>Set the filling color to the color that is currently being used for the +text and the outline, see command ‘<samp class="samp">m</samp>’. For example, the command +sequence +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">mg 0 0 65535 +Df -1 +</pre></div></div> + +<p>sets all colors to blue. +</p></dd> +</dl> + +<p>No position changing. This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">Dl <var class="var">h</var> <var class="var">v</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw line from current position to offset (<var class="var">h</var>,<var class="var">v</var>) (integers in +basic units ‘<samp class="samp">u</samp>’); then set current position to the end of the drawn +line. +</p> +</dd> +<dt><code class="code">Dp <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> … <var class="var">hn</var> <var class="var">vn</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw a polygon line from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>), +from there to offset (<var class="var">h2</var>,<var class="var">v2</var>), etc., up to offset +(<var class="var">hn</var>,<var class="var">vn</var>), and from there back to the starting position. For +historical reasons, the position is changed by adding the sum of all +arguments with odd index to the actual horizontal position and the even +ones to the vertical position. Although this doesn’t make sense it is +kept for compatibility. +This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">DP <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> … <var class="var">hn</var> <var class="var">vn</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Draw a solid polygon in the current fill color rather than an outlined +polygon, using the same arguments and positioning as the corresponding +‘<samp class="samp">Dp</samp>’ command. +This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">Dt <var class="var">n</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>Set the current line thickness to <var class="var">n</var> (an integer in basic +units ‘<samp class="samp">u</samp>’) if <em class="math"><var class="var">n</var>>0</em>; if <em class="math"><var class="var">n</var>=0</em> select the +smallest available line thickness; if <em class="math"><var class="var">n</var><0</em> set the line +thickness proportional to the type size (this is the default before the +first ‘<samp class="samp">Dt</samp>’ command was specified). For historical reasons, the +horizontal position is changed by adding the argument to the actual +horizontal position, while the vertical position is not changed. +Although this doesn’t make sense it is kept for compatibility. +This command is a <code class="code">gtroff</code> extension. +</p></dd> +</dl> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Device-Control-Commands"> +<div class="nav-panel"> +<p> +Next: <a href="#Obsolete-Command" accesskey="n" rel="next">Obsolete Command</a>, Previous: <a href="#Graphics-Commands" accesskey="p" rel="prev">Graphics Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Device-Control-Commands-1">6.1.2.4 Device Control Commands</h4> + +<p>Each device control command starts with the letter ‘<samp class="samp">x</samp>’, followed by +a space character (optional or arbitrary space or tab in <code class="code">gtroff</code>) +and a subcommand letter or word; each argument (if any) must be preceded +by a syntactical space. All ‘<samp class="samp">x</samp>’ commands are terminated by a +syntactical line break; no device control command can be followed by +another command on the same line (except a comment). +</p> +<p>The subcommand is basically a single letter, but to increase +readability, it can be written as a word, i.e., an arbitrary sequence of +characters terminated by the next tab, space, or newline character. All +characters of the subcommand word but the first are simply ignored. For +example, <code class="code">gtroff</code> outputs the initialization command ‘<samp class="samp">x i</samp>’<!-- /@w --> +as ‘<samp class="samp">x init</samp>’<!-- /@w --> and the resolution command ‘<samp class="samp">x r</samp>’<!-- /@w --> as +‘<samp class="samp">x res</samp>’<!-- /@w -->. +</p> +<p>In the following, the syntax element ‹<span class="r">line break</span>› means a +syntactical line break (see <a class="pxref" href="#Separation">Separation</a>). +</p> +<dl class="table"> +<dt><code class="code">xF <var class="var">name</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">F</samp>’ stands for <var class="var">Filename</var>. +</p> +<p>Use <var class="var">name</var> as the intended name for the current file in error +reports. This is useful for remembering the original file name when +<code class="code">gtroff</code> uses an internal piping mechanism. The input file is not +changed by this command. This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">xf <var class="var">n</var> <var class="var">s</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">f</samp>’ stands for <var class="var">font</var>. +</p> +<p>Mount font position <var class="var">n</var> (a non-negative integer) with font +named <var class="var">s</var> (a text word). See <a class="xref" href="#Font-Positions">Font Positions</a>. +</p> +</dd> +<dt><code class="code">xH <var class="var">n</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">H</samp>’ stands for <var class="var">Height</var>. +</p> +<p>Set glyph height to <var class="var">n</var> (a positive integer in scaled points +‘<samp class="samp">z</samp>’). <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> uses the unit points (‘<samp class="samp">p</samp>’) +instead. See <a class="xref" href="#Output-Language-Compatibility">Output Language Compatibility</a>. +</p> +</dd> +<dt><code class="code">xi‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">i</samp>’ stands for <var class="var">init</var>. +</p> +<p>Initialize device. This is the third command of the prologue. +</p> +</dd> +<dt><code class="code">xp‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">p</samp>’ stands for <var class="var">pause</var>. +</p> +<p>Parsed but ignored. The <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> manual documents +this command as +</p> +<div class="display"> +<pre class="display-preformatted">pause device, can be restarted +</pre></div> + +<p>but GNU <code class="code">troff</code> output drivers do nothing with this command. +</p> +</dd> +<dt><code class="code">xr <var class="var">n</var> <var class="var">h</var> <var class="var">v</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">r</samp>’ stands for <var class="var">resolution</var>. +</p> +<p>Resolution is <var class="var">n</var>, while <var class="var">h</var> is the minimal horizontal +motion, and <var class="var">v</var> the minimal vertical motion possible with this +device; all arguments are positive integers in basic units ‘<samp class="samp">u</samp>’ per +inch. This is the second command of the prologue. +</p> +</dd> +<dt><code class="code">xS <var class="var">n</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">S</samp>’ stands for <var class="var">Slant</var>. +</p> +<p>Set slant to <var class="var">n</var> (an integer in basic units ‘<samp class="samp">u</samp>’). +</p> +</dd> +<dt><code class="code">xs‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">s</samp>’ stands for <var class="var">stop</var>. +</p> +<p>Terminates the processing of the current file; issued as the last +command of any intermediate <code class="code">troff</code> output. +</p> +</dd> +<dt><code class="code">xt‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">t</samp>’ stands for <var class="var">trailer</var>. +</p> +<p>Generate trailer information, if any. In GNU <code class="code">troff</code>, this is +ignored. +</p> +</dd> +<dt><code class="code">xT <var class="var">xxx</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">T</samp>’ stands for <var class="var">Typesetter</var>. +</p> +<p>Set the name of the output driver to <var class="var">xxx</var>, a sequence of +non-whitespace characters terminated by whitespace. The possible names +correspond to those of <code class="code">groff</code>’s <samp class="option">-T</samp> option. This is the +first command of the prologue. +</p> +</dd> +<dt><code class="code">xu <var class="var">n</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">u</samp>’ stands for <var class="var">underline</var>. +</p> +<p>Configure underlining of spaces. If <var class="var">n</var> is 1, start +underlining of spaces; if <var class="var">n</var> is 0, stop underlining of spaces. +This is needed for the <code class="code">cu</code> request in <code class="code">nroff</code> mode and is +ignored otherwise. This command is a <code class="code">gtroff</code> extension. +</p> +</dd> +<dt><code class="code">xX <var class="var">anything</var>‹<span class="r">line break</span>›</code></dt> +<dd><p>The ‘<samp class="samp">x</samp>’ stands for <var class="var">X-escape</var>. +</p> +<p>Send string <var class="var">anything</var> uninterpreted to the device. If the line +following this command starts with a ‘<samp class="samp">+</samp>’ character this line is +interpreted as a continuation line in the following sense. The ‘<samp class="samp">+</samp>’ +is ignored, but a newline character is sent instead to the device, the +rest of the line is sent uninterpreted. The same applies to all +following lines until the first character of a line is not a ‘<samp class="samp">+</samp>’ +character. This command is generated by the <code class="code">gtroff</code> escape +sequence <code class="code">\X</code>. The line-continuing feature is a <code class="code">gtroff</code> +extension. +</p></dd> +</dl> + +<hr> +</div> +<div class="subsubsection-level-extent" id="Obsolete-Command"> +<div class="nav-panel"> +<p> +Previous: <a href="#Device-Control-Commands" accesskey="p" rel="prev">Device Control Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsubsection" id="Obsolete-Command-1">6.1.2.5 Obsolete Command</h4> +<p>In <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> output, the writing of a single glyph is +mostly done by a very strange command that combines a horizontal move +and a single character giving the glyph name. It doesn’t have a command +code, but is represented by a 3-character argument consisting of exactly +2 digits and a character. +</p> +<dl class="table"> +<dt><var class="var">dd</var><var class="var">g</var></dt> +<dd><p>Move right <var class="var">dd</var> (exactly two decimal digits) basic units ‘<samp class="samp">u</samp>’, +then print glyph <var class="var">g</var> (represented as a single character). +</p> +<p>In GNU <code class="code">troff</code>, arbitrary syntactical space around and within this +command is allowed. Only when a preceding command on the same line ends +with an argument of variable length is a separating space obligatory. +In <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>, large clusters of these and other +commands are used, mostly without spaces; this made such output almost +unreadable. +</p></dd> +</dl> + +<p>For modern high-resolution devices, this command does not make sense +because the width of the glyphs can become much larger than two decimal +digits. In <code class="code">gtroff</code>, this is only used for the devices <code class="code">X75</code>, +<code class="code">X75-12</code>, <code class="code">X100</code>, and <code class="code">X100-12</code>. For other devices, the +commands ‘<samp class="samp">t</samp>’ and ‘<samp class="samp">u</samp>’ provide a better functionality. +</p> + +<hr> +</div> +</div> +<div class="subsection-level-extent" id="Intermediate-Output-Examples"> +<div class="nav-panel"> +<p> +Next: <a href="#Output-Language-Compatibility" accesskey="n" rel="next">Output Language Compatibility</a>, Previous: <a href="#Command-Reference" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Intermediate-Output-Examples-1">6.1.3 Intermediate Output Examples</h4> + +<p>This section presents the intermediate output generated from the same +input for three different devices. The input is the sentence ‘<samp class="samp">hell +world</samp>’ fed into <code class="code">gtroff</code> on the command line. +</p> +<dl class="table"> +<dt>High-resolution device <code class="code">ps</code></dt> +<dd> +<p>This is the standard output of <code class="code">gtroff</code> if no <samp class="option">-T</samp> option is +given. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">shell> echo "hell world" | groff -Z -T ps + +x T ps +x res 72000 1 1 +x init +</pre></div><pre class="example-preformatted">p1 +x font 5 TR +f5 +s10000 +V12000 +H72000 +thell +wh2500 +tw +H96620 +torld +n12000 0 +</pre><div class="group"><pre class="example-preformatted">x trailer +V792000 +x stop +</pre></div></div> + +<p>This output can be fed into <code class="code">grops</code> to get its representation as a +PostScript file. +</p> +</dd> +<dt>Low-resolution device <code class="code">latin1</code></dt> +<dd> +<p>This is similar to the high-resolution device except that the +positioning is done at a minor scale. Some comments (lines starting +with ‘<samp class="samp">#</samp>’) were added for clarification; they were not generated by +the formatter. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">shell> echo "hell world" | groff -Z -T latin1 + +# prologue +x T latin1 +x res 240 24 40 +x init +</pre></div><pre class="example-preformatted"># begin a new page +p1 +# font setup +x font 1 R +f1 +s10 +# initial positioning on the page +V40 +H0 +# write text 'hell' +thell +# inform about space, and issue a horizontal jump +wh24 +# write text 'world' +tworld +# announce line break, but do nothing because... +n40 0 +</pre><div class="group"><pre class="example-preformatted"># ...the end of the document has been reached +x trailer +V2640 +x stop +</pre></div></div> + +<p>This output can be fed into <code class="code">grotty</code> to get a formatted text +document. +</p> +</dd> +<dt><abbr class="acronym">AT&T</abbr> <code class="code">troff</code> output</dt> +<dd><p>Since a computer monitor has a much lower resolution than modern +printers, the intermediate output for X11 devices can use the +jump-and-write command with its 2-digit displacements. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted">shell> echo "hell world" | groff -Z -T X100 + +x T X100 +x res 100 1 1 +x init +</pre></div><pre class="example-preformatted">p1 +x font 5 TR +f5 +s10 +V16 +H100 +# write text with jump-and-write commands +ch07e07l03lw06w11o07r05l03dh7 +n16 0 +</pre><div class="group"><pre class="example-preformatted">x trailer +V1100 +x stop +</pre></div></div> + +<p>This output can be fed into <code class="code">xditview</code> or <code class="code">gxditview</code> for +displaying in X. +</p> +<p>Due to the obsolete jump-and-write command, the text clusters in the +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> output are almost unreadable. +</p></dd> +</dl> + + +<hr> +</div> +<div class="subsection-level-extent" id="Output-Language-Compatibility"> +<div class="nav-panel"> +<p> +Previous: <a href="#Intermediate-Output-Examples" accesskey="p" rel="prev">Intermediate Output Examples</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Output-Language-Compatibility-1">6.1.4 Output Language Compatibility</h4> + +<p>The intermediate output language of <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> was +first documented in <cite class="cite">A Typesetter-independent TROFF</cite>, by Brian +Kernighan, and by 1992 the <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> manual was +updated to incorprate a description of it. +</p> +<p>The GNU <code class="code">troff</code> intermediate output format is compatible with this +specification except for the following features. +</p> +<ul class="itemize mark-bullet"> +<li>The classical quasi-device independence is not yet implemented. + +</li><li>The old hardware was very different from what we use today. So the +<code class="code">groff</code> devices are also fundamentally different from the ones +in <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>. For example, the <abbr class="acronym">AT&T</abbr> +PostScript device is called <code class="code">post</code> and has a resolution of only 720 +units per inch, suitable for printers 20 years ago, while <code class="code">groff</code>’s +<code class="code">ps</code> device has a resolution of 72000 units per inch. Maybe, by +implementing some rescaling mechanism similar to the classical +quasi-device independence, <code class="code">groff</code> could emulate <abbr class="acronym">AT&T</abbr>’s +<code class="code">post</code> device. + +</li><li>The B-spline command ‘<samp class="samp">D~</samp>’ is correctly handled by the intermediate +output parser, but the drawing routines aren’t implemented in some of +the postprocessor programs. + +</li><li>The argument of the commands ‘<samp class="samp">s</samp>’ and ‘<samp class="samp">x H</samp>’<!-- /@w --> has the +implicit unit scaled point ‘<samp class="samp">z</samp>’ in <code class="code">gtroff</code>, while +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code> has point (‘<samp class="samp">p</samp>’). This isn’t an +incompatibility but a compatible extension, for both units coincide for +all devices without a <code class="code">sizescale</code> parameter in the <samp class="file">DESC</samp> +file, including all postprocessors from <abbr class="acronym">AT&T</abbr> and +<code class="code">groff</code>’s text devices. The few <code class="code">groff</code> devices with a +<code class="code">sizescale</code> parameter either do not exist for <abbr class="acronym">AT&T</abbr> +<code class="code">troff</code>, have a different name, or seem to have a different +resolution. So conflicts are very unlikely. + +</li><li>The position changing after the commands ‘<samp class="samp">Dp</samp>’, ‘<samp class="samp">DP</samp>’, and +‘<samp class="samp">Dt</samp>’ is illogical, but as old versions of <code class="code">gtroff</code> used this +feature it is kept for compatibility reasons. + + +</li></ul> + + + +<hr> +</div> +</div> +<div class="section-level-extent" id="Device-and-Font-Description-Files"> +<div class="nav-panel"> +<p> +Previous: <a href="#gtroff-Output" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="#File-Formats" accesskey="u" rel="up">File Formats</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h3 class="section" id="Device-and-Font-Description-Files-1">6.2 Device and Font Description Files</h3> +<a class="index-entry-id" id="index-font-files"></a> +<a class="index-entry-id" id="index-files_002c-font"></a> + +<p>The <code class="code">groff</code> font and output device description formats are slight +extensions of those used by <abbr class="acronym">AT&T</abbr> device-independent +<code class="code">troff</code>. In distinction to the <abbr class="acronym">AT&T</abbr> implementation, +<code class="code">groff</code> lacks a binary format; all files are text +files.<a class="footnote" id="DOCF125" href="#FOOT125"><sup>125</sup></a> The device and font description files for a device <var class="var">name</var> +are stored in a <samp class="file">dev<var class="var">name</var></samp> directory. The device description +file is called <samp class="file">DESC</samp>, and, for each font supported by the device, +a font description file is called <samp class="file"><var class="var">f</var></samp>, where +<var class="var">f</var> is usually an abbreviation of a font’s name and/or style. +For example, the <code class="code">ps</code> (PostScript) device has <code class="code">groff</code> font +description files for Times roman (<samp class="file">TR</samp>) and Zapf Chancery Medium +italic (<samp class="file">ZCMI</samp>), among many others, while the <code class="code">utf8</code> device +(for terminal emulators) has only font descriptions for the roman, +italic, bold, and bold-italic styles (<samp class="file">R</samp>, <samp class="file">I</samp>, <samp class="file">B</samp>, and +<samp class="file">BI</samp>, respectively). +</p> +<p>Device and font description files are read both by the formatter, GNU +<code class="code">troff</code>, and by output drivers. The programs delegate these files’ +processing to an internal library, <samp class="file">libgroff</samp>, ensuring their +consistent interpretation. +</p> + + +<ul class="mini-toc"> +<li><a href="#DESC-File-Format" accesskey="1"><samp class="file">DESC</samp> File Format</a></li> +<li><a href="#Font-Description-File-Format" accesskey="2">Font Description File Format</a></li> +</ul> +<hr> +<div class="subsection-level-extent" id="DESC-File-Format"> +<div class="nav-panel"> +<p> +Next: <a href="#Font-Description-File-Format" accesskey="n" rel="next">Font Description File Format</a>, Previous: <a href="#Device-and-Font-Description-Files" accesskey="p" rel="prev">Device and Font Description Files</a>, Up: <a href="#Device-and-Font-Description-Files" accesskey="u" rel="up">Device and Font Description Files</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="DESC-File-Format-1">6.2.1 <samp class="file">DESC</samp> File Format</h4> +<a class="index-entry-id" id="index-DESC-file-format"></a> +<a class="index-entry-id" id="index-font-description-file-format"></a> +<a class="index-entry-id" id="index-format-of-font-description-file"></a> + +<p>The <samp class="file">DESC</samp> file contains a series of directives; each begins a +line. Their order is not important, with two exceptions: (1) the +<code class="code">res</code> directive must precede any <code class="code">papersize</code> directive; and +(2) the <code class="code">charset</code> directive must come last (if at all). If a +directive name is repeated, later entries in the file override previous +ones (except that the paper dimensions are computed based on the +<code class="code">res</code> directive last seen when <code class="code">papersize</code> is encountered). +Spaces and/or tabs separate words and are ignored at line boundaries. +<a class="index-entry-id" id="index-comments-in-device-description-files"></a> +<a class="index-entry-id" id="index-device-description-files_002c-comments"></a> +<a class="index-entry-id" id="index-_0023"></a> +Comments start with the ‘<samp class="samp">#</samp>’ character and extend to the end of a +line. Empty lines are ignored. +</p> +<dl class="table"> +<dt id='index-family-1'><span><code class="code">family <var class="var">fam</var></code><a class="copiable-link" href='#index-family-1'> ¶</a></span></dt> +<dd><p>The default font family is <var class="var">fam</var>. +</p> +</dd> +<dt id='index-fonts-2'><span><code class="code">fonts <var class="var">n</var> <var class="var">F1</var> <span class="r">…</span> <var class="var">Fn</var></code><a class="copiable-link" href='#index-fonts-2'> ¶</a></span></dt> +<dd><p>Fonts <var class="var">F1</var>, …, <var class="var">Fn</var> are mounted at font positions +<var class="var">m</var>+1, …, <var class="var">m</var>+<var class="var">n</var> where <var class="var">m</var> is the number of +<code class="code">styles</code> (see below). This directive may extend over more than one +line. A font name of <code class="code">0</code> causes no font to be mounted at the +corresponding position. +</p> +</dd> +<dt id='index-hor'><span><code class="code">hor <var class="var">n</var></code><a class="copiable-link" href='#index-hor'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-horizontal-motion-quantum"></a> +<a class="index-entry-id" id="index-motion-quantum_002c-horizontal"></a> +<a class="index-entry-id" id="index-quantum_002c-horizontal-motion"></a> +<a class="index-entry-id" id="index-horizontal-resolution"></a> +<a class="index-entry-id" id="index-resolution_002c-horizontal"></a> +<p>The horizontal motion quantum is <var class="var">n</var> basic units. All +horizontal quantities are rounded to multiples of <var class="var">n</var>. +</p> +</dd> +<dt id='index-image_005fgenerator'><span><code class="code">image_generator <var class="var">program</var></code><a class="copiable-link" href='#index-image_005fgenerator'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-PostScript_002c-PNG-image-generation"></a> +<a class="index-entry-id" id="index-PNG-image-generation-from-PostScript"></a> +<p>Use <var class="var">program</var> to generate PNG images from PostScript input. Under +GNU/Linux, this is usually <code class="code">gs</code>, but under other systems (notably +Cygwin) it might be set to another name. The <code class="code">grohtml</code> driver uses +this directive. +</p> +</dd> +<dt id='index-paperlength'><span><code class="code">paperlength <var class="var">n</var></code><a class="copiable-link" href='#index-paperlength'> ¶</a></span></dt> +<dd><p>The vertical dimension of the output medium is <var class="var">n</var> basic units +(deprecated: use <code class="code">papersize</code> instead). +</p> +</dd> +<dt id='index-papersize'><span><code class="code">papersize <var class="var">format-or-dimension-pair-or-file-name</var> <span class="r">…</span></code><a class="copiable-link" href='#index-papersize'> ¶</a></span></dt> +<dd><p>The dimensions of the output medium are as according to the +argument, which is either a standard paper format, a pair of dimensions, +or the name of a plain text file containing either of the foregoing. +</p> +<p>Recognized paper formats are the ISO and DIN formats +<code class="code">A0</code>–<code class="code">A7</code>, <code class="code">B0</code>–<code class="code">B7</code>, <code class="code">C0</code>–<code class="code">C7</code>, +<code class="code">D0</code>–<code class="code">D7</code>; the U.S. paper types <code class="code">letter</code>, +<code class="code">legal</code>, <code class="code">tabloid</code>, <code class="code">ledger</code>, <code class="code">statement</code>, and +<code class="code">executive</code>; and the envelope formats <code class="code">com10</code>, <code class="code">monarch</code>, +and <code class="code">DL</code>. Matching is performed without regard for lettercase. +</p> +<p>Alternatively, the argument can be a custom paper format in the format +<code class="code"><var class="var">length</var>,<var class="var">width</var></code> (with no spaces before or after the +comma). Both <var class="var">length</var> and <var class="var">width</var> must have a unit appended; +valid units are ‘<samp class="samp">i</samp>’ for inches, ‘<samp class="samp">c</samp>’ for centimeters, ‘<samp class="samp">p</samp>’ +for points, and ‘<samp class="samp">P</samp>’ for picas. Example: ‘<samp class="samp">12c,235p</samp>’. An +argument that starts with a digit is always treated as a custom paper +format. +</p> +<p>Finally, the argument can be a file name (e.g., <samp class="file">/etc/papersize</samp>); +if the file can be opened, the first line is read and a match attempted +against each of the other forms. No comment syntax is supported. +</p> +<p>More than one argument can be specified; +each is scanned in turn and the first valid paper specification used. +</p> +</dd> +<dt id='index-paperwidth'><span><code class="code">paperwidth <var class="var">n</var></code><a class="copiable-link" href='#index-paperwidth'> ¶</a></span></dt> +<dd><p>The horizontal dimension of the output medium is <var class="var">n</var> basic +units (deprecated: use <code class="code">papersize</code> instead). +</p> +</dd> +<dt id='index-pass_005ffilenames'><span><code class="code">pass_filenames</code><a class="copiable-link" href='#index-pass_005ffilenames'> ¶</a></span></dt> +<dd><p>Direct GNU <code class="code">troff</code> to emit the name of the source file being +processed. This is achieved with the intermediate output command +‘<samp class="samp">x F</samp>’, which <code class="code">grohtml</code> interprets. +</p> +</dd> +<dt id='index-postpro'><span><code class="code">postpro <var class="var">program</var></code><a class="copiable-link" href='#index-postpro'> ¶</a></span></dt> +<dd><p>Use <var class="var">program</var> as the postprocessor. +</p> +</dd> +<dt id='index-prepro'><span><code class="code">prepro <var class="var">program</var></code><a class="copiable-link" href='#index-prepro'> ¶</a></span></dt> +<dd><p>Use <var class="var">program</var> as a preprocessor. The <code class="code">html</code> and <code class="code">xhtml</code> +output devices use this directive. +</p> +</dd> +<dt id='index-print'><span><code class="code">print <var class="var">program</var></code><a class="copiable-link" href='#index-print'> ¶</a></span></dt> +<dd><p>Use <var class="var">program</var> as a spooler program for printing. If omitted, the +<samp class="option">-l</samp> and <samp class="option">-L</samp> options of <code class="code">groff</code> are ignored. +</p> +</dd> +<dt id='index-res'><span><code class="code">res <var class="var">n</var></code><a class="copiable-link" href='#index-res'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-device-resolution-1"></a> +<a class="index-entry-id" id="index-resolution_002c-device-1"></a> +<p>The device resolution is <var class="var">n</var> basic units per inch. +</p> +</dd> +<dt id='index-sizes'><span><code class="code">sizes <var class="var">s1</var> <span class="r">…</span> <var class="var">sn</var> 0</code><a class="copiable-link" href='#index-sizes'> ¶</a></span></dt> +<dd><p>The device has fonts at <var class="var">s1</var>, …, <var class="var">sn</var> scaled points (see +below). The list of sizes must be terminated by <code class="code">0</code>. Each +<var class="var">si</var> can also be a range of sizes <var class="var">m</var>–<var class="var">n</var>. The list can +extend over more than one line. +</p> +</dd> +<dt id='index-sizescale'><span><code class="code">sizescale <var class="var">n</var></code><a class="copiable-link" href='#index-sizescale'> ¶</a></span></dt> +<dd><p>A typographical point is subdivided into <var class="var">n</var> scaled points. +The default is <code class="code">1</code>. See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>. +</p> +</dd> +<dt id='index-styles-2'><span><code class="code">styles <var class="var">S1</var> <span class="r">…</span> <var class="var">Sm</var></code><a class="copiable-link" href='#index-styles-2'> ¶</a></span></dt> +<dd><p>The first <var class="var">m</var> mounting positions are associated with styles +<var class="var">S1</var>, …, <var class="var">Sm</var>. +</p> +</dd> +<dt id='index-tcommand'><span><code class="code">tcommand</code><a class="copiable-link" href='#index-tcommand'> ¶</a></span></dt> +<dd><p>The postprocessor can handle the ‘<samp class="samp">t</samp>’ and ‘<samp class="samp">u</samp>’ intermediate +output commands. +</p> +</dd> +<dt id='index-unicode'><span><code class="code">unicode</code><a class="copiable-link" href='#index-unicode'> ¶</a></span></dt> +<dd><p>The output device supports the complete Unicode repertoire. This +directive is useful only for devices that produce character entities +instead of glyphs. +</p> +<p>If <code class="code">unicode</code> is present, no <code class="code">charset</code> section is required in +the font description files since the Unicode handling built into +<code class="code">groff</code> is used. However, if there are entries in a font +description file’s <code class="code">charset</code> section, they either override the +default mappings for those particular characters or add new mappings +(normally for composite characters). +</p> +<p>The <code class="code">utf8</code>, <code class="code">html</code>, and <code class="code">xhtml</code> output devices use this +directive. +</p> +</dd> +<dt id='index-unitwidth'><span><code class="code">unitwidth <var class="var">n</var></code><a class="copiable-link" href='#index-unitwidth'> ¶</a></span></dt> +<dd><p>Quantities in the font description files are in basic units for fonts +whose type size is <var class="var">n</var> scaled points. +</p> +</dd> +<dt id='index-unscaled_005fcharwidths'><span><code class="code">unscaled_charwidths</code><a class="copiable-link" href='#index-unscaled_005fcharwidths'> ¶</a></span></dt> +<dd><p>Make the font handling module always return unscaled character widths. +The <code class="code">grohtml</code> driver uses this directive. +</p> +</dd> +<dt id='index-use_005fcharnames_005fin_005fspecial-1'><span><code class="code">use_charnames_in_special</code><a class="copiable-link" href='#index-use_005fcharnames_005fin_005fspecial-1'> ¶</a></span></dt> +<dd><p>GNU <code class="code">troff</code> should encode special characters inside device control +commands; see <a class="ref" href="#Postprocessor-Access">Postprocessor Access</a>. The <code class="code">grohtml</code> driver +uses this directive. +</p> +</dd> +<dt id='index-vert'><span><code class="code">vert <var class="var">n</var></code><a class="copiable-link" href='#index-vert'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-vertical-motion-quantum"></a> +<a class="index-entry-id" id="index-motion-quantum_002c-vertical"></a> +<a class="index-entry-id" id="index-quantum_002c-vertical-motion"></a> +<a class="index-entry-id" id="index-vertical-resolution"></a> +<a class="index-entry-id" id="index-resolution_002c-vertical"></a> +<p>The vertical motion quantum is <var class="var">n</var> basic units. All vertical +quantities are rounded to multiples of <var class="var">n</var>. +</p> +</dd> +<dt id='index-charset'><span><code class="code">charset</code><a class="copiable-link" href='#index-charset'> ¶</a></span></dt> +<dd><p>This line and everything following it in the file are ignored. It is +recognized for compatibility with other <code class="code">troff</code> implementations. +In GNU <code class="code">troff</code>, character set repertoire is described on a +per-font basis. +</p></dd> +</dl> + +<a class="index-entry-id" id="index-spare1"></a> +<a class="index-entry-id" id="index-spare2"></a> +<a class="index-entry-id" id="index-biggestfont"></a> +<p>GNU <code class="code">troff</code> recognizes but ignores the directives <code class="code">spare1</code>, +<code class="code">spare2</code>, and <code class="code">biggestfont</code>. +</p> +<p>The <code class="code">res</code>, <code class="code">unitwidth</code>, <code class="code">fonts</code>, and <code class="code">sizes</code> lines +are mandatory. Directives not listed above are ignored by GNU +<code class="code">troff</code> but may be used by postprocessors to obtain further +information about the device. +</p> + +<hr> +</div> +<div class="subsection-level-extent" id="Font-Description-File-Format"> +<div class="nav-panel"> +<p> +Previous: <a href="#DESC-File-Format" accesskey="p" rel="prev"><samp class="file">DESC</samp> File Format</a>, Up: <a href="#Device-and-Font-Description-Files" accesskey="u" rel="up">Device and Font Description Files</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="subsection" id="Font-Description-File-Format-1">6.2.2 Font Description File Format</h4> +<a class="index-entry-id" id="index-font-file_002c-format"></a> +<a class="index-entry-id" id="index-font-description-file_002c-format"></a> +<a class="index-entry-id" id="index-format-of-font-files"></a> +<a class="index-entry-id" id="index-format-of-font-description-files"></a> + +<p>On typesetting output devices, each font is typically available at +multiple sizes. While paper measurements in the device description file +are in absolute units, measurements applicable to fonts must be +proportional to the type size. <code class="code">groff</code> achieves this using the +precedent set by <abbr class="acronym">AT&T</abbr> device-independent <code class="code">troff</code>: one +font size is chosen as a norm, and all others are scaled linearly +relative to that basis. The “unit width” is the number of basic units +per point when the font is rendered at this nominal size. +</p> +<p>For instance, <code class="code">groff</code>’s <code class="code">lbp</code> device uses a <code class="code">unitwidth</code> +of 800. Its Times roman font ‘<samp class="samp">TR</samp>’ has a <code class="code">spacewidth</code> +of 833; this is also the width of its comma, period, centered +period, and mathematical asterisk, while its ‘<samp class="samp">M</samp>’ is 2,963 basic +units. Thus, an ‘<samp class="samp">M</samp>’ on the <code class="code">lbp</code> device is 2,963 basic units +wide at a notional type size of 800 points.<a class="footnote" id="DOCF126" href="#FOOT126"><sup>126</sup></a> +</p> +<p>A font description file has two sections. The first is a sequence of +directives, and is parsed similarly to the <samp class="file">DESC</samp> file described +above. Except for the directive names that begin the second section, +their ordering is immaterial. Later directives of the same name +override earlier ones, spaces and tabs are handled in the same way, +<a class="index-entry-id" id="index-comments-in-font-description-files"></a> +<a class="index-entry-id" id="index-font-description-files_002c-comments"></a> +<a class="index-entry-id" id="index-_0023-1"></a> +and the same comment syntax is supported. Empty lines are ignored +throughout. +</p> +<dl class="table"> +<dt id='index-name'><span><code class="code">name <var class="var">f</var></code><a class="copiable-link" href='#index-name'> ¶</a></span></dt> +<dd><p>The name of the font is <var class="var">f</var>. ‘<samp class="samp">DESC</samp>’ is an invalid font +name. Simple integers are valid, but their use is +discouraged.<a class="footnote" id="DOCF127" href="#FOOT127"><sup>127</sup></a> +</p> +</dd> +<dt id='index-spacewidth'><span><code class="code">spacewidth <var class="var">n</var></code><a class="copiable-link" href='#index-spacewidth'> ¶</a></span></dt> +<dd><p>The width of an unadjusted inter-word space is <var class="var">n</var> basic units. +</p></dd> +</dl> + +<p>The directives above must appear in the first section; those below are +optional. +</p> +<dl class="table"> +<dt id='index-slant'><span><code class="code">slant <var class="var">n</var></code><a class="copiable-link" href='#index-slant'> ¶</a></span></dt> +<dd><p>The font’s glyphs have a slant of <var class="var">n</var> degrees; a positive +<var class="var">n</var> slants in the direction of text flow. +</p> +</dd> +<dt id='index-ligatures'><span><code class="code">ligatures <var class="var">lig1</var> <span class="r">…</span> <var class="var">lign</var> <span class="r">[</span>0<span class="r">]</span></code><a class="copiable-link" href='#index-ligatures'> ¶</a></span></dt> +<dd><p>Glyphs <var class="var">lig1</var>, …, <var class="var">lign</var> are ligatures; possible ligatures +are ‘<samp class="samp">ff</samp>’, ‘<samp class="samp">fi</samp>’, ‘<samp class="samp">fl</samp>’, ‘<samp class="samp">ffi</samp>’ and ‘<samp class="samp">ffl</samp>’. For +compatibility with other <code class="code">troff</code> implementations, the list of +ligatures may be terminated with a <code class="code">0</code>. The list of ligatures +must not extend over more than one line. +</p> +</dd> +<dt id='index-special-fonts-2'><span><code class="code">special</code><a class="copiable-link" href='#index-special-fonts-2'> ¶</a></span></dt> +<dd><a class="index-entry-id" id="index-special-1"></a> +<p>The font is <em class="dfn">special</em>: when a glyph is requested that is not present +in the current font, it is sought in any mounted fonts that bear this +property. +</p></dd> +</dl> + +<p>Other directives in this section are ignored by GNU <code class="code">troff</code>, but +may be used by postprocessors to obtain further information about the +font. +</p> +<p>The second section contains one or two subsections. These can appear in +either order; the first one encountered commences the second section. +Each starts with a directive on a line by itself. A <code class="code">charset</code> +subsection is mandatory unless the associated <samp class="file">DESC</samp> file contains +the <code class="code">unicode</code> directive. Another subsection, <code class="code">kernpairs</code>, +is optional. +</p> +<a class="index-entry-id" id="index-charset-1"></a> +<p>The directive <code class="code">charset</code> starts the character set +subsection.<a class="footnote" id="DOCF128" href="#FOOT128"><sup>128</sup></a> It precedes a series +of glyph descriptions, one per line. Each such glyph description +comprises a set of fields separated by spaces or tabs and organized as +follows. +</p> +<blockquote class="quotation"> +<p><var class="var">name</var> <var class="var">metrics</var> <var class="var">type</var> <var class="var">code</var> [<var class="var">entity-name</var>] +[<code class="code">--</code> <var class="var">comment</var>] +</p></blockquote> + +<a class="index-entry-id" id="index-8_002dbit-input"></a> +<a class="index-entry-id" id="index-input_002c-8_002dbit"></a> +<a class="index-entry-id" id="index-accessing-unnamed-glyphs-with-_005cN"></a> +<a class="index-entry-id" id="index-unnamed-glyphs_002c-accessing-with-_005cN"></a> +<a class="index-entry-id" id="index-characters_002c-unnamed_002c-accessing-with-_005cN"></a> +<a class="index-entry-id" id="index-glyphs_002c-unnamed_002c-accessing-with-_005cN"></a> +<a class="index-entry-id" id="index-_002d_002d_002d"></a> +<p><var class="var">name</var> identifies the glyph: +if <var class="var">name</var> is a printable character <var class="var">c</var>, it corresponds to +the <code class="code">troff</code> ordinary character <var class="var">c</var>. If <var class="var">name</var> is a +multi-character sequence not beginning with <code class="code">\</code>, it corresponds to +the GNU <code class="code">troff</code> special character escape sequence +‘<samp class="samp">\[<var class="var">name</var>]</samp>’. A name consisting of three minus signs, +‘<samp class="samp">---</samp>’, is special and indicates that the glyph is unnamed: such +glyphs can be accessed only by the <code class="code">\N</code> escape sequence in +<code class="code">troff</code>. A special character named ‘<samp class="samp">---</samp>’ can still be defined +using <code class="code">char</code> and similar requests. The <var class="var">name</var> ‘<samp class="samp">\-</samp>’ +defines the minus sign glyph. Finally, <var class="var">name</var> can be the +unbreakable one-sixth and one-twelfth space escape sequences, <code class="code">\|</code> +and <code class="code">\^</code> (“thin” and “hair” spaces, respectively), in which +case only the width metric described below is interpreted; a font can +thus customize the widths of these spaces. +</p> +<p>The form of the <var class="var">metrics</var> field is as follows. +</p> +<div class="display"> +<div class="group"><pre class="display-preformatted"><var class="var">width</var>[<code class="code">,</code>[<var class="var">height</var>[<code class="code">,</code>[<var class="var">depth</var>[<code class="code">,</code>[<var class="var">italic-correction</var> + [<code class="code">,</code>[<var class="var">left-italic-correction</var>[<code class="code">,</code>[<var class="var">subscript-correction</var>]]]]]]]]]] +</pre></div></div> + +<p>There must not be any spaces, tabs, or newlines between these +<em class="dfn">subfields</em> (which have been split here into two lines only for +better legibility). The subfields are in basic units expressed as +decimal integers. Unspecified subfields default to <code class="code">0</code>. +Since there is no associated binary format, these values are not +required to fit into the C language data type ‘<samp class="samp">char</samp>’ as they are in +<abbr class="acronym">AT&T</abbr> device-independent <code class="code">troff</code>. +</p> +<p>The <var class="var">width</var> subfield gives the width of the glyph. The <var class="var">height</var> +subfield gives the height of the glyph (upward is positive); if a glyph +does not extend above the baseline, it should be given a zero height, +rather than a negative height. The <var class="var">depth</var> subfield gives the depth +of the glyph, that is, the distance below the baseline to which the +glyph extends (downward is positive); if a glyph does not extend below +the baseline, it should be given a zero depth, rather than a negative +depth. Italic corrections are relevant to glyphs in italic or oblique +styles. The <var class="var">italic-correction</var> is the amount of space that should +be added after an oblique glyph to be followed immediately by an upright +glyph. The <var class="var">left-italic-correction</var> is the amount of space that +should be added before an oblique glyph to be preceded immediately by an +upright glyph. The <var class="var">subscript-correction</var> is the amount of space +that should be added after an oblique glyph to be followed by a +subscript; it should be less than the italic correction. +</p> +<p>For fonts used with typesetting devices, the <var class="var">type</var> field gives a +featural description of the glyph: it is a bit mask recording whether +the glyph is an ascender, descender, both, or neither. When a <code class="code">\w</code> +escape sequence is interpolated, these values are bitwise or-ed +together for each glyph and stored in the <code class="code">nr</code> register. In font +descriptions for terminal devices, all glyphs might have a type of zero, +regardless of their appearance. +</p> +<dl class="table"> +<dt><code class="code">0</code></dt> +<dd><p>means the glyph lies entirely between the baseline and a horizontal line +at the “x-height” of the font; typical examples are ‘<samp class="samp">a</samp>’, +‘<samp class="samp">c</samp>’, and ‘<samp class="samp">x</samp>’; +</p> +</dd> +<dt><code class="code">1</code></dt> +<dd><p>means the glyph descends below the baseline, like ‘<samp class="samp">p</samp>’; +</p> +</dd> +<dt><code class="code">2</code></dt> +<dd><p>means the glyph ascends above the font’s x-height, like ‘<samp class="samp">A</samp>’ or +‘<samp class="samp">b</samp>’; and +</p> +</dd> +<dt><code class="code">3</code></dt> +<dd><p>means the glyph is both an ascender and a descender—this is true of +parentheses in some fonts. +</p></dd> +</dl> + +<p>The <var class="var">code</var> field gives a numeric identifier that the postprocessor +uses to render the glyph. The glyph can be specified to <code class="code">troff</code> +using this code by means of the <code class="code">\N</code> escape sequence. <var class="var">code</var> +can be any integer.<a class="footnote" id="DOCF129" href="#FOOT129"><sup>129</sup></a> +</p> +<p>The <var class="var">entity-name</var> field defines an identifier for the glyph that the +postprocessor uses to print the GNU <code class="code">troff</code> glyph <var class="var">name</var>. This +field is optional; it was introduced so that the <code class="code">grohtml</code> output +driver could encode its character set. For example, the glyph +‘<samp class="samp">\[Po]</samp>’ is represented by ‘<samp class="samp">&pound;</samp>’ in <abbr class="acronym">HTML</abbr> 4.0. +For efficiency, these data are now compiled directly into +<code class="code">grohtml</code>. <code class="code">grops</code> uses the field to build sub-encoding +arrays for PostScript fonts containing more than 256 glyphs. Anything +on the line after the <var class="var">entity-name</var> field or ‘<samp class="samp">--</samp>’ is ignored. +</p> +<p>A line in the <code class="code">charset</code> section can also have the form +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"><var class="var">name</var> " +</pre></div></div> + +<p>identifying <var class="var">name</var> as another name for the glyph mentioned in the +preceding line. Such aliases can be chained. +</p> +<a class="index-entry-id" id="index-kernpairs"></a> +<p>The directive <code class="code">kernpairs</code> starts a list of kerning adjustments to +be made to adjacent glyph pairs from this font. It contains a sequence +of lines formatted as follows. +</p> +<div class="example"> +<div class="group"><pre class="example-preformatted"><var class="var">g1</var> <var class="var">g2</var> <var class="var">n</var> +</pre></div></div> + +<p>The foregoing means that when glyph <var class="var">g1</var> is typeset immediately +before <var class="var">g2</var>, the space between them should be increased +by <var class="var">n</var>. Most kerning pairs should have a negative value +for <var class="var">n</var>. +</p> + + + + +<hr> +</div> +</div> +</div> +<div class="appendix-level-extent" id="Copying-This-Manual"> +<div class="nav-panel"> +<p> +Next: <a href="#Request-Index" accesskey="n" rel="next">Request Index</a>, Previous: <a href="#Font-Description-File-Format" accesskey="p" rel="prev">Font Description File Format</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Copying-This-Manual-1">Appendix A Copying This Manual</h2> + +<div class="center">Version 1.3, 3 November 2008 +</div> + +<div class="display"> +<pre class="display-preformatted">Copyright © 2000-2018 Free Software Foundation, Inc. +<a class="uref" href="http://fsf.org/">http://fsf.org/</a> + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +</pre></div> + +<ol class="enumerate" start="0"> +<li> PREAMBLE + +<p>The purpose of this License is to make a manual, textbook, or other +functional and useful document <em class="dfn">free</em> in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. +</p> +<p>This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. +</p> +<p>We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. +</p> +</li><li> APPLICABILITY AND DEFINITIONS + +<p>This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. +</p> +<p>A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. +</p> +<p>A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document’s overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. +</p> +<p>The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. +</p> +<p>The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. +</p> +<p>A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. +</p> +<p>Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. +</p> +<p>The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, +preceding the beginning of the body of the text. +</p> +<p>The “publisher” means any person or entity that distributes copies +of the Document to the public. +</p> +<p>A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. +</p> +<p>The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. +</p> +</li><li> VERBATIM COPYING + +<p>You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. +</p> +<p>You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +</p> +</li><li> COPYING IN QUANTITY + +<p>If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document’s license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. +</p> +<p>If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. +</p> +<p>If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. +</p> +<p>It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +</p> +</li><li> MODIFICATIONS + +<p>You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: +</p> +<ol class="enumerate" type="A" start="1"> +<li> Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +</li><li> List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +</li><li> State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +</li><li> Preserve all the copyright notices of the Document. + +</li><li> Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +</li><li> Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +</li><li> Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. + +</li><li> Include an unaltered copy of this License. + +</li><li> Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +</li><li> Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +</li><li> For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +</li><li> Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +</li><li> Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +</li><li> Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +</li><li> Preserve any Warranty Disclaimers. +</li></ol> + +<p>If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version’s license notice. +These titles must be distinct from any other section titles. +</p> +<p>You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. +</p> +<p>You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. +</p> +<p>The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +</p> +</li><li> COMBINING DOCUMENTS + +<p>You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. +</p> +<p>The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. +</p> +<p>In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +</p> +</li><li> COLLECTIONS OF DOCUMENTS + +<p>You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. +</p> +<p>You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +</p> +</li><li> AGGREGATION WITH INDEPENDENT WORKS + +<p>A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation’s users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. +</p> +<p>If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document’s Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. +</p> +</li><li> TRANSLATION + +<p>Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. +</p> +<p>If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. +</p> +</li><li> TERMINATION + +<p>You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. +</p> +<p>However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. +</p> +<p>Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +</p> +<p>Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. +</p> +</li><li> FUTURE REVISIONS OF THIS LICENSE + +<p>The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>. +</p> +<p>Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy’s public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. +</p> +</li><li> RELICENSING + +<p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +“Massive Multiauthor Collaboration” (or “MMC”) contained in the +site means any set of copyrightable works thus published on the MMC +site. +</p> +<p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. +</p> +<p>“Incorporate” means to publish or republish a Document, in whole or +in part, as part of another Document. +</p> +<p>An MMC is “eligible for relicensing” if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. +</p> +<p>The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. +</p> +</li></ol> + +<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">ADDENDUM: How to use this License for your documents</h3> + +<p>To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: +</p> +<div class="example smallexample"> +<div class="group"><pre class="example-preformatted"> Copyright (C) <var class="var">year</var> <var class="var">your name</var>. + 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''. +</pre></div></div> + +<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +</p> +<div class="example smallexample"> +<div class="group"><pre class="example-preformatted"> with the Invariant Sections being <var class="var">list their titles</var>, with + the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts + being <var class="var">list</var>. +</pre></div></div> + +<p>If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. +</p> +<p>If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. +</p> + + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Request-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Escape-Sequence-Index" accesskey="n" rel="next">Escape Sequence Index</a>, Previous: <a href="#Copying-This-Manual" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Request-Index-1">Appendix B Request Index</h2> + +<p>Request names appear without a leading control character; the defaults +are <code class="code">.</code> for the regular control character and <code class="code">'</code> for the +no-break control character. +</p> +<div class="printindex rq-printindex"> +<table class="rq-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a> + +</td></tr></table> +<table class="rq-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-A">A</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ab"><code>ab</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ad"><code>ad</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-af"><code>af</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-aln"><code>aln</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-als"><code>als</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-am"><code>am</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-am1"><code>am1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ami"><code>ami</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ami1"><code>ami1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-as"><code>as</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-as1"><code>as1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-asciify"><code>asciify</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-B">B</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backtrace"><code>backtrace</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bd"><code>bd</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blm"><code>blm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-box"><code>box</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa"><code>boxa</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp"><code>bp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-br"><code>br</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break-2"><code>break</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-brp"><code>brp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-c2"><code>c2</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cc"><code>cc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ce"><code>ce</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cf"><code>cf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cflags"><code>cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ch"><code>ch</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-char"><code>char</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-chop"><code>chop</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-class"><code>class</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-close"><code>close</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color"><code>color</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-composite"><code>composite</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continue"><code>continue</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cp"><code>cp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs"><code>cs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cu"><code>cu</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-da"><code>da</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-de"><code>de</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-de1"><code>de1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defcolor"><code>defcolor</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dei"><code>dei</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dei1"><code>dei1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device"><code>device</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-devicem"><code>devicem</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-di"><code>di</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-do"><code>do</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds"><code>ds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-1"><code>ds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds1"><code>ds1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dt"><code>dt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-E">E</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ec"><code>ec</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ecr"><code>ecr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ecs"><code>ecs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-el"><code>el</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-em"><code>em</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-eo"><code>eo</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ev"><code>ev</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-evc"><code>evc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ex"><code>ex</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fam"><code>fam</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fc"><code>fc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fchar"><code>fchar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fcolor"><code>fcolor</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fi"><code>fi</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fl"><code>fl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fp"><code>fp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fschar"><code>fschar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial"><code>fspecial</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ft"><code>ft</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ftr"><code>ftr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fzoom"><code>fzoom</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-G">G</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gcolor"><code>gcolor</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-H">H</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hc"><code>hc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hcode"><code>hcode</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hla"><code>hla</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hlm"><code>hlm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hpf"><code>hpf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hpfa"><code>hpfa</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hpfcode"><code>hpfcode</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hw"><code>hw</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hy"><code>hy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hym"><code>hym</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hys"><code>hys</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-I">I</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ie"><code>ie</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if"><code>if</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ig"><code>ig</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-in-1"><code>in</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-it"><code>it</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-itc"><code>itc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-K">K</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kern"><code>kern</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lc"><code>lc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length"><code>length</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lf"><code>lf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lg"><code>lg</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-linetabs"><code>linetabs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ll-1"><code>ll</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ls"><code>ls</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lsm"><code>lsm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lt"><code>lt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mc"><code>mc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mk"><code>mk</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mso"><code>mso</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-msoquiet"><code>msoquiet</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-na"><code>na</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ne"><code>ne</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nf"><code>nf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nh"><code>nh</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nm"><code>nm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nn"><code>nn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nop"><code>nop</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr"><code>nr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-1"><code>nr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-2"><code>nr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-3"><code>nr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nroff"><code>nroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ns"><code>ns</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nx"><code>nx</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-O">O</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-open"><code>open</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opena"><code>opena</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-os"><code>os</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output"><code>output</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pc"><code>pc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pev"><code>pev</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pi"><code>pi</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pl"><code>pl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pm"><code>pm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pn"><code>pn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pnr"><code>pnr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-po-1"><code>po</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ps"><code>ps</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-psbb"><code>psbb</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pso"><code>pso</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ptr"><code>ptr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pvs"><code>pvs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rchar"><code>rchar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rd"><code>rd</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-return"><code>return</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rfschar"><code>rfschar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rj"><code>rj</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rm"><code>rm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rn"><code>rn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rnn"><code>rnn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rr"><code>rr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rs"><code>rs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rt"><code>rt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-schar"><code>schar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-shc"><code>shc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-shift"><code>shift</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes-1"><code>sizes</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-so"><code>so</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-soquiet"><code>soquiet</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sp"><code>sp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-2"><code>special</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spreadwarn"><code>spreadwarn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ss"><code>ss</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stringdown"><code>stringdown</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stringup"><code>stringup</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sty"><code>sty</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-substring"><code>substring</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sv"><code>sv</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sy"><code>sy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ta"><code>ta</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tag"><code>tag</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-taga"><code>taga</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tc"><code>tc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ti"><code>ti</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf"><code>tkf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tl"><code>tl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tm"><code>tm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tm1"><code>tm1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tmc"><code>tmc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tr"><code>tr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trf"><code>trf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trin"><code>trin</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trnt"><code>trnt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troff"><code>troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-uf"><code>uf</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ul"><code>ul</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unformat"><code>unformat</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vpt"><code>vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vs"><code>vs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Request-Index_rq_letter-W">W</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warn"><code>warn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warnscale"><code>warnscale</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-wh"><code>wh</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while-1"><code>while</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-write"><code>write</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writec"><code>writec</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writem"><code>writem</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="rq-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Escape-Sequence-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Operator-Index" accesskey="n" rel="next">Operator Index</a>, Previous: <a href="#Request-Index" accesskey="p" rel="prev">Request Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Escape-Sequence-Index-1">Appendix C Escape Sequence Index</h2> + +<p>The escape character, <code class="code">\</code> by default, is always followed by at +least one more input character, making an escape <em class="emph">sequence</em>. Any +input token <code class="code">\<var class="var">X</var></code> with <var class="var">X</var> not in the list below emits a +warning and interpolates glyph <var class="var">X</var>. Note the entries for <code class="code">\.</code>, +which may be obscured by the leader dots, and for <code class="code">\<kbd class="key">RET</kbd></code> and +<code class="code">\<kbd class="key">SP</kbd></code>, which are sorted alphabetically, not by code point +order. +</p> +<div class="printindex es-printindex"> +<table class="es-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Escape-Sequence-Index_es_symbol-1">\</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c"><code>\</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c-1"><code>\</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021"><code>\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0022"><code>\"</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0023"><code>\#</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024"><code>\$</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_002a"><code>\$*</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_00240"><code>\$0</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_0040"><code>\$@</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_005e"><code>\$^</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025"><code>\%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026"><code>\&</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027"><code>\<code class="code">'</code></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0028"><code>\(</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029"><code>\)</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a"><code>\*</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c"><code>\,</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d"><code>\-</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002e"><code>\.</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f"><code>\/</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c0"><code>\0</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a"><code>\:</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f"><code>\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA"><code>\A</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca"><code>\a</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cB"><code>\B</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb"><code>\b</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc"><code>\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cC"><code>\C</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cd"><code>\d</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cD"><code>\D</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce"><code>\e</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cE"><code>\E</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf"><code>\f</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cF"><code>\F</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cg"><code>\g</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH"><code>\H</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ch"><code>\h</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ck"><code>\k</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl"><code>\l</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL"><code>\L</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cm"><code>\m</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cM"><code>\M</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn"><code>\n</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn-1"><code>\n</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN"><code>\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cnewline"><code>\<i class="slanted">newline</i></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005co"><code>\o</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cO"><code>\O</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp"><code>\p</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR"><code>\R</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR-1"><code>\R</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cr"><code>\r</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cRET"><code>\<kbd class="key">RET</kbd></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS"><code>\S</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs"><code>\s</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP"><code>\<kbd class="key">SP</kbd></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cspace"><code>\<i class="slanted">space</i></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct"><code>\t</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cu"><code>\u</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv"><code>\v</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cV"><code>\V</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cw"><code>\w</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cx"><code>\x</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX"><code>\X</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cY"><code>\Y</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cz"><code>\z</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cZ"><code>\Z</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005b"><code>\[</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005c"><code>\\</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e"><code>\^</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f"><code>\_</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060"><code>\<code class="code">`</code></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b"><code>\{</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b-1"><code>\{</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c"><code>\|</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d"><code>\}</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e"><code>\~</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Operator-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Register-Index" accesskey="n" rel="next">Register Index</a>, Previous: <a href="#Escape-Sequence-Index" accesskey="p" rel="prev">Escape Sequence Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Operator-Index-1">Appendix D Operator Index</h2> + +<div class="printindex op-printindex"> +<table class="op-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b><</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>></b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a> +</td></tr></table> +<table class="op-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-1">!</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0021"><code>!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-2">%</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025"><code>%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-3">&</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026"><code>&</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-4">(</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0028"><code>(</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-5">)</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029"><code>)</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-6">*</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a"><code>*</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-7">+</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b"><code>+</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b-1"><code>+</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b-_0028unary_0029"><code>+ <span class="r">(unary)</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-8">-</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d"><code>-</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-1"><code>-</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-_0028unary_0029"><code>- <span class="r">(unary)</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-9">/</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f"><code>/</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-10">:</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a"><code>:</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-11">;</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003b"><code>;</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-12"><</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c"><code><</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_003d"><code><=</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_003f"><code><?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-13">=</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d"><code>=</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d_003d"><code>==</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-14">></th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e"><code>></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_003d"><code>>=</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_003f"><code>>?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Operator-Index_op_symbol-15">|</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007c"><code>|</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="op-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b><</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>></b></a> + +<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a> +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Register-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Macro-Index" accesskey="n" rel="next">Macro Index</a>, Previous: <a href="#Operator-Index" accesskey="p" rel="prev">Operator Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Register-Index-1">Appendix E Register Index</h2> + +<p>The macro package or program a specific register belongs to is appended +in brackets. +</p> +<p>A register name <code class="code">x</code> consisting of exactly one character can be +accessed as ‘<samp class="samp">\nx</samp>’. A register name <code class="code">xx</code> consisting of exactly +two characters can be accessed as ‘<samp class="samp">\n(xx</samp>’. Register names +<code class="code">xxx</code> of any length can be accessed as ‘<samp class="samp">\n[xxx]</samp>’. +</p> +<div class="printindex vr-printindex"> +<table class="vr-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a> + +<br> +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a> + +</td></tr></table> +<table class="vr-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_symbol-1">$</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0024_0024"><code>$$</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_symbol-2">%</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025-1"><code>%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025-2"><code>%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_symbol-3">.</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e_0024"><code>.$</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eA"><code>.A</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ea"><code>.a</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eb"><code>.b</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ebr-1"><code>.br</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ec"><code>.c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eC"><code>.C</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecdp"><code>.cdp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ece-1"><code>.ce</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002echt"><code>.cht</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecolor-1"><code>.color</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecp-1"><code>.cp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecsk"><code>.csk</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ed"><code>.d</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eev-1"><code>.ev</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eF"><code>.F</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ef"><code>.f</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efam-1"><code>.fam</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efn"><code>.fn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efp-1"><code>.fp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eg"><code>.g</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eH"><code>.H</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eh"><code>.h</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eheight"><code>.height</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehla-1"><code>.hla</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehlc"><code>.hlc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehlm-1"><code>.hlm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehy-1"><code>.hy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehym-1"><code>.hym</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehys-1"><code>.hys</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ei"><code>.i</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ein-3"><code>.in</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eint"><code>.int</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ej"><code>.j</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ek"><code>.k</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ekern-1"><code>.kern</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eL"><code>.L</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002el"><code>.l</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elg-1"><code>.lg</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elinetabs-1"><code>.linetabs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ell-3"><code>.ll</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elt-3"><code>.lt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002em"><code>.m</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eM"><code>.M</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002en"><code>.n</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ene-1"><code>.ne</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002enm-1"><code>.nm</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002enn-1"><code>.nn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ens-1"><code>.ns</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eo"><code>.o</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eO"><code>.O</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eP"><code>.P</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ep"><code>.p</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epe"><code>.pe</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epn-3"><code>.pn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eps-3"><code>.ps</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epsr"><code>.psr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epvs-3"><code>.pvs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eR-2"><code>.R</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002erj-1"><code>.rj</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002es"><code>.s</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eslant"><code>.slant</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esr"><code>.sr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ess-1"><code>.ss</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esss"><code>.sss</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esty-1"><code>.sty</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT-2"><code>.T</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002et"><code>.t</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etabs"><code>.tabs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etrunc"><code>.trunc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eU"><code>.U</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eu"><code>.u</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eV"><code>.V</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ev"><code>.v</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002evpt-1"><code>.vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ew"><code>.w</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ewarn-1"><code>.warn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ex"><code>.x</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ey"><code>.y</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eY"><code>.Y</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ez"><code>.z</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ezoom"><code>.zoom</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-c_002e"><code>c.</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ct"><code>ct</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DD-_005bms_005d"><code>DD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DI-_005bms_005d"><code>DI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dl"><code>dl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dn"><code>dn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dw"><code>dw</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dy"><code>dy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FF-_005bms_005d"><code>FF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FI-_005bms_005d"><code>FI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FM-_005bms_005d"><code>FM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FPD-_005bms_005d"><code>FPD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FPS-_005bms_005d"><code>FPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FVS-_005bms_005d"><code>FVS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-G">G</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROWPS-_005bms_005d"><code>GROWPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GS-_005bms_005d"><code>GS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&T ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-H">H</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-HM-_005bms_005d"><code>HM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-HORPHANS-_005bms_005d"><code>HORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hours"><code>hours</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hp"><code>hp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-HY-_005bms_005d"><code>HY <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LL-_005bms_005d"><code>LL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-llx"><code>llx</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lly"><code>lly</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ln"><code>ln</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lsn"><code>lsn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lss"><code>lss</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LT-_005bms_005d"><code>LT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MINGW-_005bms_005d"><code>MINGW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minutes"><code>minutes</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mo"><code>mo</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nl"><code>nl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-O">O</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opmaxx"><code>opmaxx</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opmaxy"><code>opmaxy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opminx"><code>opminx</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opminy"><code>opminy</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PD-_005bms_005d"><code>PD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PI-_005bms_005d"><code>PI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PO-_005bms_005d"><code>PO <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PORPHANS-_005bms_005d"><code>PORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PS-_005bms_005d-1"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PSINCR-_005bms_005d"><code>PSINCR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-Q">Q</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-QI-_005bms_005d"><code>QI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rsb"><code>rsb</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rst"><code>rst</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sb"><code>sb</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-seconds"><code>seconds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-skw"><code>skw</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-slimit"><code>slimit</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ssc"><code>ssc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-st"><code>st</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-systat"><code>systat</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TC_002dMARGIN-_005bms_005d"><code>TC-MARGIN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-urx"><code>urx</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ury"><code>ury</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-VS-_005bms_005d"><code>VS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Register-Index_vr_letter-Y">Y</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-year"><code>year</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-yr"><code>yr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="vr-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a> + +<br> +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Macro-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#String-Index" accesskey="n" rel="next">String Index</a>, Previous: <a href="#Register-Index" accesskey="p" rel="prev">Register Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Macro-Index-1">Appendix F Macro Index</h2> + +<p>The macro package a specific macro belongs to is appended in brackets. +They appear without the leading control character (normally ‘<samp class="samp">.</samp>’). +</p> +<div class="printindex ma-printindex"> +<table class="ma-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a> + +<br> +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a> + +</td></tr></table> +<table class="ma-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_symbol-1">1</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-1C-_005bms_005d"><code>1C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_symbol-2">2</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-2C-_005bms_005d"><code>2C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_symbol-3">[</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005b-_005bms_005d"><code>[ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_symbol-4">]</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d-_005bms_005d"><code>] <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-A">A</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AB-_005bms_005d"><code>AB <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AE-_005bms_005d"><code>AE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AI-_005bms_005d"><code>AI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AM-_005bms_005d"><code>AM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AU-_005bms_005d"><code>AU <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-B">B</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-B-_005bms_005d"><code>B <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-B1-_005bms_005d"><code>B1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-B2-_005bms_005d"><code>B2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-BD-_005bms_005d"><code>BD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-BI-_005bms_005d"><code>BI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-BT-_005bman_005d"><code>BT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-BX-_005bms_005d"><code>BX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CD-_005bms_005d"><code>CD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CT-_005bman_005d"><code>CT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CW-_005bman_005d"><code>CW <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CW-_005bms_005d"><code>CW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DA-_005bms_005d"><code>DA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-De-_005bman_005d"><code>De <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DE-_005bms_005d"><code>DE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Ds-_005bman_005d"><code>Ds <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-1"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-2"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-3"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-4"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-E">E</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EE-_005bman_005d"><code>EE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EF-_005bms_005d"><code>EF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EH-_005bms_005d"><code>EH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EN-_005bms_005d"><code>EN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EQ-_005bms_005d"><code>EQ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EX-_005bman_005d"><code>EX <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FE-_005bms_005d"><code>FE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FS-_005bms_005d"><code>FS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-G">G</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-G-_005bman_005d"><code>G <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GL-_005bman_005d"><code>GL <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-H">H</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-HB-_005bman_005d"><code>HB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-I">I</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-I-_005bms_005d"><code>I <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ID-_005bms_005d"><code>ID <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-IP-_005bms_005d"><code>IP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-K">K</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-KE-_005bms_005d"><code>KE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-KF-_005bms_005d"><code>KF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-KS-_005bms_005d"><code>KS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LD-_005bms_005d"><code>LD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LG-_005bms_005d"><code>LG <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LP-_005bms_005d"><code>LP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MC-_005bms_005d"><code>MC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MS-_005bman_005d"><code>MS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ND-_005bms_005d"><code>ND <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-NE-_005bman_005d"><code>NE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-NH-_005bms_005d"><code>NH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-NL-_005bms_005d"><code>NL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-NT-_005bman_005d"><code>NT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-O">O</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-OF-_005bms_005d"><code>OF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-OH-_005bms_005d"><code>OH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-P1-_005bms_005d"><code>P1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PE-_005bms_005d"><code>PE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PF-_005bms_005d"><code>PF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PN-_005bman_005d"><code>PN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Pn-_005bman_005d"><code>Pn <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PP-_005bms_005d"><code>PP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PS-_005bms_005d"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PT-_005bman_005d"><code>PT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PX-_005bms_005d"><code>PX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-Q">Q</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-QE-_005bms_005d"><code>QE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-QP-_005bms_005d"><code>QP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-QS-_005bms_005d"><code>QS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-R-_005bman_005d"><code>R <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-R-_005bms_005d"><code>R <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RD-_005bms_005d"><code>RD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RE-_005bms_005d"><code>RE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RN-_005bman_005d"><code>RN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RP-_005bms_005d"><code>RP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RS-_005bms_005d"><code>RS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SH-_005bms_005d"><code>SH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SM-_005bms_005d"><code>SM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TA-_005bms_005d"><code>TA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tab-Stops-in-ms">Tab Stops in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TB-_005bman_005d"><code>TB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TC-_005bms_005d"><code>TC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TE-_005bms_005d"><code>TE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TL-_005bms_005d"><code>TL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TS-_005bms_005d"><code>TS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-UL-_005bms_005d"><code>UL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-VE-_005bman_005d"><code>VE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-VS-_005bman_005d"><code>VS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Macro-Index_ma_letter-X">X</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XA-_005bms_005d"><code>XA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XE-_005bms_005d"><code>XE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XH-_005bms_005d"><code>XH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XH_002dREPLACEMENT-_005bms_005d"><code>XH-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XH_002dUPDATE_002dTOC-_005bms_005d"><code>XH-UPDATE-TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XN-_005bms_005d"><code>XN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XN_002dINIT-_005bms_005d"><code>XN-INIT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XN_002dREPLACEMENT-_005bms_005d"><code>XN-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XP-_005bms_005d"><code>XP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-XS-_005bms_005d"><code>XS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="ma-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a> + +<br> +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="String-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#File-Keyword-Index" accesskey="n" rel="next">File Keyword Index</a>, Previous: <a href="#Macro-Index" accesskey="p" rel="prev">Macro Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="String-Index-1">Appendix G String Index</h2> + +<p>The macro package or program a that defines or uses each string is +appended in brackets. (Only one string, <code class="code">.T</code>, is defined by the +<code class="code">troff</code> formatter itself.) See <a class="xref" href="#Strings">Strings</a>. +</p> + +<div class="printindex st-printindex"> +<table class="st-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b><</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>></b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a> + +<br> +<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a> + +</td></tr></table> +<table class="st-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-1">!</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0021-_005bms_005d"><code>! <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-2">'</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027-_005bms_005d"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027-_005bms_005d-1"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-3">*</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a-_005bms_005d"><code>* <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-4">,</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002c-_005bms_005d"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002c-_005bms_005d-1"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-5">-</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-_005bms_005d"><code>- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-6">.</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e-_005bms_005d"><code>. <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT"><code>.T</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT-1"><code>.T</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-7">/</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f-_005bms_005d"><code>/ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-8">3</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-3-_005bms_005d"><code>3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-9">8</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-8-_005bms_005d"><code>8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-10">:</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a-_005bms_005d"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a-_005bms_005d-1"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-11"><</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c-_005bms_005d"><code>< <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-12">></th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e-_005bms_005d"><code>> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-13">?</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003f-_005bms_005d"><code>? <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-14">^</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005e-_005bms_005d"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005e-_005bms_005d-1"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-15">_</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005f-_005bms_005d"><code>_ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-16">`</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0060-_005bms_005d"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0060-_005bms_005d-1"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-17">{</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007b-_005bms_005d"><code>{ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-18">}</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007d-_005bms_005d"><code>} <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_symbol-19">~</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007e-_005bms_005d"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007e-_005bms_005d-1"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-A">A</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ABSTRACT-_005bms_005d"><code>ABSTRACT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ae-_005bms_005d"><code>ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Ae-_005bms_005d"><code>Ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-C-_005bms_005d"><code>C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CF-_005bms_005d"><code>CF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CH-_005bms_005d"><code>CH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-d_002d-_005bms_005d"><code>d- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-D_002d-_005bms_005d"><code>D- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FAM-_005bms_005d"><code>FAM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-FR-_005bms_005d"><code>FR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LF-_005bms_005d"><code>LF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-LH-_005bms_005d"><code>LH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH1-_005bms_005d"><code>MONTH1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH10-_005bms_005d"><code>MONTH10 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH11-_005bms_005d"><code>MONTH11 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH12-_005bms_005d"><code>MONTH12 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH2-_005bms_005d"><code>MONTH2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH3-_005bms_005d"><code>MONTH3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH4-_005bms_005d"><code>MONTH4 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH5-_005bms_005d"><code>MONTH5 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH6-_005bms_005d"><code>MONTH6 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH7-_005bms_005d"><code>MONTH7 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH8-_005bms_005d"><code>MONTH8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH9-_005bms_005d"><code>MONTH9 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-O">O</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-o-_005bms_005d"><code>o <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-oe-_005bms_005d"><code>oe <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-OE-_005bms_005d"><code>OE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-Q">Q</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Q-_005bms_005d"><code>Q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-q-_005bms_005d"><code>q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-REFERENCES-_005bms_005d"><code>REFERENCES <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RF-_005bms_005d"><code>RF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-RH-_005bms_005d"><code>RH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SN-_005bms_005d"><code>SN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dDOT-_005bms_005d"><code>SN-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dNO_002dDOT-_005bms_005d"><code>SN-NO-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dSTYLE-_005bms_005d"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dSTYLE-_005bms_005d-1"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-th-_005bms_005d"><code>th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Th-_005bms_005d"><code>Th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TOC-_005bms_005d"><code>TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-U-_005bms_005d"><code>U <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="String-Index_st_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-v-_005bms_005d"><code>v <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="st-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b><</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>></b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a> + +<br> +<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="File-Keyword-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Program-and-File-Index" accesskey="n" rel="next">Program and File Index</a>, Previous: <a href="#String-Index" accesskey="p" rel="prev">String Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="File-Keyword-Index-1">Appendix H File Keyword Index</h2> + +<div class="printindex ky-printindex"> +<table class="ky-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a> + +<br> +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a> + +</td></tr></table> +<table class="ky-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_symbol-1">#</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0023"><code>#</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0023-1"><code>#</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_symbol-2">-</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002d_002d"><code>---</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-B">B</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-biggestfont"><code>biggestfont</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-charset"><code>charset</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-charset-1"><code>charset</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-family"><code>family</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-family-1"><code>family</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts"><code>fonts</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts-1"><code>fonts</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts-2"><code>fonts</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-H">H</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hor"><code>hor</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-I">I</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-image_005fgenerator"><code>image_generator</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-K">K</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kernpairs"><code>kernpairs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures"><code>ligatures</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-name"><code>name</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-paperlength"><code>paperlength</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-papersize"><code>papersize</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-paperwidth"><code>paperwidth</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pass_005ffilenames"><code>pass_filenames</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-postpro"><code>postpro</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-prepro"><code>prepro</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-print"><code>print</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-res"><code>res</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes"><code>sizes</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sizescale"><code>sizescale</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-slant"><code>slant</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacewidth"><code>spacewidth</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spare1"><code>spare1</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spare2"><code>spare2</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special"><code>special</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-1"><code>special</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-styles"><code>styles</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-styles-1"><code>styles</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-styles-2"><code>styles</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tcommand"><code>tcommand</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unicode"><code>unicode</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unitwidth"><code>unitwidth</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unscaled_005fcharwidths"><code>unscaled_charwidths</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-use_005fcharnames_005fin_005fspecial"><code>use_charnames_in_special</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-use_005fcharnames_005fin_005fspecial-1"><code>use_charnames_in_special</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="File-Keyword-Index_ky_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vert"><code>vert</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="ky-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a> + +<br> +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Program-and-File-Index"> +<div class="nav-panel"> +<p> +Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#File-Keyword-Index" accesskey="p" rel="prev">File Keyword Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Program-and-File-Index-1">Appendix I Program and File Index</h2> + +<div class="printindex pg-printindex"> +<table class="pg-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a> + +</td></tr></table> +<table class="pg-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-A">A</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-an_002etmac"><code>an.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#man">man</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changebar"><code>changebar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-composite_002etmac"><code>composite.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cp1047_002etmac"><code>cp1047.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs_002etmac"><code>cs.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-de_002etmac"><code>de.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC"><code>DESC</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-1"><code>DESC</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-2"><code>DESC</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-3"><code>DESC</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-4"><code>DESC</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diffmk"><code>diffmk</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-E">E</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ec_002etmac"><code>ec.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-en_002etmac"><code>en.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-eqn"><code>eqn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fr_002etmac"><code>fr.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-freeeuro_002epfa"><code>freeeuro.pfa</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-G">G</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gchem"><code>gchem</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gdiffmk"><code>gdiffmk</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-geqn"><code>geqn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ggrn"><code>ggrn</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gpic"><code>gpic</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-grap"><code>grap</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-grefer"><code>grefer</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff"><code>groff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gsoelim"><code>gsoelim</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gtbl"><code>gtbl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff"><code>gtroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-I">I</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-it_002etmac"><code>it.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-J">J</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ja_002etmac"><code>ja.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-latin1_002etmac"><code>latin1.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-latin2_002etmac"><code>latin2.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-latin5_002etmac"><code>latin5.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-latin9_002etmac"><code>latin9.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-makeindex"><code>makeindex</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Indexing">Indexing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002elocal"><code>man.local</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002etmac"><code>man.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#man">man</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002eultrix"><code>man.ultrix</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nrchbar"><code>nrchbar</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-papersize_002etmac"><code>papersize.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-perl"><code>perl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pic"><code>pic</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dgrohtml"><code>post-grohtml</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pre_002dgrohtml"><code>pre-grohtml</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-preconv"><code>preconv</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-refer"><code>refer</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-soelim"><code>soelim</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sv_002etmac"><code>sv.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tbl"><code>tbl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trace_002etmac"><code>trace.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc"><code>troffrc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-1"><code>troffrc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-2"><code>troffrc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-3"><code>troffrc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-4"><code>troffrc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend"><code>troffrc-end</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend-1"><code>troffrc-end</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend-2"><code>troffrc-end</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tty_002etmac"><code>tty.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tty_002etmac-1"><code>tty.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vtroff"><code>vtroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Program-and-File-Index_pg_letter-Z">Z</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-zh_002etmac"><code>zh.tmac</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="pg-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a> + +</td></tr></table> +</div> + + + + +<hr> +</div> +<div class="appendix-level-extent" id="Concept-Index"> +<div class="nav-panel"> +<p> +Previous: <a href="#Program-and-File-Index" accesskey="p" rel="prev">Program and File Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h2 class="appendix" id="Concept-Index-1">Appendix J Concept Index</h2> + +<div class="printindex cp-printindex"> +<table class="cp-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>"</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b><</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>></b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a> + +<br> +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a> + +</td></tr></table> +<table class="cp-entries-printindex" border="0"> +<tr><td></td><th class="entries-header-printindex">Index Entry</th><td> </td><th class="sections-header-printindex"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-1">"</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-as-delimiter"><code class="code">"</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-at-end-of-sentence"><code class="code">"</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-at-end-of-sentence-1"><code class="code">"</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-embedding-in-a-macro-argument"><code class="code">"</code>, embedding in a macro argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-2">%</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025_002c-as-delimiter"><code class="code">%</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-3">&</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026_002c-as-delimiter"><code class="code">&</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-4">'</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-as-a-comment"><code class="code">'</code>, as a comment</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-as-delimiter"><code class="code">'</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-at-end-of-sentence"><code class="code">'</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-at-end-of-sentence-1"><code class="code">'</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-5">(</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0028_002c-as-delimiter"><code class="code">(</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-6">)</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-as-delimiter"><code class="code">)</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-at-end-of-sentence"><code class="code">)</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-at-end-of-sentence-1"><code class="code">)</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-7">*</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-as-delimiter"><code class="code">*</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-at-end-of-sentence"><code class="code">*</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-at-end-of-sentence-1"><code class="code">*</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-8">+</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b_002c-and-page-motion"><code class="code">+</code>, and page motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b_002c-as-delimiter"><code class="code">+</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-9">-</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002c-and-page-motion"><code class="code">-</code>, and page motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002c-as-delimiter"><code class="code">-</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-10">.</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e_002c-as-delimiter"><code class="code">.</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eh-register_002c-difference-from-nl"><code class="code">.h</code> register, difference from <code class="code">nl</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eps-register_002c-in-comparison-with-_002epsr"><code class="code">.ps</code> register, in comparison with <code class="code">.psr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002es-register_002c-in-comparison-with-_002esr"><code class="code">.s</code> register, in comparison with <code class="code">.sr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eS-register_002c-Plan-9-alias-for-_002etabs"><code class="code">.S</code> register, Plan 9 alias for <code class="code">.tabs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002et-register_002c-and-diversions"><code class="code">.t</code> register, and diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"><code class="code">.tabs</code> register, Plan 9 alias (<code class="code">.S</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eV-register_002c-and-vs"><code class="code">.V</code> register, and <code class="code">vs</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-11">/</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f_002c-as-delimiter"><code class="code">/</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-12">8</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-8_002dbit-input">8-bit input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-13">:</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a_002c-as-delimiter"><code class="code">:</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-14"><</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_002c-as-delimiter"><code class="code"><</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-15">=</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d_002c-as-delimiter"><code class="code">=</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-16">></th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_002c-as-delimiter"><code class="code">></code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-17">[</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005b_002c-macro-names-starting-with_002c-and-refer"><code class="code">[</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-18">\</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-copy-mode"><code class="code">\!</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-output-request"><code class="code">\!</code>, and <code class="code">output</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-trnt"><code class="code">\!</code>, and <code class="code">trnt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-as-delimiter"><code class="code">\!</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-as-delimiter-1"><code class="code">\!</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-in-top_002dlevel-diversion"><code class="code">\!</code>, in top-level diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_002c-when-reading-text-for-a-macro"><code class="code">\$</code>, when reading text for a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-and-translations"><code class="code">\%</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-as-delimiter"><code class="code">\%</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-as-delimiter-1"><code class="code">\%</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-following-_005cX-or-_005cY"><code class="code">\%</code>, following <code class="code">\X</code> or <code class="code">\Y</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-in-_005cX"><code class="code">\%</code>, in <code class="code">\X</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\%</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-and-glyph-definitions"><code class="code">\&</code>, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-and-translations"><code class="code">\&</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-as-delimiter"><code class="code">\&</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-at-end-of-sentence"><code class="code">\&</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-in-_005cX"><code class="code">\&</code>, in <code class="code">\X</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\&</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-and-translations"><code class="code">\'</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-as-delimiter"><code class="code">\'</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-as-delimiter-1"><code class="code">\'</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\'</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0028_002c-and-translations"><code class="code">\(</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029_002c-as-delimiter"><code class="code">\)</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029_002c-in-_005cX"><code class="code">\)</code>, in <code class="code">\X</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-and-warnings"><code class="code">\*</code>, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\*</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-when-reading-text-for-a-macro"><code class="code">\*</code>, when reading text for a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c-disabling-_0028eo_0029"><code class="code">\</code>, disabling (<code class="code">eo</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c-embedding-in-a-macro-argument"><code class="code">\</code>, embedding in a macro argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c_002c-as-delimiter"><code class="code">\,</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d-glyph_002c-and-cflags"><code class="code">\-</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-and-translations"><code class="code">\-</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-as-delimiter"><code class="code">\-</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-as-delimiter-1"><code class="code">\-</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\-</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f_002c-as-delimiter"><code class="code">\/</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f_002c-as-delimiter-1"><code class="code">\/</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c0_002c-as-delimiter"><code class="code">\0</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-as-delimiter"><code class="code">\:</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-as-delimiter-1"><code class="code">\:</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-in-_005cX"><code class="code">\:</code>, in <code class="code">\X</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-and-copy-mode"><code class="code">\?</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-and-copy-mode-1"><code class="code">\?</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-as-delimiter"><code class="code">\?</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-in-top_002dlevel-diversion"><code class="code">\?</code>, in top-level diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\?</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-and-copy-mode"><code class="code">\a</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-and-translations"><code class="code">\a</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-as-delimiter"><code class="code">\a</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA_002c-delimiters-allowed-by"><code class="code">\A</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\A</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb_002c-delimiters-allowed-by"><code class="code">\b</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb_002c-limitations-of"><code class="code">\b</code>, limitations of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cC_002c-and-translations"><code class="code">\C</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-as-delimiter"><code class="code">\c</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-as-delimiter-1"><code class="code">\c</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\c</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-when-filling-disabled"><code class="code">\c</code>, when filling disabled</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-when-filling-enabled"><code class="code">\c</code>, when filling enabled</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cd_002c-as-delimiter"><code class="code">\d</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cD_002c-delimiters-allowed-by"><code class="code">\D</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-and-glyph-definitions"><code class="code">\e</code>, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-and-translations"><code class="code">\e</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-as-delimiter"><code class="code">\e</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cE_002c-as-delimiter"><code class="code">\E</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-as-delimiter-1"><code class="code">\e</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\e</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cF_002c-and-changing-fonts"><code class="code">\F</code>, and changing fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf_002c-and-font-translations"><code class="code">\f</code>, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\f</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ch_002c-delimiters-allowed-by"><code class="code">\h</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-delimiters-allowed-by"><code class="code">\H</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\H</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-using-_002b-and-_002d-with"><code class="code">\H</code>, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-with-fractional-type-sizes"><code class="code">\H</code>, with fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl_002c-and-glyph-definitions"><code class="code">\l</code>, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL_002c-and-glyph-definitions"><code class="code">\L</code>, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl_002c-delimiters-allowed-by"><code class="code">\l</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL_002c-delimiters-allowed-by"><code class="code">\L</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN_002c-and-translations"><code class="code">\N</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-and-warnings"><code class="code">\n</code>, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN_002c-delimiters-allowed-by"><code class="code">\N</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\n</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-when-reading-text-for-a-macro"><code class="code">\n</code>, when reading text for a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005co_002c-delimiters-allowed-by"><code class="code">\o</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp_002c-as-delimiter"><code class="code">\p</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp_002c-as-delimiter-1"><code class="code">\p</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-after-_005cc"><code class="code">\R</code>, after <code class="code">\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-and-warnings"><code class="code">\R</code>, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cr_002c-as-delimiter"><code class="code">\r</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-delimiters-allowed-by"><code class="code">\R</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-difference-from-nr"><code class="code">\R</code>, difference from <code class="code">nr</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-using-_002b-and-_002d-with"><code class="code">\R</code>, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cRET_002c-when-reading-text-for-a-macro">\<kbd class="key">RET</kbd>, when reading text for a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-delimiters-allowed-by"><code class="code">\s</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS_002c-delimiters-allowed-by"><code class="code">\S</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\S</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-using-_002b-and-_002d-with"><code class="code">\s</code>, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-with-fractional-type-sizes"><code class="code">\s</code>, with fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-as-delimiter"><code class="code">\<kbd class="key">SP</kbd></code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-difference-from-_005c_007e"><code class="code">\<kbd class="key">SP</kbd></code>, difference from <code class="code">\~</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\<kbd class="key">SP</kbd></code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-copy-mode"><code class="code">\t</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-translations"><code class="code">\t</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-warnings"><code class="code">\t</code>, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-as-delimiter"><code class="code">\t</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cu_002c-as-delimiter"><code class="code">\u</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cV_002c-and-copy-mode"><code class="code">\V</code>, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv_002c-delimiters-allowed-by"><code class="code">\v</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv_002c-internal-representation"><code class="code">\v</code>, internal representation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cw_002c-delimiters-allowed-by"><code class="code">\w</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-and-special-characters"><code class="code">\X</code>, and special characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-delimiters-allowed-by"><code class="code">\X</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cx_002c-delimiters-allowed-by"><code class="code">\x</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-followed-by-_005c_0025"><code class="code">\X</code>, followed by <code class="code">\%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cY_002c-followed-by-_005c_0025"><code class="code">\Y</code>, followed by <code class="code">\%</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cZ_002c-delimiters-allowed-by"><code class="code">\Z</code>, delimiters allowed by</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005b_002c-and-translations"><code class="code">\[</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005c_002c-when-reading-text-for-a-macro"><code class="code">\\</code>, when reading text for a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e_002c-as-delimiter"><code class="code">\^</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\^</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-and-translations"><code class="code">\_</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-as-delimiter"><code class="code">\_</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-as-delimiter-1"><code class="code">\_</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\_</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-and-translations"><code class="code">\`</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-as-delimiter"><code class="code">\`</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-as-delimiter-1"><code class="code">\`</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\`</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-as-delimiter"><code class="code">\{</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-as-delimiter-1"><code class="code">\{</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\{</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c_002c-as-delimiter"><code class="code">\|</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\|</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-and-warnings"><code class="code">\}</code>, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-as-delimiter"><code class="code">\}</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-as-delimiter-1"><code class="code">\}</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\}</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-and-translations"><code class="code">\~</code>, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-as-delimiter"><code class="code">\~</code>, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-difference-from-_005cSP"><code class="code">\~</code>, difference from <code class="code">\<kbd class="key">SP</kbd></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\~</code>, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-19">]</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-as-part-of-an-identifier"><code class="code">]</code>, as part of an identifier</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-at-end-of-sentence"><code class="code">]</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-at-end-of-sentence-1"><code class="code">]</code>, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-macro-names-starting-with_002c-and-refer"><code class="code">]</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_symbol-20">|</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-_007c_002c-and-page-motion"><code class="code">|</code>, and page motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ab-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ab</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-aborting-_0028ab_0029">aborting (<code class="code">ab</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-absolute-_0028sic_0029-position-operator-_0028_007c_0029">absolute <i class="slanted">(sic)</i> position operator (<code class="code">|</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-abstract-font-style">abstract font style</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-abstract-font-style_002c-setting-up-_0028sty_0029">abstract font style, setting up (<code class="code">sty</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-accent-marks-_005bms_005d">accent marks [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-access-to-postprocessor">access to postprocessor</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-accessing-unnamed-glyphs-with-_005cN">accessing unnamed glyphs with <code class="code">\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-kerning-_0028kern_0029">activating kerning (<code class="code">kern</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-ligatures-_0028lg_0029">activating ligatures (<code class="code">lg</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-track-kerning-_0028tkf_0029">activating track kerning (<code class="code">tkf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ad-request_002c-and-hyphenation-margin"><code class="code">ad</code> request, and hyphenation margin</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ad-request_002c-and-hyphenation-space"><code class="code">ad</code> request, and hyphenation space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-addition">addition</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-additional-inter_002dsentence-space">additional inter-sentence space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-and-filling_002c-manipulating">adjustment and filling, manipulating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-mode-register-_0028_002ej_0029">adjustment mode register (<code class="code">.j</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff">adjustment to both margins, difference from <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Adobe-Glyph-List-_0028AGL_0029">Adobe Glyph List (AGL)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-diversion_002c-creating-_0028als_0029">alias, diversion, creating (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-diversion_002c-removing-_0028rm_0029">alias, diversion, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-macro_002c-creating-_0028als_0029">alias, macro, creating (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-macro_002c-removing-_0028rm_0029">alias, macro, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-register_002c-creating-_0028aln_0029">alias, register, creating (<code class="code">aln</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-register_002c-removing-_0028rr_0029">alias, register, removing (<code class="code">rr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-string_002c-creating-_0028als_0029">alias, string, creating (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-string_002c-removing-_0028rm_0029">alias, string, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-aliasing-fonts-with-third-argument-to-fp-request">aliasing fonts with third argument to <code class="code">fp</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-als-request_002c-and-_005c_00240"><code class="code">als</code> request, and <code class="code">\$0</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-am_002c-am1_002c-ami-requests_002c-and-warnings"><code class="code">am</code>, <code class="code">am1</code>, <code class="code">ami</code> requests, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-diversion-_0028da_002c-boxa_0029">appending to a diversion (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-file-_0028opena_0029">appending to a file (<code class="code">opena</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-macro-_0028am_0029">appending to a macro (<code class="code">am</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-string-_0028as_0029">appending to a string (<code class="code">as</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-approximation-output-register-_0028_002eA_0029">approximation output register (<code class="code">.A</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029">arc, drawing (‘<samp class="samp">\D'a …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-argument">argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-macros">arguments to macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-macros_002c-and-tabs">arguments to macros, and tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-requests">arguments to requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-requests_002c-and-tabs">arguments to requests, and tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-and-compatibility-mode">arguments, and compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-to-escape-sequences_002c-delimiting">arguments, to escape sequences, delimiting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-to-strings">arguments, to strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-arithmetic-operators">arithmetic operators</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-artificial-fonts">artificial fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-as_002c-as1-requests_002c-and-comments"><code class="code">as</code>, <code class="code">as1</code> requests, and comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-as_002c-as1-requests_002c-and-warnings"><code class="code">as</code>, <code class="code">as1</code> requests, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ASCII-output-encoding"><abbr class="acronym">ASCII</abbr> output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-asciify-request_002c-and-writem"><code class="code">asciify</code> request, and <code class="code">writem</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-assertion-_0028arithmetic-operator_0029">assertion (arithmetic operator)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-assign-number-format-to-register-_0028af_0029">assign number format to register (<code class="code">af</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-assignments_002c-indirect">assignments, indirect</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-assignments_002c-nested">assignments, nested</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-AT_0026T-ms_002c-macro-package-differences"><abbr class="acronym">AT&T</abbr> <samp class="file">ms</samp>, macro package differences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&T ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-attributes_002c-character-cell">attributes, character cell</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-auto_002dincrementation-of-a-register">auto-incrementation of a register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-font-mounting">automatic font mounting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-hyphenation">automatic hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-hyphenation-parameters">automatic hyphenation parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-auxiliary-macro-package">auxiliary macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">available glyphs, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-B">B</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-background">background</a>:</td><td> </td><td class="printindex-index-section"><a href="#Background">Background</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-background-color-name-register-_0028_002eM_0029">background color name register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029">backslash glyph, formatting (<code class="code">\[rs]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash_002c-embedding-in-a-macro-argument">backslash, embedding in a macro argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">backslash, printing (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backspace-character_002c-and-translations">backspace character, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-backtrace-of-input-stack-_0028backtrace_0029">backtrace of input stack (<code class="code">backtrace</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline-rule-special-character_0028_005c_005bru_005d_0029">baseline rule special character(<code class="code">\[ru]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline_002c-text">baseline, text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline_002c-text-1">baseline, text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-scaling-unit-_0028u_0029">basic scaling unit (<code class="code">u</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-units">basic units</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-units_002c-conversion-to">basic units, conversion to</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-basics-of-macro-package-usage">basics of macro package usage</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-and-font-styles"><code class="code">bd</code> request, and font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-and-font-translations"><code class="code">bd</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bd</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning-diversion-_0028di_002c-box_0029">beginning diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning-of-conditional-block-_0028_005c_007b_0029">beginning of conditional block (<code class="code">\{</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line">blank line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029">blank line macro (<code class="code">blm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029-1">blank line macro (<code class="code">blm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029-2">blank line macro (<code class="code">blm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-trap-_0028blm_0029">blank line trap (<code class="code">blm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-traps">blank line traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-lines_002c-disabling">blank lines, disabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029">block, conditional, beginning (<code class="code">\{</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-block_002c-conditional_002c-end-_0028_005c_007d_0029">block, conditional, end (<code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-blocks_002c-conditional">blocks, conditional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-body_002c-of-a-while-request">body, of a while request</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boldface_002c-imitating-_0028bd_0029">boldface, imitating (<code class="code">bd</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bottom-margin">bottom margin</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boundary_002drelative-motion-operator-_0028_007c_0029">boundary-relative motion operator (<code class="code">|</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bounding-box">bounding box</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-box-_0028diversion-operation_0029">box (diversion operation)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-box-request_002c-and-warnings"><code class="code">box</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-box-rule-glyph-_0028_005c_005bbr_005d_0029">box rule glyph (<code class="code">\[br]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-box_002c-boxa-requests_002c-and-warnings"><code class="code">box</code>, <code class="code">boxa</code> requests, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa-request_002c-and-dn-_0028dl_0029"><code class="code">boxa</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa-request_002c-and-warnings"><code class="code">boxa</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-boxes-_005bms_005d">boxes [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-and-top_002dlevel-diversion"><code class="code">bp</code> request, and top-level diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-and-traps-_0028_002epe_0029"><code class="code">bp</code> request, and traps (<code class="code">.pe</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-causing-implicit-break"><code class="code">bp</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bp</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-using-_002b-and-_002d-with"><code class="code">bp</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-br-glyph_002c-and-cflags"><code class="code">br</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029">brace escape sequence, closing (<code class="code">\})</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029">brace escape sequence, opening (<code class="code">\})</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029">brace escape sequences (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break">break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break-1">break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break-_0028introduction_0029">break (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break-request_002c-in-a-while-loop"><code class="code">break</code> request, in a <code class="code">while</code> loop</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page">break, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-1">break, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-2">break, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-_0028introduction_0029">break, page (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page_002c-final">break, page, final</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page_002c-prevented-by-vpt">break, page, prevented by <code class="code">vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-file-names-_0028_005c_003a_0029">breaking file names (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-URLs-_0028_005c_003a_0029">breaking URLs (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-without-hyphens-_0028_005c_003a_0029">breaking without hyphens (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-built_002din-register_002c-removing">built-in register, removing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-built_002din-registers">built-in registers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-bulleted-list_002c-example-markup-_005bms_005d">bulleted list, example markup [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-c-scaling-unit"><code class="code">c</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-calling-a-macro">calling a macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-calling-macros">calling macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-capabilities-of-groff">capabilities of <code class="code">groff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#groff-Capabilities"><code class="code">groff</code> Capabilities</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029">case-transforming a string (<code class="code">stringdown</code>, <code class="code">stringup</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-categories_002c-warning">categories, warning</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CCSID-1047-output-encoding-_0028EBCDIC_0029">CCSID 1047 output encoding (EBCDIC)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ce-request_002c-causing-implicit-break"><code class="code">ce</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ce-request_002c-difference-from-_002ead-c"><code class="code">ce</code> request, difference from ‘<samp class="samp">.ad c</samp>’<!-- /@w --></a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cell_002c-character_002c-attributes">cell, character, attributes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-centered-text-_0028filled_0029">centered text (filled)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-centered-text-_0028unfilled_0029">centered text (unfilled)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-centering-lines-_0028ce_0029">centering lines (<code class="code">ce</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-centering-lines-_0028introduction_0029">centering lines (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-centimeter-scaling-unit-_0028c_0029">centimeter scaling unit (<code class="code">c</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cf-request_002c-and-copy-mode"><code class="code">cf</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cf-request_002c-causing-implicit-break"><code class="code">cf</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-control-characters">changing control characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-font-family-_0028fam_002c-_005cF_0029">changing font family (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-fonts-_0028ft_002c-_005cf_0029">changing fonts (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-format_002c-and-read_002donly-registers">changing format, and read-only registers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-font-height-_0028_005cH_0029">changing the font height (<code class="code">\H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-font-slant-_0028_005cS_0029">changing the font slant (<code class="code">\S</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-page-number-character-_0028pc_0029">changing the page number character (<code class="code">pc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-trap-location-_0028ch_0029">changing trap location (<code class="code">ch</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-type-sizes-_0028ps_002c-_005cs_0029">changing type sizes (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-vertical-line-spacing-_0028vs_0029">changing vertical line spacing (<code class="code">vs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-and-soft-hyphen-character"><code class="code">char</code> request, and soft hyphen character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-and-translations"><code class="code">char</code> request, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-used-with-_005cN"><code class="code">char</code> request, used with <code class="code">\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character">character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character-cell-attributes">character cell attributes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character-class-_0028class_0029">character class (<code class="code">class</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character-classes">character classes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character-properties-_0028cflags_0029">character properties (<code class="code">cflags</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character-translations">character translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-backspace_002c-and-translations">character, backspace, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-control-_0028_002e_0029">character, control (<code class="code">.</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-control_002c-changing-_0028cc_0029">character, control, changing (<code class="code">cc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-defining-_0028char_0029">character, defining (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029">character, defining fallback (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-distinguished-from-glyph">character, distinguished from glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029">character, dummy (<code class="code">\&</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor">character, dummy (<code class="code">\&</code>), as control character suppressor</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning">character, dummy (<code class="code">\&</code>), effect on kerning</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">character, dummy (<code class="code">\&</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-escape_002c-changing-_0028ec_0029">character, escape, changing (<code class="code">ec</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-escape_002c-while-defining-glyph">character, escape, while defining glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-field-delimiting-_0028fc_0029">character, field delimiting (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-field-padding-_0028fc_0029">character, field padding (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-horizontal-tab">character, horizontal tab</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-hyphenation-_0028_005c_0025_0029">character, hyphenation (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader">character, leader</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader-repetition-_0028lc_0029">character, leader repetition (<code class="code">lc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader_002c-and-translations">character, leader, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029">character, leader, non-interpreted (<code class="code">\a</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-named-_0028_005cC_0029">character, named (<code class="code">\C</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-newline_002c-and-translations">character, newline, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-no_002dbreak-control-_0028_0027_0029">character, no-break control (<code class="code">'</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029">character, no-break control, changing (<code class="code">c2</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-ordinary">character, ordinary</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-soft-hyphen_002c-setting-_0028shc_0029">character, soft hyphen, setting (<code class="code">shc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-special">character, special</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab-repetition-_0028tc_0029">character, tab repetition (<code class="code">tc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab_002c-and-translations">character, tab, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029">character, tab, non-interpreted (<code class="code">\t</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-transparent">character, transparent</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-transparent-dummy-_0028_005c_0029_0029">character, transparent dummy (<code class="code">\)</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-end_002dof_002dsentence">characters, end-of-sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-end_002dof_002dsentence-transparent">characters, end-of-sentence transparent</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-hyphenation">characters, hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">characters, input, and output glyphs, compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-invalid-for-trf-request">characters, invalid for <code class="code">trf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-invalid-input">characters, invalid input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-overlapping">characters, overlapping</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-special">characters, special</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">characters, special, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-unnamed_002c-accessing-with-_005cN">characters, unnamed, accessing with <code class="code">\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, filled, drawing (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, outlined, drawing (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, solid, drawing (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, stroked, drawing (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-class-of-characters-_0028class_0029">class of characters (<code class="code">class</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-classes_002c-character">classes, character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-clearing-input-line-trap-_0028it_002c-itc_0029">clearing input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-closing-brace-escape-sequence-_0028_005c_007d_0029">closing brace escape sequence (<code class="code">\})</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-closing-file-_0028close_0029">closing file (<code class="code">close</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-code-page-1047-output-encoding">code page 1047 output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-code-page-1047_002c-input-encoding">code page 1047, input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-code_002c-hyphenation-_0028hcode_0029">code, hyphenation (<code class="code">hcode</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-background_002c-register-_0028_002eM_0029">color name, background, register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-fill_002c-register-_0028_002eM_0029">color name, fill, register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-stroke_002c-register-_0028_002em_0029">color name, stroke, register (<code class="code">.m</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-default">color, default</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-fill">color, fill</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-stroke">color, stroke</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-colors">colors</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-command-prefix">command prefix</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-command_002dline-options">command-line options</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comments">comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comments-in-device-description-files">comments in device description files</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comments-in-font-description-files">comments in font description files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comments_002c-lining-up-with-tabs">comments, lining up with tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comments_002c-with-ds">comments, with <code class="code">ds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-common-features">common features</a>:</td><td> </td><td class="printindex-index-section"><a href="#Common-Features">Common Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-common-name-space-of-macros_002c-diversions_002c-and-strings">common name space of macros, diversions, and strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comparison-of-strings">comparison of strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-comparison-operators">comparison operators</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode">compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode-1">compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode_002c-and-parameters">compatibility mode, and parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-complementation_002c-logical">complementation, logical</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-composite-glyph-names">composite glyph names</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-block_002c-beginning-_0028_005c_007b_0029">conditional block, beginning (<code class="code">\{</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-block_002c-end-_0028_005c_007d_0029">conditional block, end (<code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-blocks">conditional blocks</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-expressions">conditional expressions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-output-for-terminal-_0028TTY_0029">conditional output for terminal (TTY)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-page-break-_0028ne_0029">conditional page break (<code class="code">ne</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conditionals-and-loops">conditionals and loops</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditionals-and-Loops">Conditionals and Loops</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-configuring-control-characters">configuring control characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-configuring-the-page-length-_0028pl_0029">configuring the page length (<code class="code">pl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-consecutive-hyphenated-lines-_0028hlm_0029">consecutive hyphenated lines (<code class="code">hlm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-constant-glyph-space-mode-_0028cs_0029">constant glyph space mode (<code class="code">cs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-contents_002c-table-of">contents, table of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Table-of-Contents">Table of Contents</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-contents_002c-table-of-1">contents, table of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continuation_002c-input-line-_0028_005cRET_0029">continuation, input line (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continuation_002c-output-line-_0028_005cc_0029">continuation, output line (<code class="code">\c</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continue-request_002c-in-a-while-loop"><code class="code">continue</code> request, in a <code class="code">while</code> loop</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continued-output-line-register-_0028_002eint_0029">continued output line register (<code class="code">.int</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-continuous-underlining-_0028cu_0029">continuous underlining (<code class="code">cu</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character-_0028_002e_0029">control character (<code class="code">.</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-changing-_0028cc_0029">control character, changing (<code class="code">cc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-no_002dbreak-_0028_0027_0029">control character, no-break (<code class="code">'</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029">control character, no-break, changing (<code class="code">c2</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-characters">control characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control-line">control line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control_002c-line">control, line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-control_002c-page">control, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conventions-for-input">conventions for input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Conventions">Input Conventions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-conversion-to-basic-units">conversion to basic units</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode">copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode-1">copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-cf-request">copy mode, and <code class="code">cf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-device-request">copy mode, and <code class="code">device</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-length-request">copy mode, and <code class="code">length</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-macro-parameters">copy mode, and macro parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-output-request">copy mode, and <code class="code">output</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-trf-request">copy mode, and <code class="code">trf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-write-request">copy mode, and <code class="code">write</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-writec-request">copy mode, and <code class="code">writec</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-writem-request">copy mode, and <code class="code">writem</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_0021">copy mode, and <code class="code">\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_003f">copy mode, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_003f-1">copy mode, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005ca">copy mode, and <code class="code">\a</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005ct">copy mode, and <code class="code">\t</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005cV">copy mode, and <code class="code">\V</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-copying-environment-_0028evc_0029">copying environment (<code class="code">evc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between oblique and upright glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between upright and oblique glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-correction_002c-italic-_0028_005c_002f_0029">correction, italic (<code class="code">\/</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-correction_002c-left-italic-_0028_005c_002c_0029">correction, left italic (<code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cover-page-in-_005bms_005d_002c-example-markup">cover page in [<samp class="file">ms</samp>], example markup</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cp-request_002c-and-glyph-definitions"><code class="code">cp</code> request, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cq-glyph_002c-at-end-of-sentence"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cq-glyph_002c-at-end-of-sentence-1"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias-for-register-_0028aln_0029">creating alias for register (<code class="code">aln</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-diversion-_0028als_0029">creating alias, for diversion (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-macro-_0028als_0029">creating alias, for macro (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-string-_0028als_0029">creating alias, for string (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-new-characters-_0028char_0029">creating new characters (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-credits">credits</a>:</td><td> </td><td class="printindex-index-section"><a href="#Credits">Credits</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-and-font-styles"><code class="code">cs</code> request, and font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-and-font-translations"><code class="code">cs</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">cs</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-with-fractional-type-sizes"><code class="code">cs</code> request, with fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-1">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-2">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-3">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-4">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-5">CSTR #54 errata</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-bp-request">CSTR #54 erratum, <code class="code">bp</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-po-request">CSTR #54 erratum, <code class="code">po</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-ps-request">CSTR #54 erratum, <code class="code">ps</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-sb-register">CSTR #54 erratum, <code class="code">sb</code> register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-st-register">CSTR #54 erratum, <code class="code">st</code> register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-yr-register">CSTR #54 erratum, <code class="code">yr</code> register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-_005cS-escape">CSTR #54 erratum, <code class="code">\S</code> escape</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-_005cs-escape-sequence">CSTR #54 erratum, <code class="code">\s</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-directory">current directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-input-file-name-register-_0028_002eF_0029">current input file name register (<code class="code">.F</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-page-number-_0028_0025_0029">current page number (<code class="code">%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-hours-_0028hours_0029">current time, hours (<code class="code">hours</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-minutes-_0028minutes_0029">current time, minutes (<code class="code">minutes</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-seconds-_0028seconds_0029">current time, seconds (<code class="code">seconds</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-D">D</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-dn-_0028dl_0029"><code class="code">da</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-warnings"><code class="code">da</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-warnings-1"><code class="code">da</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-day-of-the-month-register-_0028dy_0029">date, day of the month register (<code class="code">dy</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-day-of-the-week-register-_0028dw_0029">date, day of the week register (<code class="code">dw</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-month-of-the-year-register-_0028mo_0029">date, month of the year register (<code class="code">mo</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-year-register-_0028year_002c-yr_0029">date, year register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-day-of-the-month-register-_0028dy_0029">day of the month register (<code class="code">dy</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-day-of-the-week-register-_0028dw_0029">day of the week register (<code class="code">dw</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dd-glyph_002c-at-end-of-sentence"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dd-glyph_002c-at-end-of-sentence-1"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-de-request_002c-and-while"><code class="code">de</code> request, and <code class="code">while</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-de_002c-de1_002c-dei-requests_002c-and-warnings"><code class="code">de</code>, <code class="code">de1</code>, <code class="code">dei</code> requests, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-debugging">debugging</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-debugging-page-location-traps">debugging page location traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-decimal-point_002c-as-delimiter">decimal point, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-decrementation_002c-automatic_002c-of-a-register">decrementation, automatic, of a register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-default-color">default color</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-default-tab-stops">default tab stops</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-default-units">default units</a>:</td><td> </td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-deferred-output">deferred output</a>:</td><td> </td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-character-_0028char_0029">defining character (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-character-class-_0028class_0029">defining character class (<code class="code">class</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029">defining fallback character (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-glyph-_0028char_0029">defining glyph (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-symbol-_0028char_0029">defining symbol (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff">delimited arguments, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiters_002c-for-escape-sequence-arguments">delimiters, for escape sequence arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiting-character_002c-for-fields-_0028fc_0029">delimiting character, for fields (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiting-escape-sequence-arguments">delimiting escape sequence arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-depth_002c-interpolation">depth, interpolation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-depth_002c-of-last-glyph-_0028_002ecdp_0029">depth, of last glyph (<code class="code">.cdp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file-format"><samp class="file">DESC</samp> file format</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file_002c-and-font-mounting"><samp class="file">DESC</samp> file, and font mounting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"><samp class="file">DESC</samp> file, and <code class="code">use_charnames_in_special</code> keyword</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-description-file_002c-font">description file, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device-description-files_002c-comments">device description files, comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device-request_002c-and-copy-mode"><code class="code">device</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution">device resolution</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution-1">device resolution</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution_002c-obtaining-in-the-formatter">device resolution, obtaining in the formatter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-devices-for-output">devices for output</a>:</td><td> </td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dg-glyph_002c-at-end-of-sentence"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dg-glyph_002c-at-end-of-sentence-1"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-di-request_002c-and-warnings"><code class="code">di</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-di-request_002c-and-warnings-1"><code class="code">di</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-differences-in-implementation">differences in implementation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-digit_002dwidth-space-_0028_005c0_0029">digit-width space (<code class="code">\0</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-digits_002c-as-delimiters">digits, as delimiters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dimensions_002c-line">dimensions, line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directories-for-fonts">directories for fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directories-for-macros">directories for macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-current">directory, current</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-for-tmac-files">directory, for tmac files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-home">directory, home</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-platform_002dspecific">directory, platform-specific</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-site_002dlocal">directory, site-local</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-site_002dlocal-1">directory, site-local</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-disabling-hyphenation-_0028_005c_0025_0029">disabling hyphenation (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-disabling-_005c-_0028eo_0029">disabling <code class="code">\</code> (<code class="code">eo</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-discardable-horizontal-space">discardable horizontal space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-displays">displays</a>:</td><td> </td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-displays-_005bms_005d">displays [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-displays_002c-and-footnotes-_005bms_005d">displays, and footnotes [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-distance-to-next-vertical-position-trap-register-_0028_002et_0029">distance to next vertical position trap register (<code class="code">.t</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion">diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-name-register-_0028_002ez_0029">diversion name register (<code class="code">.z</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-trap_002c-setting-_0028dt_0029">diversion trap, setting (<code class="code">dt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-traps">diversion traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-appending-to-_0028da_002c-boxa_0029">diversion, appending to (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-beginning-_0028di_002c-box_0029">diversion, beginning (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-creating-alias-for-_0028als_0029">diversion, creating alias for (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-ending-_0028di_002c-box_0029">diversion, ending (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-nested">diversion, nested</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-removing-_0028rm_0029">diversion, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-removing-alias-for-_0028rm_0029">diversion, removing alias for (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-renaming-_0028rn_0029">diversion, renaming (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-stripping-final-newline">diversion, stripping final newline</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel">diversion, top-level</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-bp">diversion, top-level, and <code class="code">bp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-_005c_0021">diversion, top-level, and <code class="code">\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-_005c_003f">diversion, top-level, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-unformatting-_0028asciify_0029">diversion, unformatting (<code class="code">asciify</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029">diversion, vertical position in, register (<code class="code">.d</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions">diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions-1">diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions_002c-and-traps">diversions, and traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions_002c-shared-name-space-with-macros-and-strings">diversions, shared name space with macros and strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-division_002c-truncating">division, truncating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dl-register_002c-and-da-_0028boxa_0029"><code class="code">dl</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dn-register_002c-and-da-_0028boxa_0029"><code class="code">dn</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-document-description-macros_002c-_005bms_005d">document description macros, [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-document-formats">document formats</a>:</td><td> </td><td class="printindex-index-section"><a href="#Document-Formats">Document Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-documents_002c-multi_002dfile">documents, multi-file</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-documents_002c-structuring-the-source-of">documents, structuring the source of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dot_002c-as-delimiter">dot, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-double-quote_002c-embedding-in-a-macro-argument">double quote, embedding in a macro argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-double-quotes_002c-trailing_002c-in-strings">double quotes, trailing, in strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-double_002dspacing-_0028ls_0029">double-spacing (<code class="code">ls</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-double_002dspacing-_0028vs_002c-pvs_0029">double-spacing (<code class="code">vs</code>, <code class="code">pvs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-down_002dcasing-a-string-_0028stringdown_0029">down-casing a string (<code class="code">stringdown</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a filled circle (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a filled ellipse (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a filled polygon (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029">drawing a line (‘<samp class="samp">\D'l …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a solid circle (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a solid ellipse (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a solid polygon (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029">drawing a spline (‘<samp class="samp">\D'~ …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029">drawing a stroked circle (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing a stroked ellipse (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing a stroked polygon (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029">drawing an arc (‘<samp class="samp">\D'a …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029">drawing an outlined circle (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing an outlined ellipse (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing an outlined polygon (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-horizontal-lines-_0028_005cl_0029">drawing horizontal lines (<code class="code">\l</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-position">drawing position</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-position_002c-vertical-_0028nl_0029">drawing position, vertical (<code class="code">nl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-requests">drawing requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-vertical-lines-_0028_005cL_0029">drawing vertical lines (<code class="code">\L</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-comments"><code class="code">ds</code> request, and comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-double-quotes"><code class="code">ds</code> request, and double quotes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-leading-spaces"><code class="code">ds</code> request, and leading spaces</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds_002c-ds1-requests_002c-and-comments"><code class="code">ds</code>, <code class="code">ds1</code> requests, and comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ds_002c-ds1-requests_002c-and-warnings"><code class="code">ds</code>, <code class="code">ds1</code> requests, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029">dummy character (<code class="code">\&</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor">dummy character (<code class="code">\&</code>), as control character suppressor</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning">dummy character (<code class="code">\&</code>), effect on kerning</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">dummy character (<code class="code">\&</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character_002c-transparent-_0028_005c_0029_0029">dummy character, transparent (<code class="code">\)</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-environment_002c-used-by-_005cw-escape-sequence">dummy environment, used by <code class="code">\w</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-environments-_0028pev_0029">dumping environments (<code class="code">pev</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-page-location-traps-_0028ptr_0029">dumping page location traps (<code class="code">ptr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-registers-_0028pnr_0029">dumping registers (<code class="code">pnr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-symbol-table-_0028pm_0029">dumping symbol table (<code class="code">pm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EBCDIC-output-encoding"><abbr class="acronym">EBCDIC</abbr> output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-EBCDIC_002c-input-encoding"><abbr class="acronym">EBCDIC</abbr>, input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page">ejection, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page-1">ejection, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page-2">ejection, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page_002c-of-final-page">ejection, page, of final page</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page_002c-prevented-by-vpt">ejection, page, prevented by <code class="code">vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-el-request_002c-and-warnings"><code class="code">el</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, filled, drawing (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, outlined, drawing (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, solid, drawing (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, stroked, drawing (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-em-glyph_002c-and-cflags"><code class="code">em</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-em-scaling-unit-_0028m_0029">em scaling unit (<code class="code">m</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-embolding-of-special-fonts">embolding of special fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-empty-line">empty line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-en-scaling-unit-_0028n_0029">en scaling unit (<code class="code">n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-enabling-vertical-position-traps-_0028vpt_0029">enabling vertical position traps (<code class="code">vpt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-code-page-1047">encoding, input, code page 1047</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-EBCDIC">encoding, input, <abbr class="acronym">EBCDIC</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, input, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029">encoding, input, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029">encoding, input, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029">encoding, input, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-ASCII">encoding, output, <abbr class="acronym">ASCII</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-code-page-1047">encoding, output, code page 1047</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-EBCDIC">encoding, output, <abbr class="acronym">EBCDIC</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-ISO-646">encoding, output, ISO 646</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, output, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-UTF_002d8">encoding, output, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end-of-conditional-block-_0028_005c_007d_0029">end of conditional block (<code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-macro-_0028em_0029">end-of-input macro (<code class="code">em</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-trap_002c-setting-_0028em_0029">end-of-input trap, setting (<code class="code">em</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-traps">end-of-input traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-characters">end-of-sentence characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-characters-1">end-of-sentence characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-transparent-characters">end-of-sentence transparent characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ending-diversion-_0028di_002c-box_0029">ending diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-endnotes">endnotes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Footnotes-and-Endnotes">Footnotes and Endnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment">environment</a>:</td><td> </td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-availability-and-naming_002c-incompatibilities-with">environment availability and naming, incompatibilities with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-number_002fname-register-_0028_002eev_0029">environment number/name register (<code class="code">.ev</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-variables">environment variables</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-copying-_0028evc_0029">environment, copying (<code class="code">evc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">environment, dimensions of last glyph (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence">environment, dummy, used by <code class="code">\w</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-previous-line-length-_0028_002en_0029">environment, previous line length (<code class="code">.n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-switching-_0028ev_0029">environment, switching (<code class="code">ev</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environments">environments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-environments_002c-dumping-_0028pev_0029">environments, dumping (<code class="code">pev</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-equality-operator">equality operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-equation-example-_005bms_005d">equation example [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-equations-_005bms_005d">equations [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-changing-_0028ec_0029">escape character, changing (<code class="code">ec</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-formatting-_0028_005ce_0029">escape character, formatting (<code class="code">\e</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-while-defining-glyph">escape character, while defining glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequence">escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequence-argument-delimiters">escape sequence argument delimiters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequences">escape sequences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029">escape sequences, brace (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-escaping-newline-characters_002c-in-strings">escaping newline characters, in strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ex-request_002c-use-in-debugging"><code class="code">ex</code> request, use in debugging</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ex-request_002c-used-with-nx-and-rd"><code class="code">ex</code> request, used with <code class="code">nx</code> and <code class="code">rd</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-bulleted-list-_005bms_005d">example markup, bulleted list [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-cover-page-in-_005bms_005d">example markup, cover page in [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-glossary_002dstyle-list-_005bms_005d">example markup, glossary-style list [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-numbered-list-_005bms_005d">example markup, numbered list [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-examples-of-invocation">examples of invocation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invocation-Examples">Invocation Examples</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-exiting-_0028ex_0029">exiting (<code class="code">ex</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expansion-of-strings-_0028_005c_002a_0029">expansion of strings (<code class="code">\*</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-explicit-hyphen-_0028_005c_0025_0029">explicit hyphen (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-explicit-hyphenation">explicit hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expression_002c-limitation-of-logical-not-in">expression, limitation of logical not in</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expression_002c-order-of-evaluation">expression, order of evaluation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-and-register-format">expressions, and register format</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-and-space-characters">expressions, and space characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-conditional">expressions, conditional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-numeric">expressions, numeric</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-post_002dvertical-line-space-_0028_005cx_0029">extra post-vertical line space (<code class="code">\x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-post_002dvertical-line-space-register-_0028_002ea_0029">extra post-vertical line space register (<code class="code">.a</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-pre_002dvertical-line-space-_0028_005cx_0029">extra pre-vertical line space (<code class="code">\x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-spaces-between-words">extra spaces between words</a>:</td><td> </td><td class="printindex-index-section"><a href="#Adjustment">Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extreme-values-representable-with-Roman-numerals">extreme values representable with Roman numerals</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029">extremum operators (<code class="code">>?</code>, <code class="code"><?</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-F">F</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-f-scaling-unit"><code class="code">f</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029">factor, zoom, of a font (<code class="code">fzoom</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029">fallback character, defining (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">fallback glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fam-request_002c-and-changing-fonts"><code class="code">fam</code> request, and changing fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-families_002c-font">families, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-family_002c-font">family, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-features_002c-common">features, common</a>:</td><td> </td><td class="printindex-index-section"><a href="#Common-Features">Common Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fi-request_002c-causing-implicit-break"><code class="code">fi</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-field-delimiting-character-_0028fc_0029">field delimiting character (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-field-padding-character-_0028fc_0029">field padding character (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fields">fields</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fields_002c-and-tabs">fields, and tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-figure-space-_0028_005c0_0029">figure space (<code class="code">\0</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-figures-_005bms_005d">figures [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file-formats">file formats</a>:</td><td> </td><td class="printindex-index-section"><a href="#File-Formats">File Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file-names_002c-breaking-_0028_005c_003a_0029">file names, breaking (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-appending-to-_0028opena_0029">file, appending to (<code class="code">opena</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-closing-_0028close_0029">file, closing (<code class="code">close</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-font-description">file, font description</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-inclusion-_0028so_0029">file, inclusion (<code class="code">so</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-macro_002c-search-path">file, macro, search path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-opening-_0028open_0029">file, opening (<code class="code">open</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-processing-next-_0028nx_0029">file, processing next (<code class="code">nx</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-writing-to-_0028write_002c-writec_0029">file, writing to (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-files_002c-font">files, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Device-and-Font-Description-Files">Device and Font Description Files</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-color">fill color</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-color-name-register-_0028_002eM_0029">fill color name register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode-_0028fi_0029_002c-enabling">fill mode (<code class="code">fi</code>), enabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode_002c-and-_005cc">fill mode, and <code class="code">\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode_002c-disabling">fill mode, disabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">filled circle, drawing (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">filled ellipse, drawing (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">filled polygon, drawing (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling">filling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Filling">Filling</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-and-adjustment_002c-manipulating">filling and adjustment, manipulating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-of-output_002c-disabling-_0028nf_0029">filling of output, disabling (<code class="code">nf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-of-output_002c-enabling-_0028fi_0029">filling of output, enabling (<code class="code">fi</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling_002c-and-break-warnings">filling, and <code class="code">break</code> warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-filling_002c-and-inter_002dsentence-space">filling, and inter-sentence space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-final-newline_002c-stripping-in-diversions">final newline, stripping in diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fl-request_002c-causing-implicit-break"><code class="code">fl</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-floating-keep">floating keep</a>:</td><td> </td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-flush-output-_0028fl_0029">flush output (<code class="code">fl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font">font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-aliasing-with-third-argument-to-fp-request">font aliasing with third argument to <code class="code">fp</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file">font description file</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file-format">font description file format</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file_002c-format">font description file, format</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-files_002c-comments">font description files, comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-directories">font directories</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-families">font families</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-family">font family</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-family_002c-changing-_0028fam_002c-_005cF_0029">font family, changing (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-file_002c-format">font file, format</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-files">font files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Device-and-Font-Description-Files">Device and Font Description Files</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-for-underlining-_0028uf_0029">font for underlining (<code class="code">uf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-height_002c-changing-_0028_005cH_0029">font height, changing (<code class="code">\H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-metrics">font metrics</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-mounting_002c-automatic">font mounting, automatic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-path">font path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-position-register-_0028_002ef_0029">font position register (<code class="code">.f</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-positions">font positions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-slant_002c-changing-_0028_005cS_0029">font slant, changing (<code class="code">\S</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style">font style</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style_002c-abstract">font style, abstract</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style_002c-abstract_002c-setting-up-_0028sty_0029">font style, abstract, setting up (<code class="code">sty</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-styles">font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font-translation-_0028ftr_0029">font translation (<code class="code">ftr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-magnification-_0028fzoom_0029">font, magnification (<code class="code">fzoom</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-mounting-_0028fp_0029">font, mounting (<code class="code">fp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-optical-size">font, optical size</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">font, previous, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-previous_002c-slecting-_0028ft_0029">font, previous, slecting (<code class="code">ft</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-selection">font, selection</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-special">font, special</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-text">font, text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-unstyled">font, unstyled</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-zoom-factor-_0028fzoom_0029">font, zoom factor (<code class="code">fzoom</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-artificial">fonts, artificial</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-changing-_0028ft_002c-_005cf_0029">fonts, changing (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-searching">fonts, searching</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-special">fonts, special</a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footers">footers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footers-1">footers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footers-_005bms_005d">footers [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footnote-marker-_005bms_005d">footnote marker [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes">footnotes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Footnotes-and-Endnotes">Footnotes and Endnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes-_005bms_005d">footnotes [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes_002c-and-displays-_005bms_005d">footnotes, and displays [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes_002c-and-keeps-_005bms_005d">footnotes, and keeps [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-form-letters">form letters</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-description-file">format of font description file</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-description-files">format of font description files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-files">format of font files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-register-_0028_005cg_0029">format of register (<code class="code">\g</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-format_002c-paper">format, paper</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formats_002c-file">formats, file</a>:</td><td> </td><td class="printindex-index-section"><a href="#File-Formats">File Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formatter-instructions">formatter instructions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029">formatting a backslash glyph (<code class="code">\[rs]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-a-title-line-_0028tl_0029">formatting a title line (<code class="code">tl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-the-escape-character-_0028_005ce_0029">formatting the escape character (<code class="code">\e</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-the-time">formatting the time</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fp-request_002c-and-font-translations"><code class="code">fp</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">fp</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-point-sizes">fractional point sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-point-sizes-1">fractional point sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes">fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes-1">fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes-in-ms-macros">fractional type sizes in <samp class="file">ms</samp> macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&T ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-French-spacing">French spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-font-styles"><code class="code">fspecial</code> request, and font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-font-translations"><code class="code">fspecial</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-glyph-search-order"><code class="code">fspecial</code> request, and glyph search order</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-imitating-bold"><code class="code">fspecial</code> request, and imitating bold</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ft-request_002c-and-font-translations"><code class="code">ft</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-full_002dservice-macro-package">full-service macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-G">G</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-geometry_002c-page">geometry, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GGL-_0028groff-glyph-list_0029">GGL (<code class="code">groff</code> glyph list)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GGL-_0028groff-glyph-list_0029-1">GGL (<code class="code">groff</code> glyph list)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glossary_002dstyle-list_002c-example-markup-_005bms_005d">glossary-style list, example markup [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph">glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-for-line-drawing">glyph for line drawing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-names_002c-composite">glyph names, composite</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-pile-_0028_005cb_0029">glyph pile (<code class="code">\b</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-properties-_0028cflags_0029">glyph properties (<code class="code">cflags</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029">glyph, box rule (<code class="code">\[br]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-constant-space">glyph, constant space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-defining-_0028char_0029">glyph, defining (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-distinguished-from-character">glyph, distinguished from character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-for-line-drawing">glyph, for line drawing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-for-margins-_0028mc_0029">glyph, for margins (<code class="code">mc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">glyph, last, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-leader-repetition-_0028lc_0029">glyph, leader repetition (<code class="code">lc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-numbered-_0028_005cN_0029">glyph, numbered (<code class="code">\N</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-numbered-_0028_005cN_0029-1">glyph, numbered (<code class="code">\N</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-soft-hyphen-_0028hy_0029">glyph, soft hyphen (<code class="code">hy</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-tab-repetition-_0028tc_0029">glyph, tab repetition (<code class="code">tc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-underscore-_0028_005c_005bru_005d_0029">glyph, underscore (<code class="code">\[ru]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">glyphs, available, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">glyphs, output, and input characters, compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-overstriking-_0028_005co_0029">glyphs, overstriking (<code class="code">\o</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-unnamed">glyphs, unnamed</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-unnamed_002c-accessing-with-_005cN">glyphs, unnamed, accessing with <code class="code">\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-identification-register-_0028_002eg_0029">GNU <code class="code">troff</code>, identification register (<code class="code">.g</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-PID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, PID register (<code class="code">$$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, process ID register (<code class="code">$$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU_002dspecific-register-_0028_002eg_0029">GNU-specific register (<code class="code">.g</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-graphic-renditions">graphic renditions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-greater-than-_0028or-equal-to_0029-operator">greater than (or equal to) operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-capabilities"><code class="code">groff</code> capabilities</a>:</td><td> </td><td class="printindex-index-section"><a href="#groff-Capabilities"><code class="code">groff</code> Capabilities</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-glyph-list-_0028GGL_0029"><code class="code">groff</code> glyph list (GGL)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-glyph-list-_0028GGL_0029-1"><code class="code">groff</code> glyph list (GGL)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-invocation"><code class="code">groff</code> invocation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-groff">Invoking groff</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff_002c-and-pi-request"><code class="code">groff</code>, and <code class="code">pi</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-groff_002d_002d_002dwhat-is-it_003f"><code class="code">groff</code>—what is it?</a>:</td><td> </td><td class="printindex-index-section"><a href="#What-Is-groff_003f">What Is <code class="code">groff</code>?</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fBIN_005fPATH_002c-environment-variable"><code>GROFF_BIN_PATH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable"><code>GROFF_COMMAND_PREFIX<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fENCODING_002c-environment-variable"><code>GROFF_ENCODING<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fFONT_005fPATH_002c-environment-variable"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMAC_005fPATH_002c-environment-variable"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMPDIR_002c-environment-variable"><code>GROFF_TMPDIR<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTYPESETTER_002c-environment-variable"><code>GROFF_TYPESETTER<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-grohtml_002c-the-program"><code class="code">grohtml</code>, the program</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-interactive-use"><code class="code">gtroff</code>, interactive use</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-output"><code class="code">gtroff</code>, output</a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-reference"><code class="code">gtroff</code>, reference</a>:</td><td> </td><td class="printindex-index-section"><a href="#GNU-troff-Reference">GNU troff Reference</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hair-space-_0028_005c_005e_0029">hair space (<code class="code">\^</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hcode-request_002c-and-glyph-definitions"><code class="code">hcode</code> request, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-headers">headers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-headers-1">headers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-headers-_005bms_005d">headers [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-height_002c-font_002c-changing-_0028_005cH_0029">height, font, changing (<code class="code">\H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-height_002c-of-last-glyph-_0028_002echt_0029">height, of last glyph (<code class="code">.cht</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-high_002dwater-mark-register-_0028_002eh_0029">high-water mark register (<code class="code">.h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-home-directory">home directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-discardable-space">horizontal discardable space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-input-line-position-register-_0028hp_0029">horizontal input line position register (<code class="code">hp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-input-line-position_002c-saving-_0028_005ck_0029">horizontal input line position, saving (<code class="code">\k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-line_002c-drawing-_0028_005cl_0029">horizontal line, drawing (<code class="code">\l</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-_0028_005ch_0029">horizontal motion (<code class="code">\h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-quantum">horizontal motion quantum</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-quantum-register-_0028_002eH_0029">horizontal motion quantum register (<code class="code">.H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-output-line-position-register-_0028_002ek_0029">horizontal output line position register (<code class="code">.k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-resolution">horizontal resolution</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-resolution-register-_0028_002eH_0029">horizontal resolution register (<code class="code">.H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-space-_0028_005ch_0029">horizontal space (<code class="code">\h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-space_002c-unformatting">horizontal space, unformatting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-tab-character">horizontal tab character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hours_002c-current-time-_0028hours_0029">hours, current time (<code class="code">hours</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hpf-request_002c-and-hyphenation-language"><code class="code">hpf</code> request, and hyphenation language</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hw-request_002c-and-hy-restrictions"><code class="code">hw</code> request, and <code class="code">hy</code> restrictions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hw-request_002c-and-hyphenation-language"><code class="code">hw</code> request, and hyphenation language</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hy-glyph_002c-and-cflags"><code class="code">hy</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphen_002c-explicit-_0028_005c_0025_0029">hyphen, explicit (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenated-lines_002c-consecutive-_0028hlm_0029">hyphenated lines, consecutive (<code class="code">hlm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenating-characters">hyphenating characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation">hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Hyphenation">Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-character-_0028_005c_0025_0029">hyphenation character (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-code-_0028hcode_0029">hyphenation code (<code class="code">hcode</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029">hyphenation consecutive line count register (<code class="code">.hlc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029">hyphenation consecutive line limit register (<code class="code">.hlm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-exceptions">hyphenation exceptions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-language-register-_0028_002ehla_0029">hyphenation language register (<code class="code">.hla</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-margin-_0028hym_0029">hyphenation margin (<code class="code">hym</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-margin-register-_0028_002ehym_0029">hyphenation margin register (<code class="code">.hym</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-mode-register-_0028_002ehy_0029">hyphenation mode register (<code class="code">.hy</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-parameters_002c-automatic">hyphenation parameters, automatic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-pattern-files">hyphenation pattern files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-patterns-_0028hpf_0029">hyphenation patterns (<code class="code">hpf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-_0028hys_0029">hyphenation space (<code class="code">hys</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-adjustment-threshold">hyphenation space adjustment threshold</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029">hyphenation space adjustment threshold register (<code class="code">.hys</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-automatic">hyphenation, automatic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-disabling-_0028_005c_0025_0029">hyphenation, disabling (<code class="code">\%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-explicit">hyphenation, explicit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-incompatibilities-with-AT_0026T-troff">hyphenation, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-manipulating">hyphenation, manipulating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-manual">hyphenation, manual</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-i-scaling-unit"><code class="code">i</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-i_002fo">i/o</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-IBM-code-page-1047-input-encoding">IBM code page 1047 input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-IBM-code-page-1047-output-encoding">IBM code page 1047 output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-identifiers">identifiers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-identifiers_002c-undefined">identifiers, undefined</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-and-font-translations"><code class="code">ie</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-and-warnings"><code class="code">ie</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-operators-to-use-with"><code class="code">ie</code> request, operators to use with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-and-font-translations"><code class="code">if</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-and-the-_0021-operator"><code class="code">if</code> request, and the ‘<samp class="samp">!</samp>’ operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-operators-to-use-with"><code class="code">if</code> request, operators to use with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if_002delse">if-else</a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-if_002dthen">if-then</a>:</td><td> </td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-imitating-boldface-_0028bd_0029">imitating boldface (<code class="code">bd</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-implementation-differences">implementation differences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-implicit-line-break">implicit line break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-implicit-trap">implicit trap</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-in-request_002c-causing-implicit-break"><code class="code">in</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-in-request_002c-using-_002b-and-_002d-with"><code class="code">in</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-inch-scaling-unit-_0028i_0029">inch scaling unit (<code class="code">i</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-including-a-file-_0028so_0029">including a file (<code class="code">so</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-incompatibilities-with-AT_0026T-troff">incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-increment-value-without-changing-the-register">increment value without changing the register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-incrementation_002c-automatic_002c-of-a-register">incrementation, automatic, of a register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-indentation-_0028in_0029">indentation (<code class="code">in</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-indentation_002c-of-roff-source-code">indentation, of <code class="code">roff</code> source code</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-index_002c-in-macro-package">index, in macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Indexing">Indexing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-indicator_002c-scaling">indicator, scaling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-indirect-assignments">indirect assignments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-and-output-requests">input and output requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">input characters and output glyphs, compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-characters_002c-invalid">input characters, invalid</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-conventions">input conventions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Conventions">Input Conventions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-code-page-1047">input encoding, code page 1047</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-EBCDIC">input encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">input encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029">input encoding, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029">input encoding, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029">input encoding, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-file-name_002c-current_002c-register-_0028_002eF_0029">input file name, current, register (<code class="code">.F</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-level">input level</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-level-in-delimited-arguments">input level in delimited arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-continuation-_0028_005cRET_0029">input line continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-number-register-_0028_002ec_002c-c_002e_0029">input line number register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-number_002c-setting-_0028lf_0029">input line number, setting (<code class="code">lf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029">input line position, horizontal, saving (<code class="code">\k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-trap_002c-clearing-_0028it_002c-itc_0029">input line trap, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-trap_002c-setting-_0028it_002c-itc_0029">input line trap, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-traps">input line traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-traps-and-interrupted-lines-_0028itc_0029">input line traps and interrupted lines (<code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line_002c-horizontal-position_002c-register-_0028hp_0029">input line, horizontal position, register (<code class="code">hp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line_002c-productive">input line, productive</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-stack_002c-backtrace-_0028backtrace_0029">input stack, backtrace (<code class="code">backtrace</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-stack_002c-setting-limit">input stack, setting limit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input-token">input token</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input_002c-8_002dbit">input, 8-bit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-input_002c-standard_002c-reading-from-_0028rd_0029">input, standard, reading from (<code class="code">rd</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-inserting-horizontal-space-_0028_005ch_0029">inserting horizontal space (<code class="code">\h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-installation">installation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Installation">Installation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-instructing-the-formatter">instructing the formatter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dsentence-space-size-register-_0028_002esss_0029">inter-sentence space size register (<code class="code">.sss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dsentence-space_002c-additional">inter-sentence space, additional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dword-spacing_002c-minimal">inter-word spacing, minimal</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interactive-use-of-gtroff">interactive use of <code class="code">gtroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-intercepting-requests">intercepting requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-intermediate-output">intermediate output</a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolating-registers-_0028_005cn_0029">interpolating registers (<code class="code">\n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation">interpolation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-depth">interpolation depth</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-depth-in-delimited-arguments">interpolation depth in delimited arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-of-strings-_0028_005c_002a_0029">interpolation of strings (<code class="code">\*</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interpretation-mode">interpretation mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-line">interrupted line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-line-register-_0028_002eint_0029">interrupted line register (<code class="code">.int</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-lines-and-input-line-traps-_0028itc_0029">interrupted lines and input line traps (<code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-introduction">introduction</a>:</td><td> </td><td class="printindex-index-section"><a href="#Introduction">Introduction</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-invalid-characters-for-trf-request">invalid characters for <code class="code">trf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-invalid-input-characters">invalid input characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-invocation-examples">invocation examples</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invocation-Examples">Invocation Examples</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-invoking-groff">invoking <code class="code">groff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-groff">Invoking groff</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-invoking-requests">invoking requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-646-output-encoding">ISO 646 output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->) output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-9</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-italic-correction-_0028_005c_002f_0029">italic correction (<code class="code">\/</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-J">J</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-justifying-text">justifying text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-justifying-text-_0028rj_0029">justifying text (<code class="code">rj</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-keep_002c-floating">keep, floating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps-_0028introduction_0029">keeps (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps-_005bms_005d">keeps [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps_002c-and-footnotes-_005bms_005d">keeps, and footnotes [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning-and-ligatures">kerning and ligatures</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning-enabled-register-_0028_002ekern_0029">kerning enabled register (<code class="code">.kern</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning_002c-activating-_0028kern_0029">kerning, activating (<code class="code">kern</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning_002c-track">kerning, track</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-L">L</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-landscape-page-orientation">landscape page orientation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-language-_005bms_005d">language [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">last glyph, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested point size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested type size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->), input encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-layout_002c-line">layout, line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-layout_002c-page">layout, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lc-request_002c-and-glyph-definitions"><code class="code">lc</code> request, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character">leader character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character-1">leader character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character_002c-and-translations">leader character, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029">leader character, non-interpreted (<code class="code">\a</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-repetition-character-_0028lc_0029">leader repetition character (<code class="code">lc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leaders">leaders</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading">leading</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-space-macro-_0028lsm_0029">leading space macro (<code class="code">lsm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-space-traps">leading space traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces">leading spaces</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces-macro-_0028lsm_0029">leading spaces macro (<code class="code">lsm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces-with-ds">leading spaces with <code class="code">ds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-left-italic-correction-_0028_005c_002c_0029">left italic correction (<code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-left-margin-_0028po_0029">left margin (<code class="code">po</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-a-string-_0028length_0029">length of a string (<code class="code">length</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-line-_0028ll_0029">length of line (<code class="code">ll</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-previous-line-_0028_002en_0029">length of previous line (<code class="code">.n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-the-page_002c-configuring-_0028pl_0029">length of the page, configuring (<code class="code">pl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-title-line_002c-configuring-_0028lt_0029">length of title line, configuring (<code class="code">lt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-length-request_002c-and-copy-mode"><code class="code">length</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-less-than-_0028or-equal-to_0029-operator">less than (or equal to) operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-letters_002c-form">letters, form</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-level_002c-input">level, input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-level_002c-suppression-nesting_002c-register">level, suppression nesting, register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lf-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">lf</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ligature">ligature</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures-and-kerning">ligatures and kerning</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures-enabled-register-_0028_002elg_0029">ligatures enabled register (<code class="code">.lg</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures_002c-activating-_0028lg_0029">ligatures, activating (<code class="code">lg</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-limitations-of-_005cb-escape-sequence">limitations of <code class="code">\b</code> escape sequence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break">line break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break-_0028introduction_0029">line break (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break_002c-output">line break, output</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-control">line control</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-dimensions">line dimensions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-drawing-glyph">line drawing glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-drawing-glyph-1">line drawing glyph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-indentation-_0028in_0029">line indentation (<code class="code">in</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-layout">line layout</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length-_0028ll_0029">line length (<code class="code">ll</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length-register-_0028_002el_0029">line length register (<code class="code">.l</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length_002c-previous-_0028_002en_0029">line length, previous (<code class="code">.n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029">line number, input, register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-number_002c-output_002c-register-_0028ln_0029">line number, output, register (<code class="code">ln</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-numbers_002c-printing-_0028nm_0029">line numbers, printing (<code class="code">nm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029">line space, extra post-vertical (<code class="code">\x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029">line space, extra pre-vertical (<code class="code">\x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-spacing-register-_0028_002eL_0029">line spacing register (<code class="code">.L</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-spacing_002c-post_002dvertical-_0028pvs_0029">line spacing, post-vertical (<code class="code">pvs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029">line thickness (‘<samp class="samp">\D't …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-blank">line, blank</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029">line, drawing (‘<samp class="samp">\D'l …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-horizontal_002c-drawing-_0028_005cl_0029">line, horizontal, drawing (<code class="code">\l</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-continuation-_0028_005cRET_0029">line, input, continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029">line, input, horizontal position, register (<code class="code">hp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029">line, input, horizontal position, saving (<code class="code">\k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-interrupted">line, interrupted</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-output_002c-continuation-_0028_005cc_0029">line, output, continuation (<code class="code">\c</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029">line, output, horizontal position, register (<code class="code">.k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-productive-input">line, productive input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-vertical_002c-drawing-_0028_005cL_0029">line, vertical, drawing (<code class="code">\L</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002dtabs-mode">line-tabs mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-blank_002c-disabling">lines, blank, disabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-centering-_0028ce_0029">lines, centering (<code class="code">ce</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-centering-_0028introduction_0029">lines, centering (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-consecutive-hyphenated-_0028hlm_0029">lines, consecutive hyphenated (<code class="code">hlm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029">lines, interrupted, and input line traps (<code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-right_002daligning-_0028introduction_0029">lines, right-aligning (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-right_002djustifying-_0028introduction_0029">lines, right-justifying (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029">list of special characters (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-listing-page-location-traps-_0028ptr_0029">listing page location traps (<code class="code">ptr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lists">lists</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ll-request_002c-using-_002b-and-_002d-with"><code class="code">ll</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-localization">localization</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-localization-_005bms_005d">localization [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-locating-macro-files">locating macro files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-locating-macro-packages">locating macro packages</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029">location, vertical, page, marking (<code class="code">mk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029">location, vertical, page, returning to marked (<code class="code">rt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-_0060_0060and_0027_0027-operator">logical “and” operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-_0060_0060or_0027_0027-operator">logical “or” operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-complementation-operator">logical complementation operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-conjunction-operator">logical conjunction operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-disjunction-operator">logical disjunction operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-not_002c-limitation-in-expression">logical not, limitation in expression</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-operators">logical operators</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-long-names">long names</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-loops-and-conditionals">loops and conditionals</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditionals-and-Loops">Conditionals and Loops</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lowercasing-a-string-_0028stringdown_0029">lowercasing a string (<code class="code">stringdown</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ls-request_002c-alternative-to-_0028pvs_0029"><code class="code">ls</code> request, alternative to (<code class="code">pvs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-lt-request_002c-using-_002b-and-_002d-with"><code class="code">lt</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-M">M</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-m-scaling-unit"><code class="code">m</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-M-scaling-unit"><code class="code">M</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-machine-units">machine units</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro">macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments">macro arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments_002c-and-compatibility-mode">macro arguments, and compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments_002c-and-tabs">macro arguments, and tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-directories">macro directories</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-file-search-path">macro file search path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-name-register-_0028_005c_00240_0029">macro name register (<code class="code">\$0</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer">macro names, starting with <code class="code">[</code> or <code class="code">]</code>, and <code class="code">refer</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package">macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Packages">Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package-search-path">macro package search path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package-usage_002c-basics-of">macro package usage, basics of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-auxiliary">macro package, auxiliary</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-full_002dservice">macro package, full-service</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-introduction">macro package, introduction</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Package-Intro">Macro Package Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-major">macro package, major</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-minor">macro package, minor</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-structuring-the-source-of">macro package, structuring the source of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-appending-to-_0028am_0029">macro, appending to (<code class="code">am</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-creating-alias-for-_0028als_0029">macro, creating alias for (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-end_002dof_002dinput-_0028em_0029">macro, end-of-input (<code class="code">em</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-parameters-_0028_005c_0024_0029">macro, parameters (<code class="code">\$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-removing-_0028rm_0029">macro, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-removing-alias-for-_0028rm_0029">macro, removing alias for (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-renaming-_0028rn_0029">macro, renaming (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-recursive">macros, recursive</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-searching">macros, searching</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-shared-name-space-with-strings-and-diversions">macros, shared name space with strings and diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-tutorial-for-users">macros, tutorial for users</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-writing">macros, writing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-magnification-of-a-font-_0028fzoom_0029">magnification of a font (<code class="code">fzoom</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-major-macro-package">major macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-major-version-number-register-_0028_002ex_0029">major version number register (<code class="code">.x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man-macros_002c-custom-headers-and-footers"><code class="code">man</code> macros, custom headers and footers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man-macros_002c-Ultrix_002dspecific"><code class="code">man</code> macros, Ultrix-specific</a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-man-pages">man pages</a>:</td><td> </td><td class="printindex-index-section"><a href="#man">man</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-filling-and-adjustment">manipulating filling and adjustment</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-hyphenation">manipulating hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-spacing">manipulating spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-type-size-and-vertical-spacing">manipulating type size and vertical spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manual-hyphenation">manual hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-manual-pages">manual pages</a>:</td><td> </td><td class="printindex-index-section"><a href="#man">man</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin-for-hyphenation-_0028hym_0029">margin for hyphenation (<code class="code">hym</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin-glyph-_0028mc_0029">margin glyph (<code class="code">mc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-bottom">margin, bottom</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-left-_0028po_0029">margin, left (<code class="code">po</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-right">margin, right</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-top">margin, top</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029">mark, high-water, register (<code class="code">.h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-marker_002c-footnote-_005bms_005d">marker, footnote [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-marking-vertical-page-location-_0028mk_0029">marking vertical page location (<code class="code">mk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-maximum-operator">maximum operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-maximum-value-representable-with-Roman-numerals">maximum value representable with Roman numerals</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mdoc-macros"><code class="code">mdoc</code> macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#mdoc">mdoc</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-me-macro-package"><code class="code">me</code> macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#me">me</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-measurement-units">measurement units</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-measurements">measurements</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-measurements_002c-specifying-safely">measurements, specifying safely</a>:</td><td> </td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-metrics_002c-font">metrics, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minimal-inter_002dword-spacing">minimal inter-word spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minimum-operator">minimum operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minimum-value-representable-with-Roman-numerals">minimum value representable with Roman numerals</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minor-macro-package">minor macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minor-version-number-register-_0028_002ey_0029">minor version number register (<code class="code">.y</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-minutes_002c-current-time-_0028minutes_0029">minutes, current time (<code class="code">minutes</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mm-macro-package"><code class="code">mm</code> macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#mm">mm</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode-for-constant-glyph-space-_0028cs_0029">mode for constant glyph space (<code class="code">cs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-compatibility">mode, compatibility</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-compatibility_002c-and-parameters">mode, compatibility, and parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy">mode, copy</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy-1">mode, copy</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-cf-request">mode, copy, and <code class="code">cf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-device-request">mode, copy, and <code class="code">device</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-length-request">mode, copy, and <code class="code">length</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-macro-parameters">mode, copy, and macro parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-output-request">mode, copy, and <code class="code">output</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-trf-request">mode, copy, and <code class="code">trf</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-write-request">mode, copy, and <code class="code">write</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-writec-request">mode, copy, and <code class="code">writec</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-writem-request">mode, copy, and <code class="code">writem</code> request</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_0021">mode, copy, and <code class="code">\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_003f">mode, copy, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_003f-1">mode, copy, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005ca">mode, copy, and <code class="code">\a</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005ct">mode, copy, and <code class="code">\t</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005cV">mode, copy, and <code class="code">\V</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill-_0028fi_0029_002c-enabling">mode, fill (<code class="code">fi</code>), enabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-break-warnings">mode, fill, and <code class="code">break</code> warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-inter_002dsentence-space">mode, fill, and inter-sentence space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-_005cc">mode, fill, and <code class="code">\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-disabling">mode, fill, disabling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-interpretation">mode, interpretation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-line_002dtabs">mode, line-tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dfill">mode, no-fill</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dfill_002c-and-_005cc">mode, no-fill, and <code class="code">\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dspace-_0028ns_0029">mode, no-space (<code class="code">ns</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-nroff">mode, <code class="code">nroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-1">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-2">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-3">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-4">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-5">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-6">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-7">mode, safer</a>:</td><td> </td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-troff">mode, <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-1">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-2">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-3">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-4">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-5">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-6">mode, unsafe</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-modifying-requests">modifying requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-modulus">modulus</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mom-macro-package"><code class="code">mom</code> macro package</a>:</td><td> </td><td class="printindex-index-section"><a href="#mom">mom</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-month-of-the-year-register-_0028mo_0029">month of the year register (<code class="code">mo</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-operators">motion operators</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quanta">motion quanta</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-horizontal">motion quantum, horizontal</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029">motion quantum, horizontal, register (<code class="code">.H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-vertical">motion quantum, vertical</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion_002c-horizontal-_0028_005ch_0029">motion, horizontal (<code class="code">\h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motion_002c-vertical-_0028_005cv_0029">motion, vertical (<code class="code">\v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-motions_002c-page">motions, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-a-font-_0028fp_0029">mounting a font (<code class="code">fp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-position">mounting position</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-position-1">mounting position</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting_002c-font_002c-automatic">mounting, font, automatic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros"><samp class="file">ms</samp> macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms">ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-accent-marks"><samp class="file">ms</samp> macros, accent marks</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-body-text"><samp class="file">ms</samp> macros, body text</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Body-Text">ms Body Text</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-creating-table-of-contents"><samp class="file">ms</samp> macros, creating table of contents</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-displays"><samp class="file">ms</samp> macros, displays</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-document-control-settings"><samp class="file">ms</samp> macros, document control settings</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-document-description"><samp class="file">ms</samp> macros, document description</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-equations"><samp class="file">ms</samp> macros, equations</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-figures"><samp class="file">ms</samp> macros, figures</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-footers"><samp class="file">ms</samp> macros, footers</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-footnotes"><samp class="file">ms</samp> macros, footnotes</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-fractional-type-sizes-in"><samp class="file">ms</samp> macros, fractional type sizes in</a>:</td><td> </td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&T ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-general-structure"><samp class="file">ms</samp> macros, general structure</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Document-Structure">ms Document Structure</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-groff-differences-from-AT_0026T"><samp class="file">ms</samp> macros, <code class="code">groff</code> differences from <abbr class="acronym">AT&T</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&T ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-headers"><samp class="file">ms</samp> macros, headers</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-headings"><samp class="file">ms</samp> macros, headings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-keeps"><samp class="file">ms</samp> macros, keeps</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-language"><samp class="file">ms</samp> macros, language</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-lists"><samp class="file">ms</samp> macros, lists</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-localization"><samp class="file">ms</samp> macros, localization</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-margins"><samp class="file">ms</samp> macros, margins</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Margins">ms Margins</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-multiple-columns"><samp class="file">ms</samp> macros, multiple columns</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-naming-conventions"><samp class="file">ms</samp> macros, naming conventions</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Naming-Conventions">ms Naming Conventions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-nested-lists"><samp class="file">ms</samp> macros, nested lists</a>:</td><td> </td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-obtaining-typographical-symbols"><samp class="file">ms</samp> macros, obtaining typographical symbols</a>:</td><td> </td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-page-layout"><samp class="file">ms</samp> macros, page layout</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Page-Layout">ms Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-paragraph-handling"><samp class="file">ms</samp> macros, paragraph handling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-references"><samp class="file">ms</samp> macros, references</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-special-characters"><samp class="file">ms</samp> macros, special characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-strings"><samp class="file">ms</samp> macros, strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-tables"><samp class="file">ms</samp> macros, tables</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-text-settings"><samp class="file">ms</samp> macros, text settings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Text-settings-in-ms">Text settings in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dfile-documents">multi-file documents</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dline-strings">multi-line strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dpage-table-example-_005bms_005d">multi-page table example [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-multiple-columns-_005bms_005d">multiple columns [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-multiplication">multiplication</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-n-scaling-unit"><code class="code">n</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings">name space, common, of macros, diversions, and strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-background-color_002c-register-_0028_002eM_0029">name, background color, register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-fill-color_002c-register-_0028_002eM_0029">name, fill color, register (<code class="code">.M</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-stroke-color_002c-register-_0028_002em_0029">name, stroke color, register (<code class="code">.m</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-named-character-_0028_005cC_0029">named character (<code class="code">\C</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-names_002c-long">names, long</a>:</td><td> </td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-naming-conventions_002c-ms-macros">naming conventions, <samp class="file">ms</samp> macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Naming-Conventions">ms Naming Conventions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ne-request_002c-and-the-_002etrunc-register"><code class="code">ne</code> request, and the <code class="code">.trunc</code> register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ne-request_002c-comparison-with-sv"><code class="code">ne</code> request, comparison with <code class="code">sv</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-negating-register-values">negating register values</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-negation">negation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-assignments">nested assignments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-diversions">nested diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-lists-_005bms_005d">nested lists [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nesting-level_002c-suppression_002c-register">nesting level, suppression, register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-new-page-_0028bp_0029">new page (<code class="code">bp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-newline-character_002c-and-translations">newline character, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-newline-character_002c-in-strings_002c-escaping">newline character, in strings, escaping</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-newline_002c-as-delimiter">newline, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-newline_002c-final_002c-stripping-in-diversions">newline, final, stripping in diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-next-file_002c-processing-_0028nx_0029">next file, processing (<code class="code">nx</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-next-free-font-position-register-_0028_002efp_0029">next free font position register (<code class="code">.fp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-next-page-number-register-_0028_002epn_0029">next page number register (<code class="code">.pn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-next-page-number_002c-configuring-_0028pn_0029">next page number, configuring (<code class="code">pn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nf-request_002c-causing-implicit-break"><code class="code">nf</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nl-register_002c-and-_002ed"><code class="code">nl</code> register, and <code class="code">.d</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nl-register_002c-difference-from-_002eh"><code class="code">nl</code> register, difference from <code class="code">.h</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nm-request_002c-using-_002b-and-_002d-with"><code class="code">nm</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dbreak-control-character-_0028_0027_0029">no-break control character (<code class="code">'</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dbreak-control-character_002c-changing-_0028c2_0029">no-break control character, changing (<code class="code">c2</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dfill-mode">no-fill mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dfill-mode_002c-and-_005cc">no-fill mode, and <code class="code">\c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dspace-mode-_0028ns_0029">no-space mode (<code class="code">ns</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-node_002c-output">node, output</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dprinting-break-point-_0028_005c_003a_0029">non-printing break point (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-request_002c-and-warnings"><code class="code">nr</code> request, and warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-request_002c-using-_002b-and-_002d-with"><code class="code">nr</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-nroff-mode"><code class="code">nroff</code> mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-number-formats_002c-assigning-to-register-_0028af_0029">number formats, assigning to register (<code class="code">af</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-number-of-registers-register-_0028_002eR_0029">number of registers register (<code class="code">.R</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-number_002c-input-line_002c-setting-_0028lf_0029">number, input line, setting (<code class="code">lf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-number_002c-page_002c-next_002c-configuring-_0028pn_0029">number, page, next, configuring (<code class="code">pn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-glyph-_0028_005cN_0029">numbered glyph (<code class="code">\N</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-glyph-_0028_005cN_0029-1">numbered glyph (<code class="code">\N</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-list_002c-example-markup-_005bms_005d">numbered list, example markup [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numbers_002c-line_002c-printing-_0028nm_0029">numbers, line, printing (<code class="code">nm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numeral_002dwidth-space-_0028_005c0_0029">numeral-width space (<code class="code">\0</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numerals_002c-as-delimiters">numerals, as delimiters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numerals_002c-Roman">numerals, Roman</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numeric-expression_002c-valid">numeric expression, valid</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-numeric-expressions">numeric expressions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-object-creation">object creation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-offset_002c-page">offset, page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-offset_002c-page-_0028po_0029">offset, page (<code class="code">po</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-open-request_002c-and-safer-mode"><code class="code">open</code> request, and safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opena-request_002c-and-safer-mode"><code class="code">opena</code> request, and safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opening-brace-escape-sequence-_0028_005c_007d_0029">opening brace escape sequence (<code class="code">\}</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-opening-file-_0028open_0029">opening file (<code class="code">open</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operator_002c-scaling">operator, scaling</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-arithmetic">operators, arithmetic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-as-delimiters">operators, as delimiters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-comparison">operators, comparison</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029">operators, extremum (<code class="code">>?</code>, <code class="code"><?</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-logical">operators, logical</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-motion">operators, motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-unary-arithmetic">operators, unary arithmetic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-optical-size-of-a-font">optical size of a font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-options">options</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-order-of-evaluation-in-expressions">order of evaluation in expressions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ordinary-character">ordinary character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-orientation_002c-landscape">orientation, landscape</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-orphan">orphan</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-orphan-lines_002c-preventing-with-ne">orphan lines, preventing with <code class="code">ne</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-os-request_002c-and-no_002dspace-mode"><code class="code">os</code> request, and no-space mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">outlined circle, drawing (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">outlined ellipse, drawing (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">outlined polygon, drawing (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-and-input-requests">output and input requests</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-comparison-operator">output comparison operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029">output device name string (<code class="code">.T</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029-1">output device name string (<code class="code">.T</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations">output device name string (<code class="code">.T</code>), in other implementations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-usage-register-_0028_002eT_0029">output device usage register (<code class="code">.T</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff">output device usage register (<code class="code">.T</code>), incompatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-devices">output devices</a>:</td><td> </td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-ASCII">output encoding, <abbr class="acronym">ASCII</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-code-page-1047">output encoding, code page 1047</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-EBCDIC">output encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-ISO-646">output encoding, ISO 646</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">output encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-UTF_002d8">output encoding, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">output glyphs, and input characters, compatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-break">output line break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-number-register-_0028ln_0029">output line number register (<code class="code">ln</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-properties">output line properties</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line_002c-continuation-_0028_005cc_0029">output line, continuation (<code class="code">\c</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029">output line, horizontal position, register (<code class="code">.k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-node">output node</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-request_002c-and-copy-mode"><code class="code">output</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output-request_002c-and-_005c_0021"><code class="code">output</code> request, and <code class="code">\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-filling_002c-disablement-of-_0028nf_0029">output, filling, disablement of (<code class="code">nf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-filling_002c-enablement-of-_0028fi_0029">output, filling, enablement of (<code class="code">fi</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-flush-_0028fl_0029">output, flush (<code class="code">fl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-gtroff">output, <code class="code">gtroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-intermediate">output, intermediate</a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-suppressing-_0028_005cO_0029">output, suppressing (<code class="code">\O</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent-_0028cf_002c-trf_0029">output, transparent (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029">output, transparent (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff">output, transparent, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-troff">output, <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-overlapping-characters">overlapping characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-overstriking-glyphs-_0028_005co_0029">overstriking glyphs (<code class="code">\o</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-P">P</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-p-scaling-unit"><code class="code">p</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-P-scaling-unit"><code class="code">P</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro">package, macro</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Packages">Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-auxiliary">package, macro, auxiliary</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-full_002dservice">package, macro, full-service</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-introduction">package, macro, introduction</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Package-Intro">Macro Package Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-major">package, macro, major</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-minor">package, macro, minor</a>:</td><td> </td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-search-path">package, macro, search path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-package_002c-structuring-the-source-of">package, package, structuring the source of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-padding-character_002c-for-fields-_0028fc_0029">padding character, for fields (<code class="code">fc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page">page</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break">page break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-1">page break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-2">page break</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-_0028introduction_0029">page break (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-conditional-_0028ne_0029">page break, conditional (<code class="code">ne</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-final">page break, final</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-prevented-by-vpt">page break, prevented by <code class="code">vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-control">page control</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection">page ejection</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-1">page ejection</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-2">page ejection</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-status-register-_0028_002epe_0029">page ejection status register (<code class="code">.pe</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection_002c-of-final-page">page ejection, of final page</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection_002c-prevented-by-vpt">page ejection, prevented by <code class="code">vpt</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-footers">page footers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-headers">page headers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-layout">page layout</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-layout-_005bms_005d">page layout [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Page-Layout">ms Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-length-register-_0028_002ep_0029">page length register (<code class="code">.p</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-length_002c-configuring-_0028pl_0029">page length, configuring (<code class="code">pl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location-traps">page location traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location-traps_002c-debugging">page location traps, debugging</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location_002c-vertical_002c-marking-_0028mk_0029">page location, vertical, marking (<code class="code">mk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029">page location, vertical, returning to marked (<code class="code">rt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-motions">page motions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-character-_0028_0025_0029">page number character (<code class="code">%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-character_002c-changing-_0028pc_0029">page number character, changing (<code class="code">pc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-register-_0028_0025_0029">page number register (<code class="code">%</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number_002c-configuring-next-_0028pn_0029">page number, configuring next (<code class="code">pn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number_002c-next_002c-register-_0028_002epn_0029">page number, next, register (<code class="code">.pn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-offset">page offset</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-offset-_0028po_0029">page offset (<code class="code">po</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page-orientation_002c-landscape">page orientation, landscape</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page_002c-geometry-of">page, geometry of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-page_002c-new-_0028bp_0029">page, new (<code class="code">bp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-paper-format">paper format</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-paper-size">paper size</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-paragraphs">paragraphs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-parameter-count-register-_0028_002e_0024_0029">parameter count register (<code class="code">.$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters">parameters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters_002c-and-compatibility-mode">parameters, and compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters_002c-macro-_0028_005c_0024_0029">parameters, macro (<code class="code">\$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-parentheses">parentheses</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-partially-collected-line">partially collected line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-path_002c-for-font-files">path, for font files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-path_002c-for-tmac-files">path, for tmac files</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pattern-files_002c-for-hyphenation">pattern files, for hyphenation</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-patterns-for-hyphenation-_0028hpf_0029">patterns for hyphenation (<code class="code">hpf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pending-output-line">pending output line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-and-groff"><code class="code">pi</code> request, and <code class="code">groff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-and-safer-mode"><code class="code">pi</code> request, and safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-disabled-by-default"><code class="code">pi</code> request, disabled by default</a>:</td><td> </td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pica-scaling-unit-_0028P_0029">pica scaling unit (<code class="code">P</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PID-of-GNU-troff-register-_0028_0024_0024_0029">PID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pile_002c-glyph-_0028_005cb_0029">pile, glyph (<code class="code">\b</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pl-request_002c-using-_002b-and-_002d-with"><code class="code">pl</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-plain-text-approximation-output-register-_0028_002eA_0029">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-plain-text-approximation-output-register-_0028_002eA_0029-1">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-planting-a-trap">planting a trap</a>:</td><td> </td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-platform_002dspecific-directory">platform-specific directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pm-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">pm</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pn-request_002c-using-_002b-and-_002d-with"><code class="code">pn</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PNG-image-generation-from-PostScript">PNG image generation from PostScript</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-po-request_002c-using-_002b-and-_002d-with"><code class="code">po</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-scaling-unit-_0028p_0029">point scaling unit (<code class="code">p</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-size-registers-_0028_002es_002c-_002eps_0029">point size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">point size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029">point sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-fractional">point sizes, fractional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-fractional-1">point sizes, fractional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, filled, drawing (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, outlined, drawing (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, solid, drawing (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, stroked, drawing (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position-of-lowest-text-line-_0028_002eh_0029">position of lowest text line (<code class="code">.h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029">position, absolute <i class="slanted">(sic)</i> operator (<code class="code">|</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-drawing">position, drawing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029">position, horizontal input line, saving (<code class="code">\k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029">position, horizontal, in input line, register (<code class="code">hp</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029">position, horizontal, in output line, register (<code class="code">.k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-mounting">position, mounting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029">position, vertical, in diversion, register (<code class="code">.d</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-positions_002c-font">positions, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing">post-vertical line spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing-register-_0028_002epvs_0029">post-vertical line spacing register (<code class="code">.pvs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029">post-vertical line spacing, changing (<code class="code">pvs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-postprocessor-access">postprocessor access</a>:</td><td> </td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-postprocessors">postprocessors</a>:</td><td> </td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PostScript_002c-bounding-box">PostScript, bounding box</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-PostScript_002c-PNG-image-generation">PostScript, PNG image generation</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-prefix_002c-for-commands">prefix, for commands</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-preprocessors">preprocessors</a>:</td><td> </td><td class="printindex-index-section"><a href="#Preprocessor-Intro">Preprocessor Intro</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-font_002c-selecting-_0028ft_0029">previous font, selecting (<code class="code">ft</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">previous font, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-line-length-_0028_002en_0029">previous line length (<code class="code">.n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-print-current-page-register-_0028_002eP_0029">print current page register (<code class="code">.P</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">printing backslash (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-line-numbers-_0028nm_0029">printing line numbers (<code class="code">nm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029">printing to stderr (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029">process ID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-processing-next-file-_0028nx_0029">processing next file (<code class="code">nx</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-productive-input-line">productive input line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-characters-_0028cflags_0029">properties of characters (<code class="code">cflags</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-glyphs-_0028cflags_0029">properties of glyphs (<code class="code">cflags</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-output-lines">properties of output lines</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-and-constant-glyph-space-mode"><code class="code">ps</code> request, and constant glyph space mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ps</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-using-_002b-and-_002d-with"><code class="code">ps</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-with-fractional-type-sizes"><code class="code">ps</code> request, with fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pso-request_002c-and-safer-mode"><code class="code">pso</code> request, and safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-pvs-request_002c-using-_002b-and-_002d-with"><code class="code">pvs</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-Q">Q</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-quanta_002c-motion">quanta, motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-quantum_002c-horizontal-motion">quantum, horizontal motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-quantum_002c-vertical-motion">quantum, vertical motion</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-radicalex-glyph_002c-and-cflags"><code class="code">radicalex</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ragged_002dleft-text">ragged-left text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ragged_002dright-text">ragged-right text</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rc-request_002c-and-glyph-definitions"><code class="code">rc</code> request, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff">read-only register removal, incompatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-read_002donly-register_002c-changing-format">read-only register, changing format</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-reading-from-standard-input-_0028rd_0029">reading from standard input (<code class="code">rd</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-recursive-macros">recursive macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"><code class="code">refer</code>, and macro names starting with <code class="code">[</code> or <code class="code">]</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-reference_002c-gtroff">reference, <code class="code">gtroff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#GNU-troff-Reference">GNU troff Reference</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-references-_005bms_005d">references [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register-format_002c-in-expressions">register format, in expressions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-assigning-number-format-to-_0028af_0029">register, assigning number format to (<code class="code">af</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-built_002din_002c-removing">register, built-in, removing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-creating-alias-for-_0028aln_0029">register, creating alias for (<code class="code">aln</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-format-_0028_005cg_0029">register, format (<code class="code">\g</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff">register, read-only, removal, incompatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-removing-_0028rr_0029">register, removing (<code class="code">rr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-removing-alias-for-_0028rr_0029">register, removing alias for (<code class="code">rr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-renaming-_0028rnn_0029">register, renaming (<code class="code">rnn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers">registers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Registers">Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-built_002din">registers, built-in</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-dumping-_0028pnr_0029">registers, dumping (<code class="code">pnr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-interpolating-_0028_005cn_0029">registers, interpolating (<code class="code">\n</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-number-of_002c-register-_0028_002eR_0029">registers, number of, register (<code class="code">.R</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-setting-_0028nr_002c-_005cR_0029">registers, setting (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff">removal of read-only registers, incompatibility with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-a-built_002din-register">removing a built-in register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-a-register-_0028rr_0029">removing a register (<code class="code">rr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias-for-register-_0028rr_0029">removing alias for register (<code class="code">rr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-diversion-_0028rm_0029">removing alias, for diversion (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-macro-_0028rm_0029">removing alias, for macro (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-string-_0028rm_0029">removing alias, for string (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-diversion-_0028rm_0029">removing diversion (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-glyph-definition-_0028rchar_002c-rfschar_0029">removing glyph definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-macro-_0028rm_0029">removing macro (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-request-_0028rm_0029">removing request (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-string-_0028rm_0029">removing string (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-a-register-_0028rnn_0029">renaming a register (<code class="code">rnn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-diversion-_0028rn_0029">renaming diversion (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-macro-_0028rn_0029">renaming macro (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-request-_0028rn_0029">renaming request (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-string-_0028rn_0029">renaming string (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-renditions_002c-graphic">renditions, graphic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request">request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request-1">request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments">request arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments_002c-and-compatibility-mode">request arguments, and compatibility mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments_002c-and-tabs">request arguments, and tabs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-removing-_0028rm_0029">request, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-renaming-_0028rn_0029">request, renaming (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-undefined">request, undefined</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-requests-for-drawing">requests for drawing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-requests-for-input-and-output">requests for input and output</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-intercepting">requests, intercepting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-invoking">requests, invoking</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-modifying">requests, modifying</a>:</td><td> </td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device">resolution, device</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device-1">resolution, device</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device_002c-obtaining-in-the-formatter">resolution, device, obtaining in the formatter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-horizontal">resolution, horizontal</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-horizontal_002c-register-_0028_002eH_0029">resolution, horizontal, register (<code class="code">.H</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-vertical">resolution, vertical</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-returning-to-marked-vertical-page-location-_0028rt_0029">returning to marked vertical page location (<code class="code">rt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-revision-number-register-_0028_002eY_0029">revision number register (<code class="code">.Y</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-right-margin">right margin</a>:</td><td> </td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002daligning-lines-_0028introduction_0029">right-aligning lines (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002djustifying-_0028rj_0029">right-justifying (<code class="code">rj</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002djustifying-lines-_0028introduction_0029">right-justifying lines (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rivers">rivers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rj-request_002c-causing-implicit-break"><code class="code">rj</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rn-glyph_002c-and-cflags"><code class="code">rn</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029">roman glyph, correction after italic glyph (<code class="code">\/</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029">roman glyph, correction before italic glyph (<code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Roman-numerals">Roman numerals</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029">Roman numerals, extrema (maximum and minimum)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rq-glyph_002c-at-end-of-sentence"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rq-glyph_002c-at-end-of-sentence-1"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-rt-request_002c-using-_002b-and-_002d-with"><code class="code">rt</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ru-glyph_002c-and-cflags"><code class="code">ru</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-running-system-commands">running system commands</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-S">S</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-s-scaling-unit"><code class="code">s</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-1">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-2">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-3">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-4">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-5">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-6">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-7">safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-saving-horizontal-input-line-position-_0028_005ck_0029">saving horizontal input line position (<code class="code">\k</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-indicator">scaling indicator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-operator">scaling operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-c">scaling unit <code class="code">c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-f">scaling unit <code class="code">f</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-i">scaling unit <code class="code">i</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-m">scaling unit <code class="code">m</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-M">scaling unit <code class="code">M</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-n">scaling unit <code class="code">n</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-p">scaling unit <code class="code">p</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-P">scaling unit <code class="code">P</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-s">scaling unit <code class="code">s</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-u">scaling unit <code class="code">u</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-v">scaling unit <code class="code">v</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-z">scaling unit <code class="code">z</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-searching-fonts">searching fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-searching-macros">searching macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-seconds_002c-current-time-_0028seconds_0029">seconds, current time (<code class="code">seconds</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-selecting-the-previous-font-_0028ft_0029">selecting the previous font (<code class="code">ft</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sentence-space">sentence space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sentence-space-size-register-_0028_002esss_0029">sentence space size register (<code class="code">.sss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sentences">sentences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sequence_002c-escape">sequence, escape</a>:</td><td> </td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-diversion-trap-_0028dt_0029">setting diversion trap (<code class="code">dt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-end_002dof_002dinput-trap-_0028em_0029">setting end-of-input trap (<code class="code">em</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-input-line-number-_0028lf_0029">setting input line number (<code class="code">lf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-input-line-trap-_0028it_002c-itc_0029">setting input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-registers-_0028nr_002c-_005cR_0029">setting registers (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-the-page-length-_0028pl_0029">setting the page length (<code class="code">pl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-up-an-abstract-font-style-_0028sty_0029">setting up an abstract font style (<code class="code">sty</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-shc-request_002c-and-translations"><code class="code">shc</code> request, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-site_002dlocal-directory">site-local directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-site_002dlocal-directory-1">site-local directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-size-of-sentence-space-register-_0028_002esss_0029">size of sentence space register (<code class="code">.sss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-size-of-word-space-register-_0028_002ess_0029">size of word space register (<code class="code">.ss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-optical_002c-of-a-font">size, optical, of a font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-paper">size, paper</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-size">size, size</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes_002c-fractional">sizes, fractional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes_002c-fractional-type">sizes, fractional type</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-skew_002c-of-last-glyph-_0028_002ecsk_0029">skew, of last glyph (<code class="code">.csk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-slant_002c-font_002c-changing-_0028_005cS_0029">slant, font, changing (<code class="code">\S</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-soft-hyphen-character_002c-setting-_0028shc_0029">soft hyphen character, setting (<code class="code">shc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-soft-hyphen-glyph-_0028hy_0029">soft hyphen glyph (<code class="code">hy</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">solid circle, drawing (‘<samp class="samp">\D'C …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">solid ellipse, drawing (‘<samp class="samp">\D'E …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">solid polygon, drawing (‘<samp class="samp">\D'P …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable"><code>SOURCE_DATE_EPOCH<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sp-request_002c-and-no_002dspace-mode"><code class="code">sp</code> request, and no-space mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sp-request_002c-causing-implicit-break"><code class="code">sp</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-sentences">space between sentences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-sentences-register-_0028_002esss_0029">space between sentences register (<code class="code">.sss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-words-register-_0028_002ess_0029">space between words register (<code class="code">.ss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space-character_002c-as-delimiter">space character, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space-characters_002c-in-expressions">space characters, in expressions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-between-sentences">space, between sentences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-between-words">space, between words</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-discardable_002c-horizontal">space, discardable, horizontal</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-hair-_0028_005c_005e_0029">space, hair (<code class="code">\^</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-horizontal-_0028_005ch_0029">space, horizontal (<code class="code">\h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-horizontal_002c-unformatting">space, horizontal, unformatting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-thin-_0028_005c_007c_0029">space, thin (<code class="code">\|</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-unbreakable-_0028_005c_007e_0029">space, unbreakable (<code class="code">\~</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029">space, unbreakable and unadjustable (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-vertical_002c-unit-_0028v_0029">space, vertical, unit (<code class="code">v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029">space, width of a digit (numeral) (<code class="code">\0</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces-with-ds">spaces with <code class="code">ds</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces_002c-in-a-macro-argument">spaces, in a macro argument</a>:</td><td> </td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces_002c-leading-and-trailing">spaces, leading and trailing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing-_0028introduction_0029">spacing (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-manipulating">spacing, manipulating</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical">spacing, vertical</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical-1">spacing, vertical</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical-_0028introduction_0029">spacing, vertical (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters">special characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters-1">special characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters-_005bms_005d">special characters [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">special characters, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-font">special font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts">special fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts-1">special fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts-2">special fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts_002c-emboldening">special fonts, emboldening</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-request_002c-and-font-translations"><code class="code">special</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-special-request_002c-and-glyph-search-order"><code class="code">special</code> request, and glyph search order</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029">spline, drawing (‘<samp class="samp">\D'~ …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-springing-a-trap">springing a trap</a>:</td><td> </td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sqrtex-glyph_002c-and-cflags"><code class="code">sqrtex</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ss-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ss</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stack">stack</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stacking-glyphs-_0028_005cb_0029">stacking glyphs (<code class="code">\b</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-standard-input_002c-reading-from-_0028rd_0029">standard input, reading from (<code class="code">rd</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029">stderr, printing to (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stops_002c-tab">stops, tab</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string-arguments">string arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string-comparison">string comparison</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string-expansion-_0028_005c_002a_0029">string expansion (<code class="code">\*</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string-interpolation-_0028_005c_002a_0029">string interpolation (<code class="code">\*</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-appending-_0028as_0029">string, appending (<code class="code">as</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-creating-alias-for-_0028als_0029">string, creating alias for (<code class="code">als</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-length-of-_0028length_0029">string, length of (<code class="code">length</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-removing-_0028rm_0029">string, removing (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-removing-alias-for-_0028rm_0029">string, removing alias for (<code class="code">rm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-renaming-_0028rn_0029">string, renaming (<code class="code">rn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-strings">strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-strings-_005bms_005d">strings [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-strings_002c-multi_002dline">strings, multi-line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-strings_002c-shared-name-space-with-macros-and-diversions">strings, shared name space with macros and diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stripping-final-newline-in-diversions">stripping final newline in diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stroke-color">stroke color</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stroke-color-name-register-_0028_002em_0029">stroke color name register (<code class="code">.m</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">stroked circle, drawing (‘<samp class="samp">\D'c …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">stroked ellipse, drawing (‘<samp class="samp">\D'e …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">stroked polygon, drawing (‘<samp class="samp">\D'p …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-structuring-source-code-of-documents-or-macro-packages">structuring source code of documents or macro packages</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sty-request_002c-and-changing-fonts"><code class="code">sty</code> request, and changing fonts</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sty-request_002c-and-font-translations"><code class="code">sty</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font">style, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font_002c-abstract">style, font, abstract</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029">style, font, abstract, setting up (<code class="code">sty</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-styles_002c-font">styles, font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-substring-_0028substring_0029">substring (<code class="code">substring</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-subtraction">subtraction</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-suppressing-output-_0028_005cO_0029">suppressing output (<code class="code">\O</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-suppression-nesting-level-register">suppression nesting level register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sv-request_002c-and-no_002dspace-mode"><code class="code">sv</code> request, and no-space mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-switching-environments-_0028ev_0029">switching environments (<code class="code">ev</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sy-request_002c-and-safer-mode"><code class="code">sy</code> request, and safer mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-sy-request_002c-disabled-by-default"><code class="code">sy</code> request, disabled by default</a>:</td><td> </td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol">symbol</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol-table_002c-dumping-_0028pm_0029">symbol table, dumping (<code class="code">pm</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol_002c-defining-_0028char_0029">symbol, defining (<code class="code">char</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-symbols_002c-using">symbols, using</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-system-commands_002c-running">system commands, running</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-system_0028_0029-return-value-register-_0028systat_0029"><code class="code">system()</code> return value register (<code class="code">systat</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character">tab character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character-encoding">tab character encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-and-translations">tab character, and translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-as-delimiter">tab character, as delimiter</a>:</td><td> </td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029">tab character, non-interpreted (<code class="code">\t</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-repetition-character-_0028tc_0029">tab repetition character (<code class="code">tc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stop-settings-register-_0028_002etabs_0029">tab stop settings register (<code class="code">.tabs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stops">tab stops</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stops_002c-default">tab stops, default</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tab_002c-line_002dtabs-mode">tab, line-tabs mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents">table of contents</a>:</td><td> </td><td class="printindex-index-section"><a href="#Table-of-Contents">Table of Contents</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents-1">table of contents</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents_002c-creating-_005bms_005d">table of contents, creating [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-table_002c-multi_002dpage_002c-example-_005bms_005d">table, multi-page, example [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tables-_005bms_005d">tables [<samp class="file">ms</samp>]</a>:</td><td> </td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-fields">tabs, and fields</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-macro-arguments">tabs, and macro arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-request-arguments">tabs, and request arguments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-before-comments">tabs, before comments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tagged-paragraphs">tagged paragraphs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tags_002c-paragraph">tags, paragraph</a>:</td><td> </td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-terminal_002c-conditional-output-for">terminal, conditional output for</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text-baseline">text baseline</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text-baseline-1">text baseline</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text-font">text font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text-line">text line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text-line_002c-position-of-lowest-_0028_002eh_0029">text line, position of lowest (<code class="code">.h</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-GNU-troff-processing">text, GNU <code class="code">troff</code> processing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Text">Text</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-justifying">text, justifying</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-justifying-_0028rj_0029">text, justifying (<code class="code">rj</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029">thickness of lines (‘<samp class="samp">\D't …'</samp>’)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-thin-space-_0028_005c_007c_0029">thin space (<code class="code">\|</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-three_002dpart-title-_0028tl_0029">three-part title (<code class="code">tl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ti-request_002c-causing-implicit-break"><code class="code">ti</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ti-request_002c-using-_002b-and-_002d-with"><code class="code">ti</code> request, using <code class="code">+</code> and <code class="code">-</code> with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-hours-_0028hours_0029">time, current, hours (<code class="code">hours</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-minutes-_0028minutes_0029">time, current, minutes (<code class="code">minutes</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-seconds-_0028seconds_0029">time, current, seconds (<code class="code">seconds</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-formatting">time, formatting</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-title-length_002c-configuring-_0028lt_0029">title length, configuring (<code class="code">lt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-title-line-length-register-_0028_002elt_0029">title line length register (<code class="code">.lt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-title-line_002c-formatting-_0028tl_0029">title line, formatting (<code class="code">tl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-titles">titles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-and-font-styles"><code class="code">tkf</code> request, and font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-and-font-translations"><code class="code">tkf</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-with-fractional-type-sizes"><code class="code">tkf</code> request, with fractional type sizes</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tl-request_002c-and-mc"><code class="code">tl</code> request, and <code class="code">mc</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tmac_002c-directory">tmac, directory</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tmac_002c-path">tmac, path</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TMPDIR_002c-environment-variable"><code>TMPDIR<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-token_002c-input">token, input</a>:</td><td> </td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-top-margin">top margin</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion">top-level diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-bp">top-level diversion, and <code class="code">bp</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-_005c_0021">top-level diversion, and <code class="code">\!</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-_005c_003f">top-level diversion, and <code class="code">\?</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-and-glyph-definitions"><code class="code">tr</code> request, and glyph definitions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-and-soft-hyphen-character"><code class="code">tr</code> request, and soft hyphen character</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">tr</code> request, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-track-kerning">track kerning</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-track-kerning_002c-activating-_0028tkf_0029">track kerning, activating (<code class="code">tkf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-double-quotes-in-strings">trailing double quotes in strings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-spaces-in-string-definitions-and-appendments">trailing spaces in string definitions and appendments</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-spaces-on-text-lines">trailing spaces on text lines</a>:</td><td> </td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-translations-of-characters">translations of characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-characters">transparent characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-dummy-character-_0028_005c_0029_0029">transparent dummy character (<code class="code">\)</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output-_0028cf_002c-trf_0029">transparent output (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029">transparent output (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output_002c-incompatibilities-with-AT_0026T-troff">transparent output, incompatibilities with <abbr class="acronym">AT&T</abbr> <code class="code">troff</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap">trap</a>:</td><td> </td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-changing-location-_0028ch_0029">trap, changing location (<code class="code">ch</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029">trap, distance to next vertical position, register (<code class="code">.t</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-diversion_002c-setting-_0028dt_0029">trap, diversion, setting (<code class="code">dt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029">trap, end-of-input, setting (<code class="code">em</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-implicit">trap, implicit</a>:</td><td> </td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029">trap, input line, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029">trap, input line, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-planting">trap, planting</a>:</td><td> </td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-springing">trap, springing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps">traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-and-diversions">traps, and diversions</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-blank-line">traps, blank line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-diversion">traps, diversion</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-end_002dof_002dinput">traps, end-of-input</a>:</td><td> </td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-input-line">traps, input line</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029">traps, input line, and interrupted lines (<code class="code">itc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-leading-space">traps, leading space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location">traps, page location</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location_002c-dumping-_0028ptr_0029">traps, page location, dumping (<code class="code">ptr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location_002c-listing-_0028ptr_0029">traps, page location, listing (<code class="code">ptr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-sprung-by-bp-request-_0028_002epe_0029">traps, sprung by <code class="code">bp</code> request (<code class="code">.pe</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-vertical-position">traps, vertical position</a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-and-copy-mode"><code class="code">trf</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-and-invalid-characters"><code class="code">trf</code> request, and invalid characters</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-causing-implicit-break"><code class="code">trf</code> request, causing implicit break</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-trin-request_002c-and-asciify"><code class="code">trin</code> request, and <code class="code">asciify</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troff-mode"><code class="code">troff</code> mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-troff-output"><code class="code">troff</code> output</a>:</td><td> </td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-truncated-vertical-space-register-_0028_002etrunc_0029">truncated vertical space register (<code class="code">.trunc</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-truncating-division">truncating division</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TTY_002c-conditional-output-for">TTY, conditional output for</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-tutorial-for-macro-users">tutorial for macro users</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size">type size</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size-registers-_0028_002es_002c-_002eps_0029">type size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">type size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029">type sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-fractional">type sizes, fractional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-fractional-1">type sizes, fractional</a>:</td><td> </td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-typeface">typeface</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-TZ_002c-environment-variable"><code>TZ<span class="r">, environment variable</span></code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-U">U</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-u-scaling-unit"><code class="code">u</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-uf-request_002c-and-font-styles"><code class="code">uf</code> request, and font styles</a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ul-glyph_002c-and-cflags"><code class="code">ul</code> glyph, and <code class="code">cflags</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-ul-request_002c-and-font-translations"><code class="code">ul</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Ultrix_002dspecific-man-macros">Ultrix-specific <code class="code">man</code> macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unadjustable-and-unbreakable-space-_0028_005cSP_0029">unadjustable and unbreakable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unary-arithmetic-operators">unary arithmetic operators</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unbreakable-and-unadjustable-space-_0028_005cSP_0029">unbreakable and unadjustable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unbreakable-space-_0028_005c_007e_0029">unbreakable space (<code class="code">\~</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-undefined-identifiers">undefined identifiers</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-undefined-request">undefined request</a>:</td><td> </td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-underline-font-_0028uf_0029">underline font (<code class="code">uf</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-underlining-_0028ul_0029">underlining (<code class="code">ul</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-underlining_002c-continuous-_0028cu_0029">underlining, continuous (<code class="code">cu</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unformatting-diversions-_0028asciify_0029">unformatting diversions (<code class="code">asciify</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unformatting-horizontal-space">unformatting horizontal space</a>:</td><td> </td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Unicode">Unicode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-Unicode-1">Unicode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-c">unit, scaling, <code class="code">c</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-f">unit, scaling, <code class="code">f</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-i">unit, scaling, <code class="code">i</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-m">unit, scaling, <code class="code">m</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-M">unit, scaling, <code class="code">M</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-n">unit, scaling, <code class="code">n</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-p">unit, scaling, <code class="code">p</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-P">unit, scaling, <code class="code">P</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-s">unit, scaling, <code class="code">s</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-u">unit, scaling, <code class="code">u</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-v">unit, scaling, <code class="code">v</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-z">unit, scaling, <code class="code">z</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-units-of-measurement">units of measurement</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-basic">units, basic</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-basic_002c-conversion-to">units, basic, conversion to</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-default">units, default</a>:</td><td> </td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-machine">units, machine</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unnamed-glyphs">unnamed glyphs</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unnamed-glyphs_002c-accessing-with-_005cN">unnamed glyphs, accessing with <code class="code">\N</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-1">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-2">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-3">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-4">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-5">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-6">unsafe mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-unstyled-font">unstyled font</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-up_002dcasing-a-string-_0028stringup_0029">up-casing a string (<code class="code">stringup</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-uppercasing-a-string-_0028stringup_0029">uppercasing a string (<code class="code">stringup</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029">upright glyph, correction after oblique glyph (<code class="code">\/</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029">upright glyph, correction before oblique glyph (<code class="code">\,</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-URLs_002c-breaking-_0028_005c_003a_0029">URLs, breaking (<code class="code">\:</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-user_0027s-macro-tutorial">user’s macro tutorial</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-user_0027s-tutorial-for-macros">user’s tutorial for macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-using-escape-sequences">using escape sequences</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-using-symbols">using symbols</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-UTF_002d8-output-encoding"><span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> output encoding</a>:</td><td> </td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-v-scaling-unit"><code class="code">v</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-valid-numeric-expression">valid numeric expression</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-value_002c-incrementing-without-changing-the-register">value, incrementing without changing the register</a>:</td><td> </td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-variables-in-environment">variables in environment</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vee">vee</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vee-scaling-unit-_0028v_0029">vee scaling unit (<code class="code">v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-version-number_002c-major_002c-register-_0028_002ex_0029">version number, major, register (<code class="code">.x</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-version-number_002c-minor_002c-register-_0028_002ey_0029">version number, minor, register (<code class="code">.y</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-drawing-position-_0028nl_0029">vertical drawing position (<code class="code">nl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-drawing-_0028_005cL_0029">vertical line drawing (<code class="code">\L</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing-register-_0028_002ev_0029">vertical line spacing register (<code class="code">.v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing_002c-changing-_0028vs_0029">vertical line spacing, changing (<code class="code">vs</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing_002c-effective-value">vertical line spacing, effective value</a>:</td><td> </td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-motion-_0028_005cv_0029">vertical motion (<code class="code">\v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-motion-quantum">vertical motion quantum</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-page-location_002c-marking-_0028mk_0029">vertical page location, marking (<code class="code">mk</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-page-location_002c-returning-to-marked-_0028rt_0029">vertical page location, returning to marked (<code class="code">rt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-in-diversion-register-_0028_002ed_0029">vertical position in diversion register (<code class="code">.d</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-trap-enable-register-_0028_002evpt_0029">vertical position trap enable register (<code class="code">.vpt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-traps">vertical position traps</a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-traps_002c-enabling-_0028vpt_0029">vertical position traps, enabling (<code class="code">vpt</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position_002c-drawing-_0028nl_0029">vertical position, drawing (<code class="code">nl</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-resolution">vertical resolution</a>:</td><td> </td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-space-unit-_0028v_0029">vertical space unit (<code class="code">v</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing">vertical spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing-1">vertical spacing</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing-_0028introduction_0029">vertical spacing (introduction)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-W">W</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warning-categories">warning categories</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warning-level-_0028warn_0029">warning level (<code class="code">warn</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warnings">warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-warnings-1">warnings</a>:</td><td> </td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-what-is-groff_003f">what is <code class="code">groff</code>?</a>:</td><td> </td><td class="printindex-index-section"><a href="#What-Is-groff_003f">What Is <code class="code">groff</code>?</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while">while</a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-and-font-translations"><code class="code">while</code> request, and font translations</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-and-the-_0021-operator"><code class="code">while</code> request, and the ‘<samp class="samp">!</samp>’ operator</a>:</td><td> </td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-confusing-with-br"><code class="code">while</code> request, confusing with <code class="code">br</code></a>:</td><td> </td><td class="printindex-index-section"><a href="#while">while</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-operators-to-use-with"><code class="code">while</code> request, operators to use with</a>:</td><td> </td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-widow">widow</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-widow-1">widow</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-width-escape-_0028_005cw_0029">width escape (<code class="code">\w</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-width_002c-of-last-glyph-_0028_002ew_0029">width, of last glyph (<code class="code">.w</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-word-space-size-register-_0028_002ess_0029">word space size register (<code class="code">.ss</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-word_002c-definition-of">word, definition of</a>:</td><td> </td><td class="printindex-index-section"><a href="#Filling">Filling</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-write-request_002c-and-copy-mode"><code class="code">write</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writec-request_002c-and-copy-mode"><code class="code">writec</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writem-request_002c-and-copy-mode"><code class="code">writem</code> request, and copy mode</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writing-macros">writing macros</a>:</td><td> </td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-writing-to-file-_0028write_002c-writec_0029">writing to file (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-Y">Y</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-year_002c-current_002c-register-_0028year_002c-yr_0029">year, current, register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th id="Concept-Index_cp_letter-Z">Z</th><td></td><td></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-z-scaling-unit"><code class="code">z</code> scaling unit</a>:</td><td> </td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr> +<tr><td></td><td class="printindex-index-entry"><a href="#index-zoom-factor-of-a-font-_0028fzoom_0029">zoom factor of a font (<code class="code">fzoom</code>)</a>:</td><td> </td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table class="cp-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>"</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b><</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>></b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a> + +<br> +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a> + +<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a> + +</td></tr></table> +</div> + + +<hr> +</div> +</div> +<div class="element-footnotes" id="SEC_Footnotes"> +<div class="nav-panel"> +<p> + [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p> +</div> +<h4 class="footnotes-heading">Footnotes</h4> + +<h5 class="footnote-body-heading"><a id="FOOT1" href="#DOCF1">(1)</a></h5> +<p>The ‘<samp class="samp">g</samp>’ prefix is +not used on all systems; see <a class="ref" href="#Invoking-groff">Invoking <code class="code">groff</code></a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT2" href="#DOCF2">(2)</a></h5> +<p>Unix and related operating systems distinguish +standard output and standard error streams <em class="emph">because</em> of +<code class="code">troff</code>: +<a class="uref" href="https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html">https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT3" href="#DOCF3">(3)</a></h5> +<p>See <a class="xref" href="#Line-Layout">Line Layout</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT4" href="#DOCF4">(4)</a></h5> +<p>Besides <code class="code">groff</code>, <code class="code">neatroff</code> is an +exception.</p> +<h5 class="footnote-body-heading"><a id="FOOT5" href="#DOCF5">(5)</a></h5> +<p>The +<code class="code">mso</code> request does not have these limitations. See <a class="xref" href="#I_002fO">I/O</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT6" href="#DOCF6">(6)</a></h5> +<p>The remainder of this chapter is based on +<cite class="cite">Writing Papers with nroff using -me</cite> by Eric P. Allman, +which is distributed with <code class="code">groff</code> as <samp class="file">meintro.me</samp>.</p> +<h5 class="footnote-body-heading"><a id="FOOT7" href="#DOCF7">(7)</a></h5> +<p>While manual <em class="emph">pages</em> are older, early ones used +macros supplanted by the <samp class="file">man</samp> package of Seventh Edition Unix +(1979). <samp class="file">ms</samp> shipped with Sixth Edition (1975) and was documented +by Mike Lesk in a Bell Labs internal memorandum.</p> +<h5 class="footnote-body-heading"><a id="FOOT8" href="#DOCF8">(8)</a></h5> +<p>defined in <a class="ref" href="#ms-Footnotes">Footnotes</a></p> +<h5 class="footnote-body-heading"><a id="FOOT9" href="#DOCF9">(9)</a></h5> +<p>Distinguish a +document title from “titles”, which are what <code class="code">roff</code> systems call +headers and footers collectively.</p> +<h5 class="footnote-body-heading"><a id="FOOT10" href="#DOCF10">(10)</a></h5> +<p>This idiosyncrasy arose through +feature accretion; for example, the <code class="code">B</code> macro in Version 6 +Unix <samp class="file">ms</samp> (1975) accepted only one argument, the text to be set in +boldface. By Version 7 (1979) it recognized a second argument; in +1990, <code class="code">groff</code> <samp class="file">ms</samp> added a “pre” argument, placing it third +to avoid breaking support for older documents.</p> +<h5 class="footnote-body-heading"><a id="FOOT11" href="#DOCF11">(11)</a></h5> +<p>“Portable Document Format Publishing with GNU +Troff”, <samp class="file">pdfmark.ms</samp> in the <code class="code">groff</code> distribution, uses this +technique.</p> +<h5 class="footnote-body-heading"><a id="FOOT12" href="#DOCF12">(12)</a></h5> +<p>Unix Version 7 <samp class="file">ms</samp>, its descendants, and GNU +<samp class="file">ms</samp> prior to <code class="code">groff</code> version 1.23.0</p> +<h5 class="footnote-body-heading"><a id="FOOT13" href="#DOCF13">(13)</a></h5> +<p>You could reset it +after each call to <code class="code">.1C</code>, <code class="code">.2C</code>, or <code class="code">.MC</code>.</p> +<h5 class="footnote-body-heading"><a id="FOOT14" href="#DOCF14">(14)</a></h5> +<p><cite class="cite">Typing Documents on the UNIX System: Using the +-ms Macros with Troff and Nroff</cite>, M. E. Lesk, Bell Laboratories, +1978</p> +<h5 class="footnote-body-heading"><a id="FOOT15" href="#DOCF15">(15)</a></h5> +<p>Register values are converted to and stored as +basic units. See <a class="xref" href="#Measurements">Measurements</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT16" href="#DOCF16">(16)</a></h5> +<p>If you redefine the <samp class="file">ms</samp> <code class="code">PT</code> macro +and desire special treatment of certain page numbers (like ‘<samp class="samp">1</samp>’), +you may need to handle a non-Arabic page number format, as <code class="code">groff</code> +<samp class="file">ms</samp>’s <code class="code">PT</code> does; see the macro package source. <code class="code">groff</code> +<samp class="file">ms</samp> aliases the <code class="code">PN</code> register to <code class="code">%</code>.</p> +<h5 class="footnote-body-heading"><a id="FOOT17" href="#DOCF17">(17)</a></h5> +<p>The removal beforehand is necessary +because <code class="code">groff</code> <samp class="file">ms</samp> aliases these macros to a diagnostic +macro, and you want to redefine the aliased name, not its target.</p> +<h5 class="footnote-body-heading"><a id="FOOT18" href="#DOCF18">(18)</a></h5> +<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT19" href="#DOCF19">(19)</a></h5> +<p><i class="slanted">Tabs</i> and <i class="slanted">leaders</i> also separate +words. <i class="slanted">Escape sequences</i> can function as word characters, word +separators, or neither—the last simply have no effect on GNU +<code class="code">troff</code>’s idea of whether an input character is within a word. +We’ll discuss all of these in due course.</p> +<h5 class="footnote-body-heading"><a id="FOOT20" href="#DOCF20">(20)</a></h5> +<p>A +well-researched jeremiad appreciated by <code class="code">groff</code> contributors on +both sides of the sentence-spacing debate can be found at +<a class="uref" href="https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324">https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT21" href="#DOCF21">(21)</a></h5> +<p>This statement oversimplifies; there are +escape sequences whose purpose is precisely to produce glyphs on the +output device, and input characters that <em class="emph">aren’t</em> part of escape +sequences can undergo a great deal of processing before getting to the +output.</p> +<h5 class="footnote-body-heading"><a id="FOOT22" href="#DOCF22">(22)</a></h5> +<p>The mnemonics for the special +characters shown here are “dagger”, “double dagger”, “right +(double) quote”, and “closing (single) quote”. See the +<cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p> +<h5 class="footnote-body-heading"><a id="FOOT23" href="#DOCF23">(23)</a></h5> +<p>“Text lines” are defined in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT24" href="#DOCF24">(24)</a></h5> +<p>“Tab” +is short for “tabulation”, revealing the term’s origin as a spacing +mechanism for table arrangement.</p> +<h5 class="footnote-body-heading"><a id="FOOT25" href="#DOCF25">(25)</a></h5> +<p>The <code class="code">\<kbd class="key">RET</kbd></code> escape sequence can alter how an +input line is classified; see <a class="ref" href="#Line-Continuation">Line Continuation</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT26" href="#DOCF26">(26)</a></h5> +<p>Argument handling in +macros is more flexible but also more complex. See <a class="xref" href="#Calling-Macros">Calling Macros</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT27" href="#DOCF27">(27)</a></h5> +<p>Some escape sequences undergo +interpolation as well.</p> +<h5 class="footnote-body-heading"><a id="FOOT28" href="#DOCF28">(28)</a></h5> +<p>GNU <code class="code">troff</code> offers additional ones. See <a class="xref" href="#Writing-Macros">Writing Macros</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT29" href="#DOCF29">(29)</a></h5> +<p>Macro files and packages +frequently define registers and strings as well.</p> +<h5 class="footnote-body-heading"><a id="FOOT30" href="#DOCF30">(30)</a></h5> +<p>The +<em class="emph">semantics</em> of certain punctuation code points have gotten stricter +with the successive standards, a cause of some frustration among man +page writers; see the <cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p> +<h5 class="footnote-body-heading"><a id="FOOT31" href="#DOCF31">(31)</a></h5> +<p>The +DVI output device defaults to using the Computer Modern (CM) fonts; +<samp class="file">ec.tmac</samp> loads the EC fonts instead, which provide Euro +‘<samp class="samp">\[Eu]</samp>’ and per mille ‘<samp class="samp">\[%0]</samp>’ glyphs.</p> +<h5 class="footnote-body-heading"><a id="FOOT32" href="#DOCF32">(32)</a></h5> +<p>Emacs: <code class="code">fill-column: 72</code>; Vim: <code class="code">textwidth=72</code></p> +<h5 class="footnote-body-heading"><a id="FOOT33" href="#DOCF33">(33)</a></h5> +<p><code class="code">groff</code> does not yet support right-to-left +scripts.</p> +<h5 class="footnote-body-heading"><a id="FOOT34" href="#DOCF34">(34)</a></h5> +<p><code class="code">groff</code>’s terminal output devices have page +offsets of zero.</p> +<h5 class="footnote-body-heading"><a id="FOOT35" href="#DOCF35">(35)</a></h5> +<p>Provision is made for interpreting and +reporting decimal fractions in certain cases.</p> +<h5 class="footnote-body-heading"><a id="FOOT36" href="#DOCF36">(36)</a></h5> +<p>If that’s not enough, see the <cite class="cite">groff_tmac<span class="r">(5)</span></cite> +man page for the <samp class="file">62bit.tmac</samp> macro package.</p> +<h5 class="footnote-body-heading"><a id="FOOT37" href="#DOCF37">(37)</a></h5> +<p>See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT38" href="#DOCF38">(38)</a></h5> +<p>Control structure syntax +creates an exception to this rule, but is designed to remain useful: +recalling our example, ‘<samp class="samp">.if 1 .Underline this</samp>’ would underline only +“this”, precisely. See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT39" href="#DOCF39">(39)</a></h5> +<p>See <a class="xref" href="#Diversions">Diversions</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT40" href="#DOCF40">(40)</a></h5> +<p>Historically, control characters like +ASCII STX, ETX, and BEL (<kbd class="key">Control+B</kbd>, <kbd class="key">Control+C</kbd>, and +<kbd class="key">Control+G</kbd>) have been observed in <code class="code">roff</code> documents, +particularly in macro packages employing them as delimiters with the +output comparison operator to try to avoid collisions with the content +of arbitrary user-supplied parameters (see <a class="pxref" href="#Operators-in-Conditionals">Operators in Conditionals</a>). We discourage this expedient; in GNU <code class="code">troff</code> it is +unnecessary (outside of compatibility mode) because delimited arguments +are parsed at a different input level than the surrounding context. +See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT41" href="#DOCF41">(41)</a></h5> +<p>Consider what happens when a C1 control +<code class="code">0x80</code>–<code class="code">0x9F</code> is necessary as a continuation byte in a UTF-8 +sequence.</p> +<h5 class="footnote-body-heading"><a id="FOOT42" href="#DOCF42">(42)</a></h5> +<p>Recall <a class="ref" href="#Identifiers">Identifiers</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT43" href="#DOCF43">(43)</a></h5> +<p>In compatibility +mode, a space is not necessary after a request or macro name of two +characters’ length. Also, Plan 9 <code class="code">troff</code> allows tabs to +separate arguments.</p> +<h5 class="footnote-body-heading"><a id="FOOT44" href="#DOCF44">(44)</a></h5> +<p><code class="code">\~</code> is fairly +portable; see <a class="ref" href="#Other-Differences">Other Differences</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT45" href="#DOCF45">(45)</a></h5> +<p>Strictly, you can neglect to +close the last quoted macro argument, relying on the end of the control +line to do so. We consider this lethargic practice poor style.</p> +<h5 class="footnote-body-heading"><a id="FOOT46" href="#DOCF46">(46)</a></h5> +<p>The omission of spaces before the comment +escape sequences is necessary; see <a class="ref" href="#Strings">Strings</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT47" href="#DOCF47">(47)</a></h5> +<p>TeX does have such a mechanism.</p> +<h5 class="footnote-body-heading"><a id="FOOT48" href="#DOCF48">(48)</a></h5> +<p>This claim may be more aspirational than descriptive.</p> +<h5 class="footnote-body-heading"><a id="FOOT49" href="#DOCF49">(49)</a></h5> +<p>See <a class="xref" href="#Conditional-Blocks">Conditional Blocks</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT50" href="#DOCF50">(50)</a></h5> +<p>Exception: auto-incrementing registers defined outside +the ignored region <em class="emph">will</em> be modified if interpolated with +<code class="code">\n±</code> inside it. See <a class="xref" href="#Auto_002dincrement">Auto-increment</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT51" href="#DOCF51">(51)</a></h5> +<p>A negative auto-increment can be +considered an “auto-decrement”.</p> +<h5 class="footnote-body-heading"><a id="FOOT52" href="#DOCF52">(52)</a></h5> +<p>GNU <code class="code">troff</code> dynamically allocates memory for +as many registers as required.</p> +<h5 class="footnote-body-heading"><a id="FOOT53" href="#DOCF53">(53)</a></h5> +<p>unless diverted; see <a class="ref" href="#Diversions">Diversions</a></p> +<h5 class="footnote-body-heading"><a id="FOOT54" href="#DOCF54">(54)</a></h5> +<p>See <a class="xref" href="#Line-Continuation">Line Continuation</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT55" href="#DOCF55">(55)</a></h5> +<p>Recall <a class="ref" href="#Filling">Filling</a> and <a class="ref" href="#Sentences">Sentences</a> for the +definitions of word and sentence boundaries, respectively.</p> +<h5 class="footnote-body-heading"><a id="FOOT56" href="#DOCF56">(56)</a></h5> +<p>Whether a perfect algorithm for this application is +even possible is an unsolved problem in computer science: +<a class="url" href="https://tug.org/docs/liang/liang-thesis.pdf">https://tug.org/docs/liang/liang-thesis.pdf</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT57" href="#DOCF57">(57)</a></h5> +<p><code class="code">\%</code> itself stops marking +hyphenation points but still produces no output glyph.</p> +<h5 class="footnote-body-heading"><a id="FOOT58" href="#DOCF58">(58)</a></h5> +<p>“Soft” because it appears in output +only where a hyphenation break is performed; a “hard” hyphen, as in +“long-term”, always appears.</p> +<h5 class="footnote-body-heading"><a id="FOOT59" href="#DOCF59">(59)</a></h5> +<p>The mode is a vector of Booleans encoded as an integer. +To a programmer, this fact is easily deduced from the exclusive use of +powers of two for the configuration parameters; they are computationally +easy to “mask off” and compare to zero. To almost everyone else, the +arrangement seems recondite and unfriendly.</p> +<h5 class="footnote-body-heading"><a id="FOOT60" href="#DOCF60">(60)</a></h5> +<p>Hyphenation is +prevented if the next page location trap is closer to the vertical +drawing position than the next text baseline would be. See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT61" href="#DOCF61">(61)</a></h5> +<p>For more on localization, see the +<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page.</p> +<h5 class="footnote-body-heading"><a id="FOOT62" href="#DOCF62">(62)</a></h5> +<p>See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT63" href="#DOCF63">(63)</a></h5> +<p>See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT64" href="#DOCF64">(64)</a></h5> +<p>or geometric objects; see <a class="ref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></p> +<h5 class="footnote-body-heading"><a id="FOOT65" href="#DOCF65">(65)</a></h5> +<p>to the top-level diversion; +see <a class="ref" href="#Diversions">Diversions</a></p> +<h5 class="footnote-body-heading"><a id="FOOT66" href="#DOCF66">(66)</a></h5> +<p>Plan 9 <code class="code">troff</code> +uses the register <code class="code">.S</code> for this purpose.</p> +<h5 class="footnote-body-heading"><a id="FOOT67" href="#DOCF67">(67)</a></h5> +<p>This is pronounced to rhyme with “feeder”, and +refers to how the glyphs “lead” the eye across the page to the +corresponding page number or other datum.</p> +<h5 class="footnote-body-heading"><a id="FOOT68" href="#DOCF68">(68)</a></h5> +<p>A +GNU <code class="command">nroff</code> program is available for convenience; it calls GNU +<code class="code">troff</code> to perform the formatting.</p> +<h5 class="footnote-body-heading"><a id="FOOT69" href="#DOCF69">(69)</a></h5> +<p>Historically, the <code class="code">\c</code> +escape sequence has proven challenging to characterize. Some sources +say it “connects the next input text” (to the input line on which it +appears); others describe it as “interrupting” text, on the grounds +that a text line is interrupted without breaking, perhaps to inject a +request invocation or macro call.</p> +<h5 class="footnote-body-heading"><a id="FOOT70" href="#DOCF70">(70)</a></h5> +<p>See <a class="xref" href="#Traps">Traps</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT71" href="#DOCF71">(71)</a></h5> +<p>See <a class="xref" href="#Diversions">Diversions</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT72" href="#DOCF72">(72)</a></h5> +<p>Terminals and some output devices have fonts that render +at only one or two sizes. As examples of the latter, take the +<code class="code">groff</code> <code class="code">lj4</code> device’s Lineprinter, and <code class="code">lbp</code>’s Courier +and Elite faces.</p> +<h5 class="footnote-body-heading"><a id="FOOT73" href="#DOCF73">(73)</a></h5> +<p>Font designers prepare families such that the styles +share esthetic properties.</p> +<h5 class="footnote-body-heading"><a id="FOOT74" href="#DOCF74">(74)</a></h5> +<p>Historically, the fonts +<code class="code">troff</code>s dealt with were not Free Software or, as with the Graphic +Systems C/A/T, did not even exist in the digital domain.</p> +<h5 class="footnote-body-heading"><a id="FOOT75" href="#DOCF75">(75)</a></h5> +<p>See <a class="xref" href="#Font-Description-File-Format">Font Description File Format</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT76" href="#DOCF76">(76)</a></h5> +<p>See <a class="xref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT77" href="#DOCF77">(77)</a></h5> +<p>Not all versions of the <code class="code">man</code> program +support the <samp class="option">-T</samp> option; use the subsequent example for an +alternative.</p> +<h5 class="footnote-body-heading"><a id="FOOT78" href="#DOCF78">(78)</a></h5> +<p>This is “Normalization Form D” +as documented in Unicode Standard Annex #15 +(<a class="uref" href="https://unicode.org/reports/tr15/">https://unicode.org/reports/tr15/</a>).</p> +<h5 class="footnote-body-heading"><a id="FOOT79" href="#DOCF79">(79)</a></h5> +<p>See <a class="xref" href="#Compatibility-Mode">Compatibility Mode</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT80" href="#DOCF80">(80)</a></h5> +<p>Output glyphs +don’t—to GNU <code class="code">troff</code>, a glyph is simply a box with an index into +a font, a given height above and depth below the baseline, and a width.</p> +<h5 class="footnote-body-heading"><a id="FOOT81" href="#DOCF81">(81)</a></h5> +<p>Opinions of this escape sequence’s name abound. +“Zero-width space” is a popular misnomer: <code class="code">roff</code> formatters do +not treat it like a space. Ossanna called it a “non-printing, +zero-width character”, but the character causes <em class="emph">output</em> even +though it does not “print”. If no output line is pending, the dummy +character starts one. Contrast an empty input document with one +containing only <code class="code">\&</code>. The former produces no output; the latter, a +blank page.</p> +<h5 class="footnote-body-heading"><a id="FOOT82" href="#DOCF82">(82)</a></h5> +<p>In text fonts, the tallest glyphs are typically +parentheses. Unfortunately, in many cases the actual dimensions of the +glyphs in a font do not closely match its declared type size! For +example, in the standard PostScript font families, 10-point Times sets +better with 9-point Helvetica and 11-point Courier than if all three +were used at 10 points.</p> +<h5 class="footnote-body-heading"><a id="FOOT83" href="#DOCF83">(83)</a></h5> +<p>Rhyme with “sledding”; mechanical typography +used lead metal (Latin <em class="emph">plumbum</em>).</p> +<h5 class="footnote-body-heading"><a id="FOOT84" href="#DOCF84">(84)</a></h5> +<p>The claim appears to have been true of Ossanna +<code class="code">troff</code> for the C/A/T device; Kernighan made device-independent +<code class="code">troff</code> more flexible.</p> +<h5 class="footnote-body-heading"><a id="FOOT85" href="#DOCF85">(85)</a></h5> +<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT86" href="#DOCF86">(86)</a></h5> +<p>also +known vulgarly as “ANSI colors”</p> +<h5 class="footnote-body-heading"><a id="FOOT87" href="#DOCF87">(87)</a></h5> +<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT88" href="#DOCF88">(88)</a></h5> +<p>This refers to +<code class="code">vtroff</code>, a translator that would convert the C/A/T output from +early-vintage <abbr class="acronym">AT&T</abbr> <code class="code">troff</code> to a form suitable for +Versatec and Benson-Varian plotters.</p> +<h5 class="footnote-body-heading"><a id="FOOT89" href="#DOCF89">(89)</a></h5> +<p>Strictly, letters not otherwise recognized <em class="emph">are</em> treated +as output comparison delimiters. For portability, it is wise to avoid +using letters not in the list above; for example, Plan 9 +<code class="code">troff</code> uses ‘<samp class="samp">h</samp>’ to test a mode it calls <code class="code">htmlroff</code>, and +GNU <code class="code">troff</code> may provide additional operators in the future.</p> +<h5 class="footnote-body-heading"><a id="FOOT90" href="#DOCF90">(90)</a></h5> +<p>Because formatting of the comparands takes place +in a dummy environment, vertical motions within them cannot spring +traps.</p> +<h5 class="footnote-body-heading"><a id="FOOT91" href="#DOCF91">(91)</a></h5> +<p>All +of this is to say that the lists of output nodes created by formatting +<var class="var">xxx</var> and <var class="var">yyy</var> must be identical. See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT92" href="#DOCF92">(92)</a></h5> +<p>This bizarre behavior maintains compatibility with +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code>.</p> +<h5 class="footnote-body-heading"><a id="FOOT93" href="#DOCF93">(93)</a></h5> +<p>See <a class="xref" href="#while">while</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT94" href="#DOCF94">(94)</a></h5> +<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT95" href="#DOCF95">(95)</a></h5> +<p>unless you redefine it</p> +<h5 class="footnote-body-heading"><a id="FOOT96" href="#DOCF96">(96)</a></h5> +<p>“somewhat less” because +things other than macro calls can be on the input stack</p> +<h5 class="footnote-body-heading"><a id="FOOT97" href="#DOCF97">(97)</a></h5> +<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT98" href="#DOCF98">(98)</a></h5> +<p>While it is possible to define and +call a macro ‘<samp class="samp">.</samp>’, you can’t use it as an end macro: during a macro +definition, ‘<samp class="samp">..</samp>’ is never handled as calling ‘<samp class="samp">.</samp>’, even if +‘<samp class="samp">.de <var class="var">name</var> .</samp>’ explicitly precedes it.</p> +<h5 class="footnote-body-heading"><a id="FOOT99" href="#DOCF99">(99)</a></h5> +<p>Its structure is +adapted from, and isomorphic to, part of a solution by Tadziu Hoffman to +the problem of reflowing text multiple times to find an optimal +configuration for it. +<a class="uref" href="https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html">https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html</a></p> +<h5 class="footnote-body-heading"><a id="FOOT100" href="#DOCF100">(100)</a></h5> +<p>If they were not, +parameter interpolations would be similar to command-line +parameters—fixed for the entire duration of a <code class="code">roff</code> program’s +run. The advantage of interpolating <code class="code">\$</code> escape sequences even in +copy mode is that they can interpolate different contents from one call +to the next, like function parameters in a procedural language. The +additional escape character is the price of this power.</p> +<h5 class="footnote-body-heading"><a id="FOOT101" href="#DOCF101">(101)</a></h5> +<p>Compare this to the <code class="code">\def</code> and <code class="code">\edef</code> +commands in TeX.</p> +<h5 class="footnote-body-heading"><a id="FOOT102" href="#DOCF102">(102)</a></h5> +<p>These are lightly adapted from the <code class="code">groff</code> +implementation of the <samp class="file">ms</samp> macros.</p> +<h5 class="footnote-body-heading"><a id="FOOT103" href="#DOCF103">(103)</a></h5> +<p>At the +<code class="code">grops</code> defaults of 10-point type on 12-point vertical spacing, the +difference between half a vee and half an em can be subtle: large +spacings like ‘<samp class="samp">.vs .5i</samp>’ make it obvious.</p> +<h5 class="footnote-body-heading"><a id="FOOT104" href="#DOCF104">(104)</a></h5> +<p>See <a class="xref" href="#Strings">Strings</a>, for an explanation of the trailing +‘<samp class="samp">\"</samp>’.</p> +<h5 class="footnote-body-heading"><a id="FOOT105" href="#DOCF105">(105)</a></h5> +<p>(<var class="var">hc</var>, <var class="var">vc</var>) is adjusted to the point nearest +the perpendicular bisector of the arc’s chord.</p> +<h5 class="footnote-body-heading"><a id="FOOT106" href="#DOCF106">(106)</a></h5> +<p>See <a class="xref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT107" href="#DOCF107">(107)</a></h5> +<p>A trap planted at ‘<samp class="samp">20i</samp>’ or +‘<samp class="samp">-30i</samp>’ will not be sprung on a page of length ‘<samp class="samp">11i</samp>’.</p> +<h5 class="footnote-body-heading"><a id="FOOT108" href="#DOCF108">(108)</a></h5> +<p>It may help to think of each trap location as +maintaining a queue; <code class="code">wh</code> operates on the head of the queue, and +<code class="code">ch</code> operates on its tail. Only the trap at the head of the queue +is visible.</p> +<h5 class="footnote-body-heading"><a id="FOOT109" href="#DOCF109">(109)</a></h5> +<p>See <a class="xref" href="#Debugging">Debugging</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT110" href="#DOCF110">(110)</a></h5> +<p>See <a class="xref" href="#Diversions">Diversions</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT111" href="#DOCF111">(111)</a></h5> +<p>While processing an +end-of-input macro, the formatter assumes that the next page break must +be the last; it goes into “sudden death overtime”.</p> +<h5 class="footnote-body-heading"><a id="FOOT112" href="#DOCF112">(112)</a></h5> +<p>Another, taken by the <code class="code">groff</code> <code class="code">man</code> macros, is +to intercept <code class="code">ne</code> requests and wrap <code class="code">bp</code> ones.</p> +<h5 class="footnote-body-heading"><a id="FOOT113" href="#DOCF113">(113)</a></h5> +<p>Thus, the “water” +gets “higher” proceeding <em class="emph">down</em> the page.</p> +<h5 class="footnote-body-heading"><a id="FOOT114" href="#DOCF114">(114)</a></h5> +<p>The backslash is doubled. See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT115" href="#DOCF115">(115)</a></h5> +<p>that is, ISO 646:1991-IRV or, +popularly, “US-ASCII”</p> +<h5 class="footnote-body-heading"><a id="FOOT116" href="#DOCF116">(116)</a></h5> +<p>They are bypassed because these parameters are not +rendered as glyphs in the output; instead, they remain abstract +characters—in a PDF bookmark or a URL, for example.</p> +<h5 class="footnote-body-heading"><a id="FOOT117" href="#DOCF117">(117)</a></h5> +<p>Recall <a class="ref" href="#Line-Layout">Line Layout</a>.</p> +<h5 class="footnote-body-heading"><a id="FOOT118" href="#DOCF118">(118)</a></h5> +<p>Historically, +tools named <code class="command">nrchbar</code> and <code class="command">changebar</code> were developed for +marking changes with margin characters and could be found in archives of +the <code class="code">comp.sources.unix</code> <abbr class="acronym">USENET</abbr> group. Some proprietary +Unices also offer(ed) a <code class="command">diffmk</code> program.</p> +<h5 class="footnote-body-heading"><a id="FOOT119" href="#DOCF119">(119)</a></h5> +<p>Except the +escape sequences <code class="code">\f</code>, <code class="code">\F</code>, <code class="code">\H</code>, <code class="code">\m</code>, <code class="code">\M</code>, +<code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code>, which are processed immediately if +not in copy mode.</p> +<h5 class="footnote-body-heading"><a id="FOOT120" href="#DOCF120">(120)</a></h5> +<p>The +Graphic Systems C/A/T phototypesetter (the original device target for +<abbr class="acronym">AT&T</abbr> <code class="code">troff</code>) supported only a few discrete type sizes +in the range 6–36 points, so Ossanna contrived a special case in the +parser to do what the user must have meant. Kernighan warned of this in +the 1992 revision of CSTR #54 (§2.3), and more recently, McIlroy +referred to it as a “living fossil”.</p> +<h5 class="footnote-body-heading"><a id="FOOT121" href="#DOCF121">(121)</a></h5> +<p>DWB 3.3, Solaris, Heirloom Doctools, and +Plan 9 <code class="code">troff</code> all support it.</p> +<h5 class="footnote-body-heading"><a id="FOOT122" href="#DOCF122">(122)</a></h5> +<p>Naturally, if you’ve changed +the escape character, you need to prefix the <code class="code">e</code> with whatever it +is—and you’ll likely get something other than a backslash in the +output.</p> +<h5 class="footnote-body-heading"><a id="FOOT123" href="#DOCF123">(123)</a></h5> +<p>The <code class="code">rs</code> special character identifier was not +defined in <abbr class="acronym">AT&T</abbr> <code class="code">troff</code>’s font description files, but is +in those of its lineal descendant, Heirloom Doctools <code class="code">troff</code>, as of +the latter’s 060716 release (July 2006).</p> +<h5 class="footnote-body-heading"><a id="FOOT124" href="#DOCF124">(124)</a></h5> +<p>The parser +and postprocessor for intermediate output can be found in the file<br> +<samp class="file"><var class="var">groff-source-dir</var>/src/libs/libdriver/input.cpp</samp>.</p> +<h5 class="footnote-body-heading"><a id="FOOT125" href="#DOCF125">(125)</a></h5> +<p>Plan 9 <code class="code">troff</code> has also abandoned the binary +format.</p> +<h5 class="footnote-body-heading"><a id="FOOT126" href="#DOCF126">(126)</a></h5> +<p>800-point type +is not practical for most purposes, but using it enables the quantities +in the font description files to be expressed as integers.</p> +<h5 class="footnote-body-heading"><a id="FOOT127" href="#DOCF127">(127)</a></h5> +<p><code class="code">groff</code> requests and escape sequences +interpret non-negative font names as mounting positions instead. +Further, a font named ‘<samp class="samp">0</samp>’ cannot be automatically mounted by the +<code class="code">fonts</code> directive of a <samp class="file">DESC</samp> file.</p> +<h5 class="footnote-body-heading"><a id="FOOT128" href="#DOCF128">(128)</a></h5> +<p>For typesetter devices, this directive is misnamed +since it starts a list of glyphs, not characters.</p> +<h5 class="footnote-body-heading"><a id="FOOT129" href="#DOCF129">(129)</a></h5> +<p>that is, any integer parsable by the C +standard library’s <cite class="cite">strtol<span class="r">(3)</span></cite> function</p> +</div> + + +</body> +</html> |