1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
<!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>Assigning Register Formats (The GNU Troff Manual)</title>
<meta name="description" content="Assigning Register Formats (The GNU Troff Manual)">
<meta name="keywords" content="Assigning Register Formats (The GNU Troff Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Request-Index.html" rel="index" title="Request Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Registers.html" rel="up" title="Registers">
<link href="Built_002din-Registers.html" rel="next" title="Built-in Registers">
<link href="Auto_002dincrement.html" rel="prev" title="Auto-increment">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span.r {font-family: initial; font-weight: normal; font-style: normal}
span:hover a.copiable-link {visibility: visible}
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
-->
</style>
</head>
<body lang="en">
<div class="subsection-level-extent" id="Assigning-Register-Formats">
<div class="nav-panel">
<p>
Next: <a href="Built_002din-Registers.html" accesskey="n" rel="next">Built-in Registers</a>, Previous: <a href="Auto_002dincrement.html" accesskey="p" rel="prev">Auto-increment</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<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.html">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.html">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.html">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>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Built_002din-Registers.html">Built-in Registers</a>, Previous: <a href="Auto_002dincrement.html">Auto-increment</a>, Up: <a href="Registers.html">Registers</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|