~ubuntu-branches/ubuntu/dapper/groff/dapper

« back to all changes in this revision

Viewing changes to man/groff.man

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2002-03-17 04:11:50 UTC
  • Revision ID: james.westby@ubuntu.com-20020317041150-wkgfawjc3gxlk0o5
Tags: upstream-1.17.2
ImportĀ upstreamĀ versionĀ 1.17.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
'\" t
 
2
.ig
 
3
groff.7
 
4
 
 
5
This file is part of groff, the GNU roff type-setting system.
 
6
 
 
7
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
 
8
written by Bernd Warken <bwarken@mayn.de>
 
9
 
 
10
Permission is granted to copy, distribute and/or modify this document
 
11
under the terms of the GNU Free Documentation License, Version 1.1 or
 
12
any later version published by the Free Software Foundation; with the
 
13
Invariant Sections being this .ig-section and AUTHOR, with no
 
14
Front-Cover Texts, and with no Back-Cover Texts.
 
15
 
 
16
A copy of the Free Documentation License is included as a file called
 
17
FDL in the main directory of the groff source package.
 
18
..
 
19
.
 
20
.\" --------------------------------------------------------------------
 
21
.\" Setup
 
22
.\" --------------------------------------------------------------------
 
23
.
 
24
.if n \{\
 
25
.  mso tty-char.tmac
 
26
.  ftr CR R
 
27
.  ftr CI I
 
28
.  ftr CB B
 
29
.\}
 
30
.
 
31
.if '\*[.T]'dvi' \{\
 
32
.  ftr CB CW
 
33
.\}
 
34
.
 
35
.\" a comment macro which does nothing
 
36
.de c
 
37
..
 
38
.
 
39
.\" a tab string
 
40
.ds t "\t
 
41
.
 
42
.eo
 
43
.
 
44
.c text lines in macro definitions or bracketed sections \{...\}
 
45
.de text
 
46
.  if 1 \&\$*\&
 
47
..
 
48
.
 
49
.de option
 
50
.  ds @tmp@ \f(CB\$1\fP
 
51
.  shift 1
 
52
.  text \*[@tmp@]\$*
 
53
.  rm @tmp@
 
54
..
 
55
.
 
56
.als shellcommand option
 
57
.
 
58
.c --------- characters ---------
 
59
.
 
60
.de character
 
61
.  ds @tmp@ \f(CB\$1\fP
 
62
.  shift
 
63
.  text \*[@tmp@]\$*
 
64
.  rm @tmp@
 
65
..
 
66
.
 
67
.de 'char
 
68
.  ds @tmp@ \(oq\f(CB\$1\fP\(cq
 
69
.  shift
 
70
.  text \*[@tmp@]\$*
 
71
.  rm @tmp@
 
72
..
 
73
.
 
74
.de ''char
 
75
.  ds @tmp@ \(lq\f(CB\$1\fP\(rq
 
76
.  shift
 
77
.  text \*[@tmp@]\$*
 
78
.  rm @tmp@
 
79
..
 
80
.
 
81
.c --------- requests ---------
 
82
.
 
83
.c request synopsis
 
84
.de REQ
 
85
.  ds @tmp@ \&\$1
 
86
.  shift 1
 
87
.  IP "\f(CB\&\*[@tmp@] \fP\f(CI\&\$*\fP" 10n
 
88
.  rm @tmp@
 
89
..
 
90
.
 
91
.de request
 
92
.  ds @tmp@ \f(CB\$1\fP
 
93
.  shift 1
 
94
.  text \*[@tmp@]\$*
 
95
.  rm @tmp@
 
96
..
 
97
.
 
98
.c --------- macro or function arguments ---------
 
99
.
 
100
.de argument
 
101
.  ds @tmp@ \f(CI\$1\fP
 
102
.  shift 1
 
103
.  while (\n[.$] >= 2) \{\
 
104
.    as @tmp@ \/\f(CR\$1\fP\f(CI\,\$2\fP
 
105
.    shift 2
 
106
.  \}
 
107
.  if \n[.$] .as @tmp@ \/\f(CR\$1\fP
 
108
.  text \*[@tmp@]
 
109
.  rm @tmp@
 
110
..
 
111
.
 
112
.c argument followed by a numerical expression
 
113
.de argterm
 
114
.  ds @tmp@ \f(CI\$1\fP\|\f(CR\$2\fP
 
115
.  shift 2
 
116
.  text \*[@tmp@]\$*
 
117
.  rm @tmp@
 
118
..
 
119
.
 
120
.c --------- numerical elements ---------
 
121
.
 
122
.de number
 
123
.  ds @tmp@ \f(CR\$1\fP
 
124
.  shift 1
 
125
.  text \*[@tmp@]\$*
 
126
.  rm @tmp@
 
127
..
 
128
.
 
129
.de prefixednumber
 
130
.  ds @tmp@ \&\$1\ \f(CR\$2\fP
 
131
.  shift 2
 
132
.  text \*[@tmp@]\$*
 
133
.  rm @tmp@
 
134
..
 
135
.
 
136
.als scaleindicator request
 
137
.
 
138
.de scalednumber
 
139
.  ds @tmp@ \f(CR\$1\fP\f(CB\$2\fP
 
140
.  shift 2
 
141
.  text \*[@tmp@]\$*
 
142
.  rm @tmp@
 
143
..
 
144
.
 
145
.de operator
 
146
.  ds @tmp@ \(oq\f(CB\$1\fP\(cq
 
147
.  shift
 
148
.  text \*[@tmp@]\$*
 
149
.  rm @tmp@
 
150
..
 
151
.
 
152
.c --------- escape sequences ---------
 
153
.
 
154
.de esc[arg]
 
155
.  ds @tmp@ \f(CB\(rs\$1[\fP\f(CI\$2\fP\f(CB]\fP
 
156
.  shift 2
 
157
.  text \*[@tmp@]\$*
 
158
.  rm @tmp@
 
159
..
 
160
.
 
161
.de esc(arg
 
162
.  ds @tmp@ \f(CB\(rs\$1(\fP\f(CI\$2\fP
 
163
.  shift 2
 
164
.  text \*[@tmp@]\$*
 
165
.  rm @tmp@
 
166
..
 
167
.
 
168
.de escarg
 
169
.  ds @tmp@ \f(CB\(rs\$1\fP\f(CI\$2\fP
 
170
.  shift 2
 
171
.  text \*[@tmp@]\$*
 
172
.  rm @tmp@
 
173
..
 
174
.
 
175
.de esc[]
 
176
.  ds @tmp@ \f(CB\(rs[\fP\f(CI\$1\fP\f(CB]\fP
 
177
.  shift
 
178
.  text \*[@tmp@]\$*
 
179
.  rm @tmp@
 
180
..
 
181
.
 
182
.de esc(
 
183
.  ds @tmp@ \f(CB\(rs(\fP\f(CI\$1\fP
 
184
.  shift
 
185
.  text \*[@tmp@]\$*
 
186
.  rm @tmp@
 
187
..
 
188
.
 
189
.de esc
 
190
.  ds @tmp@ \f(CB\(rs\$1\fP
 
191
.  shift
 
192
.  text \*[@tmp@]\$*
 
193
.  rm @tmp@
 
194
..
 
195
.
 
196
.de (esc
 
197
.  ds @tmp@ \f(CB\(rs(\$1\fP
 
198
.  shift
 
199
.  text \*[@tmp@]\$*
 
200
.  rm @tmp@
 
201
..
 
202
.
 
203
.de [esc]
 
204
.  ds @tmp@ \f(CB\(rs[\$1]\fP
 
205
.  shift
 
206
.  text \*[@tmp@]\$*
 
207
.  rm @tmp@
 
208
..
 
209
.
 
210
.c escape sequence synopsis
 
211
.de ESC
 
212
.  ds @tmp@ \&\$1
 
213
.  shift 1
 
214
.  IP "\f(CB\(rs\&\*[@tmp@]\fP\f(CI\&\$*\fP"
 
215
.  rm @tmp@
 
216
..
 
217
.
 
218
.c synopsis for escape sequences with a long name
 
219
.de ESC[]
 
220
.  ds @arg1@ \&\$1
 
221
.  ds @arg2@ \&\$2
 
222
.  shift 2
 
223
.  IP "\f(CB\(rs\&\*[@arg1@][\fP\f(CI\&\*[@arg2@]\fP\f(CB]\&\$*\fP"
 
224
.  rm @arg1@
 
225
.  rm @arg2@
 
226
..
 
227
.
 
228
.c synopsis escape sequence with quoted argument
 
229
.  de ESCq
 
230
.  ds @tmp@ \&\$1
 
231
.  shift 1
 
232
.  IP "\f(CB\(rs\&\*[@tmp@]\(cq\fP\f(CI\h'-0.2m'\$*\/\fP\f(CB\(cq\fP"
 
233
.  rm @tmp@
 
234
..
 
235
.
 
236
.c synopsis for 2-escapes (special characters)
 
237
.de ESc
 
238
.  ds @tmp@ \$1
 
239
.  TP 14n
 
240
.  text \f(CB\(rs(\&\*[@tmp@]\ \ \ \fP\fR\(\*[@tmp@]\fP
 
241
.  shift 1
 
242
.  text \$*.
 
243
.  rm @tmp@
 
244
..
 
245
.
 
246
.c --------- registers ---------
 
247
.
 
248
.c synopsis for registers
 
249
.de REG
 
250
.  TP 10n
 
251
.  text \&\f(CR\(rsn[\fP\f(CB\$1\fP\f(CR]\fP
 
252
.  shift 1
 
253
.if \n[.$] \&\$*
 
254
..
 
255
.
 
256
.als register request
 
257
.
 
258
.c --------- warnings ---------
 
259
.
 
260
.als warning request
 
261
.
 
262
.c description of warnings
 
263
.de Warning
 
264
.  ne (2v + 1)
 
265
.  TP 12n
 
266
.  text \f(CB\$1\fP
 
267
.  text \f(CI\$2\fP
 
268
.  br
 
269
..
 
270
.
 
271
.ec
 
272
.
 
273
.\" --------------------------------------------------------------------
 
274
.\" Title
 
275
.\" --------------------------------------------------------------------
 
276
.
 
277
.TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
 
278
.SH NAME
 
279
groff \- a short reference for the GNU roff language
 
280
.
 
281
.\" --------------------------------------------------------------------
 
282
.SH DESCRIPTION
 
283
.\" --------------------------------------------------------------------
 
284
.I groff
 
285
stands for
 
286
.I GNU roff
 
287
and is the free implementation of the roff type-setting system.
 
288
See
 
289
.BR roff (@MAN7EXT@)
 
290
for a survey and the background of the groff system.
 
291
.LP
 
292
This document gives only short descriptions of the predefined roff
 
293
language elements as used in groff.
 
294
Both the classical features and the groff extensions are provided.
 
295
.LP
 
296
Historically, the
 
297
.I roff language
 
298
was called
 
299
.IR troff .
 
300
.I groff
 
301
is compatible with the classical system and provides proper extensions.
 
302
So in GNU, the terms
 
303
.IR roff ,
 
304
.IR troff ,
 
305
and
 
306
.I groff language
 
307
could be used as synonyms.
 
308
However
 
309
.I troff
 
310
slightly tends to refer more to the classical aspects, whereas
 
311
.I groff
 
312
emphasizes the GNU extensions, and
 
313
.I roff
 
314
is the general term for the language.
 
315
.LP
 
316
This file is only a short version of the complete documentation that is
 
317
found in the
 
318
.I groff
 
319
.BR info (1)
 
320
file, which contains more detailed, actual, and concise information.
 
321
.LP
 
322
The general syntax for writing groff documents is relatively easy, but
 
323
writing extensions to the roff language can be a bit harder.
 
324
.LP
 
325
The roff language is line-oriented.
 
326
There are only two kinds of lines, control lines and text lines.
 
327
The control lines start with a control character, by default a period
 
328
.''char .
 
329
or a single quote
 
330
.''char ' ;
 
331
all other lines are text lines.
 
332
.LP
 
333
.B Control lines
 
334
represent commands, optionally with arguments.
 
335
They have the following syntax.
 
336
The leading control character can be followed by a command name;
 
337
arguments, if any, are separated by blanks from the command name and
 
338
among themselves, for example,
 
339
.RS
 
340
.LP
 
341
\&\.command_name arg1 arg2
 
342
.RE
 
343
.LP
 
344
For indentation, any number of space or tab characters can be inserted
 
345
between the leading control character and the command name, but the control
 
346
character must be on the first position of the line.
 
347
.LP
 
348
.B Text lines
 
349
represent the parts that will be printed.
 
350
They can be modified by escape sequences, which are recognized by a
 
351
leading backslash
 
352
.'char \(rs .
 
353
These are in-line or even in-word formatting elements or functions.
 
354
Some of these take arguments separated by single quotes
 
355
.''char ' ,
 
356
others are regulated by a length encoding introduced by an open
 
357
parenthesis
 
358
.'char (
 
359
or enclosed in brackets
 
360
.'char [
 
361
and
 
362
.'char ] .
 
363
.LP
 
364
The roff language provides flexible instruments for writing language
 
365
extension, such as macros.
 
366
When interpreting macro definitions, the roff system enters a special
 
367
operating mode, called the
 
368
.BR "copy mode" .
 
369
.LP
 
370
The copy mode behavior can be quite tricky, but there are some rules
 
371
that ensure a safe usage.
 
372
.IP 1.
 
373
Printable backslashes must be denoted as
 
374
.esc e .
 
375
To be more precise,
 
376
.esc e
 
377
represents the current escape character.
 
378
To get a backslash glyph, use
 
379
.esc (rs .
 
380
.IP 2.
 
381
Double all backslashes.
 
382
.IP 3.
 
383
Begin all text lines with the special non-spacing character
 
384
.esc & .
 
385
.LP
 
386
This does not produce the most efficient code, but it should work as a
 
387
first measure.
 
388
For better strategies, see the groff info file and
 
389
.BR groff_tmac (@MAN5EXT@).
 
390
.LP
 
391
Reading roff source files is easier, just reduce all double backslashes
 
392
to a single one in all macro definitions.
 
393
.
 
394
.\" --------------------------------------------------------------------
 
395
.SH "GROFF ELEMENTS"
 
396
.\" --------------------------------------------------------------------
 
397
The roff language elements add formatting information to a text file.
 
398
The fundamental elements are predefined commands and variables that make
 
399
roff a full-blown programming language.
 
400
.LP
 
401
There are two kinds of roff commands, possibly with arguments.
 
402
.B Requests
 
403
are written on a line of their own starting with a dot
 
404
.'char .
 
405
or a
 
406
.''char ' ,
 
407
whereas
 
408
.B Escape sequences
 
409
are in-line functions and in-word formatting elements starting with a
 
410
backslash
 
411
.'char \(rs .
 
412
.LP
 
413
The user can define her own formatting commands using the
 
414
.request .de
 
415
request.  These commands are called
 
416
.BR macros ,
 
417
but they are used exactly like requests.  Macro packages are pre-defined 
 
418
sets of macros written in the groff language.
 
419
A user's possibilities to create escape sequences herself is very
 
420
limited, only special characters can be mapped.
 
421
.LP
 
422
The groff language provides several kinds of variables with
 
423
different interfaces.
 
424
There are pre-defined variables, but the user can define her own
 
425
variables as well.
 
426
.LP
 
427
.B String
 
428
variables store character sequences.
 
429
They are set with the
 
430
.request .ds
 
431
request and retrieved by the
 
432
.esc *
 
433
escape sequences.
 
434
.LP
 
435
.B Register
 
436
variables can store numerical values, numbers with a scale unit, and
 
437
occasionally string-like objects.
 
438
They are set with the
 
439
.request .nr
 
440
request and retrieved by the
 
441
.esc n
 
442
escape sequences.
 
443
.LP
 
444
.B Environments
 
445
allow the user to temporarily store global formatting parameters like
 
446
line length, font size, etc. for later reuse.
 
447
This is done by the
 
448
.request .ev
 
449
request.
 
450
.LP
 
451
.B Fonts
 
452
are identified either by a name or by an internal number.
 
453
The current font is chosen by the
 
454
.request .ft
 
455
request or by the
 
456
.esc f
 
457
escape sequences.
 
458
Each device has special fonts, but the following fonts are available for 
 
459
all devices.
 
460
.B R
 
461
is the standard font Roman.
 
462
.B B
 
463
is its
 
464
.B bold
 
465
counterpart.
 
466
The
 
467
.I italic
 
468
font is called
 
469
.B I
 
470
is everywhere available, but on text devices, it is displayed as an
 
471
underlined Roman font.
 
472
For the graphical output devices, there exist constant-width pendants of
 
473
these font,
 
474
.BR CR ,
 
475
.BR CI ,
 
476
and
 
477
.BR CB .
 
478
On text devices, all characters have a constant width anyway.
 
479
.LP
 
480
Moreover, there are some advanced roff elements.
 
481
A
 
482
.B diversion
 
483
stores information into a macro for later usage.
 
484
A
 
485
.B trap
 
486
is a positional condition like a certain number of lines from page top
 
487
or in a diversion or in the input.
 
488
Some action can be prescribed to be run automatically when the condition
 
489
is met.
 
490
.LP
 
491
More detailed information can be found in the groff info file.
 
492
.
 
493
.\" --------------------------------------------------------------------
 
494
.SH "CONTROL CHARACTERS"
 
495
.\" --------------------------------------------------------------------
 
496
There is a small set of characters that have a special controlling task
 
497
in certain conditions.
 
498
.TP
 
499
.character .
 
500
A dot is only special at the beginning of a line or after the
 
501
condition in the requests
 
502
.request .if ,
 
503
.request .ie ,
 
504
.request .el ,
 
505
and
 
506
.request .while .
 
507
There it is the control character that introduces a request (or macro).
 
508
The special behavior can be delayed by using the
 
509
.esc .
 
510
escape.
 
511
By using the 
 
512
.request .cc
 
513
request, the control character can be set to a different character,
 
514
making the dot
 
515
.'char .
 
516
a non-special character.
 
517
.IP ""
 
518
In all other positions, it just means a dot character.
 
519
In text paragraphs, it is advantageous to start each sentence at a line
 
520
of its own.
 
521
.TP
 
522
.character '
 
523
The single quote has two controlling tasks.  At the beginning of a line
 
524
and in the conditional requests it is the non-breaking control
 
525
character.
 
526
That means that it introduces a request like the dot, but with the
 
527
additional property that this request doesn't cause a linebreak.
 
528
By using the 
 
529
.request .c2
 
530
request, the non-break control character can be set to a different
 
531
character.
 
532
.IP ""
 
533
As a second task, it is the most commonly used argument separator in
 
534
some functional escape sequences (but any pair of characters not part
 
535
of the argument will work).
 
536
In all other positions, it denotes the single quote or apostrophe
 
537
character.
 
538
Groff provides a printable representation with the
 
539
.esc (cq
 
540
escape sequence.
 
541
.TP
 
542
.character \(dq
 
543
The double quote is used to enclose arguments in requests and macros.  In
 
544
the
 
545
.request .ds
 
546
and
 
547
.request .as
 
548
requests, a leading double quote in the argument will be stripped off,
 
549
making everything else afterwards the string to be defined (enabling leading
 
550
whitespace).
 
551
The escaped double quote
 
552
.esc \(dq
 
553
introduces a comment.
 
554
Otherwise, it is not special.
 
555
Groff provides a printable representation with the
 
556
.esc (dq
 
557
escape sequence.
 
558
.TP
 
559
.character \(rs
 
560
The backslash usually introduces an escape sequence (this can be
 
561
changed with the
 
562
.request ec
 
563
request).
 
564
A printed version of the escape character is the
 
565
.esc e
 
566
escape; a backslash glyph can be obtained by
 
567
.esc (rs .
 
568
.TP
 
569
.character (
 
570
The open parenthesis is only special in escape sequences when
 
571
introducing an escape name or argument consisting of exactly two
 
572
characters.
 
573
In groff, this behavior can be replaced by the \f(CB[]\fP construct.
 
574
.TP
 
575
.character [
 
576
The opening bracket is only special in groff escape sequences; there it
 
577
is used to introduce a long escape name or long escape argument.
 
578
Otherwise, it is non-special, e.g. in macro calls.
 
579
.TP
 
580
.character ]
 
581
The closing bracket is only special in groff escape sequences; there it
 
582
terminates a long escape name or long escape argument.
 
583
Otherwise, it is non-special.
 
584
.TP
 
585
\f(CIspace\fP
 
586
Space characters are only functional characters.  They separate the
 
587
arguments in requests or macros, and the words in text lines.
 
588
They are subject to groff's horizontal spacing calculations.
 
589
To get a defined space width, escape sequences like
 
590
.'char "\(rs\ "
 
591
(this is the escape character followed by a space),
 
592
.esc | ,
 
593
.esc ^ ,
 
594
or
 
595
.esc h
 
596
should be used.
 
597
.IP \f(CInewline\fP
 
598
In text paragraphs, newlines mostly behave like space characters.
 
599
Continuation lines can be specified by an escaped newline, i.e., by
 
600
specifying a backslash
 
601
.'char \(rs
 
602
as the last character of a line.
 
603
.IP \f(CItab\fP
 
604
If a tab character occurs during text the interpreter makes a horizontal 
 
605
jump to the next pre-defined tab position.
 
606
There is a sophisticated interface for handling tab positions.
 
607
.
 
608
.\" --------------------------------------------------------------------
 
609
.SH "NUMERICAL EXPRESSIONS"
 
610
.\" --------------------------------------------------------------------
 
611
A
 
612
.B numerical value
 
613
is a signed or unsigned integer or float with or without an appended
 
614
scale indicator.
 
615
A
 
616
.B scale indicator
 
617
is a one-character abbreviation for a unit of measurement.
 
618
A number followed by a scale indicator signifies a size value.
 
619
By default, numerical values do not have a scale indicator, i.e., they are
 
620
normal numbers.
 
621
.LP
 
622
The roff language defines the following scale indicators.
 
623
.LP
 
624
.na
 
625
.nh
 
626
.TS
 
627
center, tab(@);
 
628
LfCB Lw(4i).
 
629
c@Centimeter
 
630
i@Inch
 
631
P@Pica\ \(eq\ 1/6\ inch
 
632
p@Point\ \(eq\ 1/72\ inch
 
633
m@T{
 
634
Em\ \(eq\ \fRthe font size in points (width of letter `\f(CRm\fR')
 
635
T}
 
636
M@100th \fRof an \f(CREm
 
637
n@En\ \(eq\ Em/2
 
638
u@\fRBasic unit for actual output device
 
639
v@\fRVertical line space in basic units
 
640
z@T{
 
641
scaled point\ \(eq\ 1/\f(CIsizescale\fR of a point (defined in
 
642
font \fIDESC\fP file)
 
643
T}
 
644
.TE
 
645
.LP
 
646
.ad
 
647
.hy
 
648
.B Numerical expressions
 
649
are combinations of the numerical values defined above with
 
650
the arithmetical operators
 
651
.operator + ,
 
652
.operator \- ,
 
653
.operator * ,
 
654
.operator / ,
 
655
.operator %
 
656
.RI ( modulo ),
 
657
the comparative operators
 
658
.operator ==
 
659
(this is the same as
 
660
.operator = ),
 
661
.operator <= ,
 
662
.operator >= ,
 
663
.operator < ,
 
664
.operator > ,
 
665
the logical operators
 
666
.operator &
 
667
.RI ( and ),
 
668
.operator :
 
669
.RI ( or ),
 
670
.operator !
 
671
.RI ( not ),
 
672
and the parentheses
 
673
.operator (
 
674
and
 
675
.operator ) .
 
676
.LP
 
677
Moreover,
 
678
.I groff
 
679
added the following operators for numerical expressions:
 
680
.LP
 
681
.na
 
682
.nh
 
683
.TS
 
684
center, tab(@);
 
685
LfCB Lw(4i).
 
686
e1\f(CB>?\fPe2@The maximum of \f(CIe1\fP and \f(CIe2\fP.
 
687
e1\f(CB<?\fPe2@The minimum of \f(CIe1\fP and \f(CIe2\fP.
 
688
\f(CB(\fPc\f(CB;\fPe\f(CB)@T{
 
689
Evaluate \f(CIe\fP using \f(CIc\fP as the default scaling
 
690
indicator.
 
691
T}
 
692
.TE
 
693
.LP
 
694
.ad
 
695
.hy
 
696
For details see the groff info file.
 
697
.
 
698
.\" --------------------------------------------------------------------
 
699
.SH CONDITIONS
 
700
.\" --------------------------------------------------------------------
 
701
.B Conditions
 
702
occur in tests raised by the
 
703
.request .if ,
 
704
.request .ie ,
 
705
and the
 
706
.request .while
 
707
requests.
 
708
The following table characterizes the different types of conditions.
 
709
.LP
 
710
.na
 
711
.nh
 
712
.TS
 
713
center, tab(@);
 
714
LfCB Lw(4i).
 
715
\f(CIN\fP@T{
 
716
A numerical expression \f(CIN\fP yields true if its value
 
717
is\ \f(CR>0\fP.
 
718
T}
 
719
!\f(CIN\fP@T{
 
720
True if the value of \f(CIN\fP is\ \f(CR\(<=0\fP.
 
721
T}
 
722
\&'\f(CIs1\fP'\f(CIs2\fP'@T{
 
723
True if string\ \f(CIs1\fP is identical to string\ \f(CIs2\fP.
 
724
T}
 
725
!'\f(CIs1\fP'\f(CIs2\fP'@T{
 
726
True if string\ \f(CIs1\fP is not identical to string\ \f(CIs2\fP.
 
727
T}
 
728
c\f(CIch@T{
 
729
True if there is a character\ \f(CIch\fP available.
 
730
T}
 
731
d\f(CIname@T{
 
732
True if there is a string, macro, diversion, or request
 
733
called \f(CIname\fP.
 
734
T}
 
735
e@Current page number is even.
 
736
o@Current page number is odd.
 
737
n@Formatter is \fBnroff\fP.
 
738
r\f(CIreg@T{
 
739
True if there is a register named \f(CIreg\fP.
 
740
T}
 
741
t@Formatter is \fBtroff\fR.
 
742
.TE
 
743
.LP
 
744
.ad
 
745
.hy
 
746
.
 
747
.\" --------------------------------------------------------------------
 
748
.SH REQUESTS
 
749
.\" --------------------------------------------------------------------
 
750
This section provides a short reference for the predefined requests.
 
751
In groff, request and macro names can be arbitrarily long.
 
752
No bracketing or marking of long names is needed.
 
753
.LP
 
754
Most requests take one or more arguments.
 
755
The arguments are separated by space characters (no tabs!); there is no
 
756
inherent limit for their length or number.
 
757
An argument can be enclosed by a pair of double quotes: This is very handy
 
758
if an argument contains space characters, e.g.,
 
759
.argument "\(dqarg\ with\ space\(dq"
 
760
denotes a single argument.
 
761
.LP
 
762
Some requests have optional arguments with a different behaviour.
 
763
Not all of these details are outlined here.
 
764
Refer to the groff info file for all details.
 
765
.LP
 
766
In the following request specifications, most argument names were chosen
 
767
to be descriptive.
 
768
Only the following denotations need clarification.
 
769
.LP
 
770
.na
 
771
.nh
 
772
.TS
 
773
center, tab(@);
 
774
LfCI Lw(4i).
 
775
c@denotes a single character.
 
776
font@T{
 
777
a font either specified as a font name or a font number.
 
778
T}
 
779
anything@T{
 
780
all characters up to the end of the line or within \f(CB\(rs{\fP
 
781
and \f(CB\(rs}\fP.
 
782
T}
 
783
n@T{
 
784
is a numerical expression that evaluates to an integer value.
 
785
T}
 
786
N@T{
 
787
is an arbitrary numerical expression, signed or unsigned.
 
788
T}
 
789
\(+-N@T{
 
790
has three meanings depending on its sign, described below.
 
791
T}
 
792
.TE
 
793
.LP
 
794
.ad
 
795
.hy
 
796
If an expression defined as
 
797
.argument \(+-N
 
798
starts with a
 
799
.operator +
 
800
sign the resulting value of the expression will be added to an already
 
801
existing value inherent to the related request, e.g. adding to a number
 
802
register.
 
803
If the expression starts with a
 
804
.operator -
 
805
the value of the expression will be subtracted from the request value.
 
806
.LP
 
807
Without a sign,
 
808
.argument N
 
809
replaces the existing value directly.
 
810
To assign a negative number either prepend\ \c
 
811
.number 0
 
812
or enclose the negative number in parentheses.
 
813
.
 
814
.\" --------------------------------------------------------------------
 
815
.SS "REQUEST SHORT REFERENCE"
 
816
.\" --------------------------------------------------------------------
 
817
.PD 0
 
818
.
 
819
.REQ .
 
820
Empty line, ignored.  Useful for structuring documents.
 
821
.
 
822
.REQ .\(rs\(dq anything
 
823
Complete line is a comment.
 
824
.
 
825
.REQ .ab string
 
826
Print
 
827
.argument string
 
828
on standard error, exit program.
 
829
.
 
830
.REQ .ad
 
831
Begin line adjustment for output lines in current adjust mode.
 
832
.
 
833
.REQ .ad c
 
834
Start line adjustment in mode
 
835
.argument c
 
836
(\f(CIc\fP\f(CR\|\^\(eq\|l,r,b,n\fP).
 
837
.
 
838
.REQ .af register c
 
839
Assign format
 
840
.argument c
 
841
to
 
842
.argument register
 
843
(\f(CIc\fP\f(CR\|\^\(eq\|l,i,I,a,A\fP).
 
844
.
 
845
.REQ .aln alias register
 
846
Create alias name for
 
847
.argument register .
 
848
.
 
849
.REQ .als alias object
 
850
Create alias name for request, string, macro, or diversion
 
851
.argument object .
 
852
.
 
853
.REQ .am macro
 
854
Append to
 
855
.argument macro
 
856
until
 
857
.request ..
 
858
is called.
 
859
.
 
860
.REQ .am macro end
 
861
Append to
 
862
.argument macro
 
863
until
 
864
.request .end
 
865
is called.
 
866
.
 
867
.REQ .am1 macro
 
868
Same as
 
869
.request .am
 
870
but with compatibility mode switched off during macro expansion.
 
871
.
 
872
.REQ .am1 macro end
 
873
Same as
 
874
.request .am
 
875
but with compatibility mode switched off during macro expansion.
 
876
.
 
877
.REQ .as stringvar anything
 
878
Append
 
879
.argument anything
 
880
to
 
881
.argument stringvar .
 
882
.
 
883
.REQ .asciify diversion
 
884
Unformat ASCII characters, spaces, and some escape sequences in
 
885
.argument diversion .
 
886
.
 
887
.REQ .backtrace
 
888
Print a backtrace of the input on stderr.
 
889
.
 
890
.REQ .bd font N
 
891
Embolden
 
892
.argument font
 
893
by
 
894
.argterm N -1
 
895
units.
 
896
.
 
897
.REQ .bd S font N
 
898
Embolden Special Font
 
899
.argument S
 
900
when current font is
 
901
.argument font .
 
902
.
 
903
.REQ .blm
 
904
Unset the blank line macro.
 
905
.
 
906
.REQ .blm macro
 
907
Set the blank line macro to
 
908
.argument macro .
 
909
.
 
910
.REQ .box
 
911
End current diversion.
 
912
.
 
913
.REQ .box macro
 
914
Divert to
 
915
.argument macro ,
 
916
omitting a partially filled line.
 
917
.
 
918
.REQ .boxa
 
919
End current diversion.
 
920
.
 
921
.REQ .boxa macro
 
922
Divert and append to
 
923
.argument macro ,
 
924
omitting a partially filled line.
 
925
.
 
926
.REQ .bp
 
927
Eject current page and begin new page.
 
928
.
 
929
.REQ .bp \(+-N
 
930
Eject current page; next page number
 
931
.argument \(+-N .
 
932
.
 
933
.REQ .br
 
934
Line break.
 
935
.
 
936
.REQ .brp
 
937
Break and spread output line.
 
938
Same as
 
939
.esc p .
 
940
.
 
941
.REQ .break
 
942
Break out of a while loop.
 
943
.
 
944
.REQ .c2
 
945
Reset no-break control character to
 
946
.''char ' .
 
947
.
 
948
.REQ .c2 c
 
949
Set no-break control character to
 
950
.argument c .
 
951
.
 
952
.REQ .cc
 
953
Reset control character to
 
954
.'char . .
 
955
.
 
956
.REQ .cc c
 
957
Set control character to
 
958
.argument c .
 
959
.
 
960
.REQ .ce
 
961
Center the next input line.
 
962
.
 
963
.REQ .ce N
 
964
Center following
 
965
.argument N
 
966
input lines.
 
967
.
 
968
.REQ .cf filename
 
969
Copy contents of file
 
970
.argument filename
 
971
unprocessed to stdout or to the diversion.
 
972
.
 
973
.REQ .cflags mode c1 c2 ...
 
974
Treat characters
 
975
.argument c1 ,
 
976
.argument c2 ,
 
977
.argument ...
 
978
according to
 
979
.argument mode
 
980
number.
 
981
.
 
982
.REQ .ch trap N
 
983
Change
 
984
.argument trap
 
985
location
 
986
to
 
987
.argument N .
 
988
.
 
989
.REQ .char c anything
 
990
Define character
 
991
.argument c
 
992
to string
 
993
.argument anything .
 
994
.
 
995
.REQ .chop object
 
996
Chop the last character off macro, string, or diversion
 
997
.argument object .
 
998
.
 
999
.REQ .close stream
 
1000
Close the
 
1001
.argument stream .
 
1002
.
 
1003
.REQ .continue
 
1004
Finish the current iteration of a while loop.
 
1005
.
 
1006
.REQ .cp
 
1007
Enable compatibility mode.
 
1008
.
 
1009
.REQ .cp N
 
1010
If
 
1011
.I N
 
1012
is zero disable compatibility mode, otherwise enable it.
 
1013
.
 
1014
.REQ .cs font N M
 
1015
Set constant character width mode for
 
1016
.argument font
 
1017
to
 
1018
.argterm N /36
 
1019
ems with em
 
1020
.argument M .
 
1021
.
 
1022
.REQ .cu N
 
1023
Continuous underline in nroff, like
 
1024
.request .ul
 
1025
in troff.
 
1026
.
 
1027
.REQ .da
 
1028
End current diversion.
 
1029
.
 
1030
.REQ .da macro
 
1031
Divert and append to
 
1032
.argument macro .
 
1033
.
 
1034
.REQ .de macro
 
1035
Define or redefine
 
1036
.argument macro
 
1037
until
 
1038
.request ..
 
1039
is called.
 
1040
.
 
1041
.REQ .de macro end
 
1042
Define or redefine
 
1043
.argument macro
 
1044
until
 
1045
.request .end
 
1046
is called.
 
1047
.
 
1048
.REQ .de1 macro
 
1049
Same as
 
1050
.request .de
 
1051
but with compatibility mode switched off during macro expansion.
 
1052
.
 
1053
.REQ .de1 macro end
 
1054
Same as
 
1055
.request .de
 
1056
but with compatibility mode switched off during macro expansion.
 
1057
.
 
1058
.REQ .dei macro
 
1059
Define or redefine a macro whose name is contained in the string register
 
1060
.argument macro
 
1061
until
 
1062
.request ..
 
1063
is called.
 
1064
.
 
1065
.REQ .dei macro end
 
1066
Define or redefine a macro indirectly.
 
1067
.argument macro
 
1068
and
 
1069
.argument end
 
1070
are string registers whose contents are interpolated for the macro name
 
1071
and the end macro, respectively.
 
1072
.
 
1073
.REQ .di
 
1074
End current diversion.
 
1075
.
 
1076
.REQ .di macro
 
1077
Divert to
 
1078
.argument macro .
 
1079
.
 
1080
.REQ .do name
 
1081
Interpret
 
1082
.request .name
 
1083
with compatibility mode disabled.
 
1084
.
 
1085
.REQ .ds stringvar anything
 
1086
Set
 
1087
.argument stringvar
 
1088
to
 
1089
.argument anything .
 
1090
.
 
1091
.REQ .dt N trap
 
1092
Set diversion trap to position
 
1093
.argument N
 
1094
(default scale indicator\ \c
 
1095
.scaleindicator v ).
 
1096
.
 
1097
.REQ .ec
 
1098
Reset escape character to
 
1099
.'char \(rs .
 
1100
.
 
1101
.REQ .ec c
 
1102
Set escape character to
 
1103
.argument c .
 
1104
.
 
1105
.REQ .ecr
 
1106
Restore escape character saved with
 
1107
.request .ecs .
 
1108
.
 
1109
.REQ .ecs
 
1110
Save current escape character.
 
1111
.
 
1112
.REQ .el anything
 
1113
Else part for if-else (\c
 
1114
.argument .ie )
 
1115
request.
 
1116
.
 
1117
.REQ .em macro
 
1118
The
 
1119
.argument macro
 
1120
will be run after the end of input.
 
1121
.
 
1122
.REQ .eo
 
1123
Turn off escape character mechanism.
 
1124
.
 
1125
.REQ .ev
 
1126
Switch to previous environment.
 
1127
.
 
1128
.REQ .ev env
 
1129
Push down environment number or name
 
1130
.argument env
 
1131
and switch to it.
 
1132
.
 
1133
.REQ .evc env
 
1134
Copy the contents of environment
 
1135
.argument env
 
1136
to the current environment.
 
1137
No pushing or popping.
 
1138
.
 
1139
.REQ .ex
 
1140
Exit from roff processing.
 
1141
.
 
1142
.REQ .fam
 
1143
Return to previous font family.
 
1144
.
 
1145
.REQ .fam name
 
1146
Set the current font family to
 
1147
.argument name .
 
1148
.
 
1149
.REQ .fc
 
1150
Disable field mechanism.
 
1151
.
 
1152
.REQ .fc a
 
1153
Set field delimiter to
 
1154
.argument a
 
1155
and pad character to space.
 
1156
.REQ .fc a b
 
1157
Set field delimiter to
 
1158
.argument a
 
1159
and pad character to
 
1160
.argument b .
 
1161
.
 
1162
.REQ .fi
 
1163
Fill output lines.
 
1164
.
 
1165
.REQ .fl
 
1166
Flush output buffer.
 
1167
.
 
1168
.REQ .fp n font
 
1169
Mount
 
1170
.argument font
 
1171
on position
 
1172
.argument n .
 
1173
.
 
1174
.REQ .fp n internal external
 
1175
Mount font with long
 
1176
.argument external
 
1177
name to short
 
1178
.argument internal
 
1179
name on position
 
1180
.argument n .
 
1181
.
 
1182
.REQ .fspecial font s1 s2...
 
1183
When the current font is
 
1184
.argument font ,
 
1185
then the fonts
 
1186
.argument s1 ,
 
1187
.argument s2 ,
 
1188
.argument ...
 
1189
will be special.
 
1190
.
 
1191
.REQ .ft
 
1192
Return to previous font.
 
1193
Same as
 
1194
.request \(rsfP .
 
1195
.REQ .ft font
 
1196
Change to font name or number
 
1197
.argument font ;
 
1198
same as
 
1199
.esc[arg] f font
 
1200
escape sequence.
 
1201
.
 
1202
.REQ .ftr font1 font2
 
1203
Translate
 
1204
.argument font1
 
1205
to
 
1206
.argument font2 .
 
1207
.
 
1208
.REQ .hc
 
1209
Remove additional hyphenation indicator character.
 
1210
.
 
1211
.REQ .hc c
 
1212
Set up additional hyphenation indicator character\ \c
 
1213
.argument c .
 
1214
.
 
1215
.REQ .hcode c1 code1 c2 code2 ...
 
1216
Set the hyphenation code of character
 
1217
.argument c1
 
1218
to
 
1219
.argument code1 ,
 
1220
that of
 
1221
.argument c2
 
1222
to
 
1223
.argument code2 ,
 
1224
etc.
 
1225
.
 
1226
.REQ .hla lang
 
1227
Set the current hyphenation language to
 
1228
.argument lang .
 
1229
.
 
1230
.REQ .hlm n
 
1231
Set the maximum number of consecutive hyphenated lines to
 
1232
.argument n .
 
1233
.
 
1234
.REQ .hpf file
 
1235
Read hyphenation patterns from
 
1236
.argument file .
 
1237
.
 
1238
.REQ .hw words
 
1239
List of
 
1240
.argument words
 
1241
with exceptional hyphenation.
 
1242
.
 
1243
.REQ .hy N
 
1244
Switch to hyphenation mode
 
1245
.argument N .
 
1246
.
 
1247
.REQ .hym n
 
1248
Set the hyphenation margin to
 
1249
.argument n
 
1250
(default scale indicator\ \c
 
1251
.scaleindicator m ).
 
1252
.
 
1253
.REQ .hys n
 
1254
Set the hyphenation space to
 
1255
.argument n .
 
1256
.
 
1257
.REQ .ie cond anything
 
1258
If
 
1259
.argument cond
 
1260
then
 
1261
.argument anything
 
1262
else goto
 
1263
.request .el .
 
1264
.
 
1265
.REQ .if cond anything
 
1266
If
 
1267
.argument cond
 
1268
then
 
1269
.argument anything ;
 
1270
otherwise do nothing.
 
1271
.
 
1272
.REQ .ig
 
1273
Ignore text until
 
1274
.request ..
 
1275
is called.
 
1276
.
 
1277
.REQ .ig end
 
1278
Ignore text until
 
1279
.request .end .
 
1280
.
 
1281
.REQ .in
 
1282
Change to previous indent value.
 
1283
.
 
1284
.REQ .in \(+-N
 
1285
Change indent according to
 
1286
.argument \(+-N
 
1287
(default scale indicator\ \c
 
1288
.scaleindicator m ).
 
1289
.
 
1290
.REQ .it N trap
 
1291
Set an input-line count trap at position
 
1292
.argument N .
 
1293
.
 
1294
.REQ .kern
 
1295
Enable pairwise kerning.
 
1296
.
 
1297
.REQ .kern n
 
1298
If
 
1299
.argument n
 
1300
is zero, disable pairwise kerning, otherwise enable it.
 
1301
.
 
1302
.REQ .lc
 
1303
Remove leader repetition character.
 
1304
.
 
1305
.REQ .lc c
 
1306
Set leader repetition character to\ \c
 
1307
.argument c .
 
1308
.
 
1309
.REQ .length register anything
 
1310
Write the length of the string
 
1311
.argument anything
 
1312
in
 
1313
.argument register .
 
1314
.
 
1315
.REQ .linetabs
 
1316
Enable line-tabs mode (i.e., calculate tab positions relative to output
 
1317
line).
 
1318
.
 
1319
.REQ .linetabs n
 
1320
If
 
1321
.argument n
 
1322
is zero, disable line-tabs mode, otherwise enable it.
 
1323
.
 
1324
.REQ .lf N file
 
1325
Set input line number to
 
1326
.argument N
 
1327
and filename to
 
1328
.argument file .
 
1329
.
 
1330
.REQ .lg N
 
1331
Ligature mode on if
 
1332
.argterm N >0 .
 
1333
.
 
1334
.REQ .ll
 
1335
Change to previous line length.
 
1336
.
 
1337
.REQ .ll \(+-N
 
1338
Set line length according to
 
1339
.argument \(+-N
 
1340
(default size
 
1341
.scalednumber 6.5 i ,
 
1342
default scale indicator\ \c
 
1343
.scaleindicator m ).
 
1344
.
 
1345
.REQ .ls
 
1346
Change to the previous value of additional intra-line skip.
 
1347
.
 
1348
.REQ .ls N
 
1349
Set additional intra-line skip value to
 
1350
.argument N ,
 
1351
i.e.,
 
1352
.argterm N -1
 
1353
blank lines are inserted after each text output line.
 
1354
.
 
1355
.REQ .lt \(+-N
 
1356
Length of title (default scale indicator\ \c
 
1357
.scaleindicator m ).
 
1358
.
 
1359
.REQ .mc
 
1360
Margin character off.
 
1361
.
 
1362
.REQ .mc c
 
1363
Print character
 
1364
.argument c
 
1365
after each text line at actual distance from right margin.
 
1366
.
 
1367
.REQ .mc c N
 
1368
Set margin character to
 
1369
.argument c
 
1370
and distance to
 
1371
.argument N
 
1372
from right margin (default scale indicator\ \c
 
1373
.scaleindicator m ).
 
1374
.
 
1375
.REQ .mk register
 
1376
Mark current vertical position in
 
1377
.argument register .
 
1378
.
 
1379
.REQ .mso file
 
1380
The same as the .so request except that
 
1381
.I file
 
1382
is searched in the tmac directories.
 
1383
.
 
1384
.REQ .na
 
1385
No output-line adjusting.
 
1386
.
 
1387
.REQ .ne
 
1388
Need a one-line vertical space.
 
1389
.
 
1390
.REQ .ne N
 
1391
Need
 
1392
.argument N
 
1393
vertical space (default scale indicator\ \c
 
1394
.scaleindicator v ).
 
1395
.
 
1396
.REQ .nf
 
1397
No filling or adjusting of output-lines.
 
1398
.
 
1399
.REQ .nh
 
1400
No hyphenation.
 
1401
.
 
1402
.REQ .nm
 
1403
Number mode off.
 
1404
.
 
1405
.REQ .nm \(+-N M S I
 
1406
In line number mode, set number, multiple, spacing, and indent.
 
1407
.
 
1408
.REQ .nn
 
1409
Do not number next line.
 
1410
.
 
1411
.REQ .nn N
 
1412
Do not number next
 
1413
.argument N
 
1414
lines.
 
1415
.
 
1416
.REQ .nop anything
 
1417
Always execute
 
1418
.argument anything .
 
1419
.
 
1420
.REQ .nr register \(+-N M
 
1421
Define or modify
 
1422
.argument register
 
1423
using
 
1424
.argument \(+-N
 
1425
with auto-increment
 
1426
.argument M .
 
1427
.
 
1428
.REQ .nroff
 
1429
Make the built-in condition
 
1430
.B n
 
1431
true and
 
1432
.B t
 
1433
false.
 
1434
.
 
1435
.REQ .ns
 
1436
Turn no-space mode on.
 
1437
.
 
1438
.REQ .nx filename
 
1439
Next file.
 
1440
.
 
1441
.REQ .open stream filename
 
1442
Open
 
1443
.register filename
 
1444
for writing and associate the stream named
 
1445
.register stream
 
1446
with it.
 
1447
.
 
1448
.REQ .opena stream filename
 
1449
Like
 
1450
.request .open
 
1451
but append to it.
 
1452
.
 
1453
.REQ .os
 
1454
Output vertical distance that was saved by the
 
1455
.request .sv
 
1456
request.
 
1457
.
 
1458
.REQ .pc
 
1459
Reset page number character to\ \c
 
1460
.'char % .
 
1461
.
 
1462
.REQ .pc c
 
1463
Page number character.
 
1464
.
 
1465
.REQ .pi program
 
1466
Pipe output to
 
1467
.argument program
 
1468
(nroff only).
 
1469
.
 
1470
.REQ .pl
 
1471
Set page length to default
 
1472
.scalednumber 11 i .
 
1473
The current page length is stored in
 
1474
.register .p .
 
1475
.
 
1476
.REQ .pl \(+-N
 
1477
Change page length to
 
1478
.argument \(+-N
 
1479
(default scale indicator\ \c
 
1480
.scaleindicator v ).
 
1481
.
 
1482
.REQ .pm
 
1483
Print macro names and sizes (number of blocks of 128 bytes).
 
1484
.
 
1485
.REQ ".pm t"
 
1486
Print only total of sizes of macros (number of 128 bytes blocks).
 
1487
.
 
1488
.REQ .pn \(+-N
 
1489
Next page number
 
1490
.argument N .
 
1491
.
 
1492
.REQ .pnr
 
1493
Print the names and contents of all currently defined number registers
 
1494
on stderr.
 
1495
.
 
1496
.REQ .po
 
1497
Change to previous page offset.  The current page offset is available in
 
1498
.register .o .
 
1499
.
 
1500
.REQ .po \(+-N
 
1501
Page offset
 
1502
.argument N .
 
1503
.
 
1504
.REQ .ps
 
1505
Return to previous point-size.
 
1506
.REQ .ps \(+-N
 
1507
Point size; same as
 
1508
.esc[arg] s \(+-N .
 
1509
.
 
1510
.REQ .psbb filename
 
1511
Get the bounding box of a PostScript image
 
1512
.argument filename .
 
1513
.
 
1514
.REQ .pso command
 
1515
This behaves like the
 
1516
.request .so
 
1517
request except that input comes from the standard output of
 
1518
.argument command .
 
1519
.
 
1520
.REQ .ptr
 
1521
Print the names and positions of all traps (not including input line
 
1522
traps and diversion traps) on stderr.
 
1523
.
 
1524
.REQ .rchar c1 c2...
 
1525
Remove the definitions of characters
 
1526
.argument c1 ,
 
1527
.argument c2 ,
 
1528
.argument ...
 
1529
.
 
1530
.REQ .rd prompt
 
1531
Read insertion.
 
1532
.
 
1533
.REQ .return
 
1534
Return from a macro.
 
1535
.
 
1536
.REQ .rj n
 
1537
Right justify the next
 
1538
.argument n
 
1539
input lines.
 
1540
.
 
1541
.REQ .rm name
 
1542
Remove request, macro, or string
 
1543
.argument name .
 
1544
.
 
1545
.REQ .rn old new
 
1546
Rename request, macro, or string
 
1547
.argument old
 
1548
to
 
1549
.argument new .
 
1550
.
 
1551
.REQ .rnn reg1 reg2
 
1552
Rename register
 
1553
.argument reg1
 
1554
to
 
1555
.argument reg2 .
 
1556
.
 
1557
.REQ .rr register
 
1558
Remove
 
1559
.argument register .
 
1560
.
 
1561
.REQ .rs
 
1562
Restore spacing; turn no-space mode off.
 
1563
.
 
1564
.REQ .rt \(+-N
 
1565
Return
 
1566
.I (upward only)
 
1567
to marked vertical place (default scale indicator\ \c
 
1568
.scaleindicator v ).
 
1569
.
 
1570
.REQ .shc
 
1571
Reset soft hyphen character to
 
1572
.esc (hy .
 
1573
.
 
1574
.REQ .shc c
 
1575
Set the soft hyphen character to
 
1576
.argument c .
 
1577
.
 
1578
.REQ .shift n
 
1579
In a macro, shift the arguments by
 
1580
.argument n \ \c
 
1581
positions.
 
1582
.
 
1583
.REQ .so filename
 
1584
Include source file.
 
1585
.
 
1586
.REQ .sp
 
1587
Skip one line vertically.
 
1588
.
 
1589
.REQ .sp N
 
1590
Space vertical distance
 
1591
.argument N
 
1592
up or down according to sign of
 
1593
.argument N
 
1594
(default scaling indicator\ \c
 
1595
.scaleindicator v ).
 
1596
.
 
1597
.REQ .special s1 s2 ...
 
1598
Fonts
 
1599
.argument s1 ,
 
1600
.argument s2 ,
 
1601
etc. are special and will be searched for characters not in the current font.
 
1602
.
 
1603
.REQ .ss N
 
1604
Space-character size set to
 
1605
.argument N /12
 
1606
of the spacewidth in the current font.
 
1607
.
 
1608
.REQ .ss N M
 
1609
Space-character size set to
 
1610
.argterm N /12
 
1611
and sentence space size set to
 
1612
.argterm M /12
 
1613
of the spacewidth in the current font (\f(CR\(eq1/3 em\fP).
 
1614
.
 
1615
.REQ .sty n style
 
1616
Associate
 
1617
.argument style
 
1618
with font position
 
1619
.argument n .
 
1620
.
 
1621
.REQ .substring register n1 n2
 
1622
Replace the string in
 
1623
.argument register
 
1624
with the substring defined by the indices
 
1625
.argument n1
 
1626
and
 
1627
.argument n2 .
 
1628
.
 
1629
.REQ .sv
 
1630
Save
 
1631
.scalednumber 1 v
 
1632
of vertical space.
 
1633
.
 
1634
.REQ .sv N
 
1635
Save the vertical distance
 
1636
.argument N
 
1637
for later output with
 
1638
.request .os
 
1639
request.
 
1640
.
 
1641
.REQ .sy command-line
 
1642
Execute program
 
1643
.argument command-line .
 
1644
.
 
1645
.REQ ".ta T" N
 
1646
Set tabs after every position that is a multiple of
 
1647
.argument N
 
1648
(default scaling indicator\ \c
 
1649
.scaleindicator m ).
 
1650
.REQ .ta n1 n2 ... nn \f(CBT\fP r1 r2 ... rn
 
1651
Set tabs at positions
 
1652
.argument n1 ,
 
1653
.argument n2 ,
 
1654
\&...,
 
1655
.argument nn ,
 
1656
then set tabs at
 
1657
.argument nn + r1 ,
 
1658
.argument nn + r2 ,
 
1659
\&...,
 
1660
.argument nn + rn ,
 
1661
then at
 
1662
.argument nn + rn + r1 ,
 
1663
.argument nn + rn + r2 ,
 
1664
\&...,
 
1665
.argument nn + rn + rn ,
 
1666
and so on.
 
1667
.
 
1668
.\".REQ .tar
 
1669
.\"Restore internally saved tab positions.
 
1670
.\".
 
1671
.\".REQ .tas
 
1672
.\"Save tab positions internally.
 
1673
.
 
1674
.REQ .tc
 
1675
Remove tab repition character.
 
1676
.REQ .tc c
 
1677
Set tab repetition character to\ \c
 
1678
.argument c .
 
1679
.
 
1680
.REQ .ti \(+-N
 
1681
Temporary indent next line (default scaling indicator\ \c
 
1682
.scaleindicator m ).
 
1683
.
 
1684
.REQ .tkf font s1 n1 s2 n2
 
1685
Enable track kerning for
 
1686
.argument font .
 
1687
.
 
1688
.REQ .tl \f(CB\(cq\fPleft\f(CB\(cq\fPcenter\f(CB\(cq\fPright\f(CB\(cq\fP
 
1689
Three-part title.
 
1690
.
 
1691
.REQ .tm anything
 
1692
Print
 
1693
.argument anything
 
1694
on terminal (UNIX standard message output).
 
1695
.
 
1696
.REQ .tm1 anything
 
1697
Print
 
1698
.argument anything
 
1699
on terminal (UNIX standard message output), allowing leading whitespace if
 
1700
.argument anything
 
1701
starts with
 
1702
.character \(dq
 
1703
(which will be stripped off).
 
1704
.
 
1705
.REQ .tmc anything
 
1706
Similar to
 
1707
.request .tm1
 
1708
without emitting a final newline.
 
1709
.
 
1710
.REQ .tr abcd....
 
1711
Translate
 
1712
.argument a
 
1713
to
 
1714
.argument b ,
 
1715
.argument c
 
1716
to
 
1717
.argument d ,
 
1718
etc. on output.
 
1719
.
 
1720
.REQ .trf filename
 
1721
Transparently output the contents of file
 
1722
.argument filename .
 
1723
.
 
1724
.REQ .trnt abcd....
 
1725
This is the same as the
 
1726
.request .tr
 
1727
request except that the translations do not apply to text that is
 
1728
transparently throughput into a diversion with
 
1729
.esc ! .
 
1730
.
 
1731
.REQ .troff
 
1732
Make the built-in condition
 
1733
.B t
 
1734
true and
 
1735
.B n
 
1736
false.
 
1737
.
 
1738
.REQ .uf font
 
1739
Underline font set to
 
1740
.argument font
 
1741
(to be switched to by
 
1742
.request .ul ).
 
1743
.
 
1744
.REQ .ul N
 
1745
Underline (italicize in troff)
 
1746
.argument N
 
1747
input lines.
 
1748
.
 
1749
.REQ .unformat diversion
 
1750
Unformat space characters and tabs, preserving font information in
 
1751
.argument diversion .
 
1752
.REQ .vpt n
 
1753
Enable vertical position traps if
 
1754
.argument n
 
1755
is non-zero, disable them otherwise.
 
1756
.
 
1757
.REQ .vs
 
1758
Change to previous vertical base line spacing.
 
1759
.
 
1760
.REQ .vs N
 
1761
Set vertical base line spacing to
 
1762
.argument N .
 
1763
Default value is
 
1764
.scalednumber 12 p .
 
1765
.
 
1766
.REQ .warn n
 
1767
Set warnings code to
 
1768
.argument n .
 
1769
.
 
1770
.REQ .wh N trap
 
1771
Set location trap; negative means from page bottom.
 
1772
.
 
1773
.REQ .while cond anything
 
1774
While condition
 
1775
.argument cond
 
1776
is true, accept
 
1777
.argument anything
 
1778
as input.
 
1779
.
 
1780
.REQ .write stream anything
 
1781
Write
 
1782
.argument anything
 
1783
to the stream named
 
1784
.argument stream .
 
1785
.
 
1786
.PD
 
1787
.LP
 
1788
Besides these standard groff requests, there might be further macro
 
1789
calls.
 
1790
They can originate from a macro package (see
 
1791
.BR roff (@MAN7EXT@)
 
1792
for an overview) or from a preprocessor.
 
1793
.LP
 
1794
Preprocessor macros are easy to be recognized.  They enclose their code
 
1795
into a pair of characteristic macros.
 
1796
.LP
 
1797
.TS
 
1798
box, center, tab (@);
 
1799
c | c | c
 
1800
CfCB | CfCB | CfCB.
 
1801
preprocessor@start macro@ end macro
 
1802
=
 
1803
eqn@.PS@.PE
 
1804
grap@.G1@.G2
 
1805
grn@.GS@.GE
 
1806
pic@.PS@.PE
 
1807
refer@.R1@.R2
 
1808
soelim@\fInone@\fInone
 
1809
tbl@.TS@.TE
 
1810
.TE
 
1811
.LP
 
1812
.
 
1813
.\" --------------------------------------------------------------------
 
1814
.SH "ESCAPE SEQUENCES"
 
1815
.\" --------------------------------------------------------------------
 
1816
.
 
1817
Escape sequences are in-line language elements usually introduced by
 
1818
a backslash
 
1819
.'char \(rs
 
1820
and followed by an escape name and sometimes by a required argument.
 
1821
Input processing is continued directly after the escaped character or
 
1822
the argument resp. without an intervening separation character.
 
1823
So there must be a way to determine the end of the escape name and the end
 
1824
of the argument.
 
1825
.LP
 
1826
This is done by enclosing names (escape name and arguments consisting of
 
1827
a variable name) by a pair of brackets
 
1828
.esc[] name
 
1829
and constant arguments (number expressions and characters) by apostrophes
 
1830
(ASCII 0x27) like
 
1831
.IR \(cqconstant\(cq .
 
1832
.LP
 
1833
There are abbreviations for short names.
 
1834
Two character escape names can be specified by an opening parenthesis like
 
1835
.esc( xy
 
1836
without a closing counterpart.
 
1837
And all one-character names different from the special characters
 
1838
.'char [
 
1839
and
 
1840
.'char (
 
1841
can even be specified without a marker in the form
 
1842
.esc \fP\f(CIc .
 
1843
.LP
 
1844
Constant arguments of length
 
1845
.number 1
 
1846
can omit the marker apostrophes, too, but there is no two-character
 
1847
analogue.
 
1848
.LP
 
1849
While 1-character escape sequences are mainly used for in-line functions
 
1850
and system related tasks, the 2-letter names following the
 
1851
.esc( ""
 
1852
construct are used for special characters predefined by the roff system.
 
1853
Names with more than two characters
 
1854
.esc[] name
 
1855
mostly denote user defined named characters (see the
 
1856
.request .char
 
1857
request).
 
1858
.
 
1859
.\" --------------------------------------------------------------------
 
1860
.SS "SINGLE CHARACTER ESCAPES"
 
1861
.\" --------------------------------------------------------------------
 
1862
.
 
1863
.PD 0
 
1864
.
 
1865
.\" --------- comments ---------
 
1866
.
 
1867
.ESC \(dq
 
1868
Beginning of a comment.
 
1869
Everything up to the end of the line is ignored.
 
1870
.
 
1871
.ESC #
 
1872
Everything up to and including the next newline is ignored.
 
1873
This is interpreted in copy mode.
 
1874
This is like
 
1875
.esc \(dq
 
1876
except the ignoring of the terminating newline.
 
1877
.
 
1878
.\" --------- strings ---------
 
1879
.
 
1880
.ESC * s
 
1881
The string stored in the string variable with 1-character name
 
1882
.argument s .
 
1883
.
 
1884
.ESC *( st
 
1885
The string stored in the string variable with 2-character name
 
1886
.argument st .
 
1887
.
 
1888
.ESC[] * stringvar
 
1889
The string stored in the string variable with arbitrary length name
 
1890
.argument stringvar .
 
1891
.
 
1892
.\" --------- macro arguments ---------
 
1893
.
 
1894
.ESC $0
 
1895
The name by which the current macro was invoked.  The
 
1896
.request .als
 
1897
request can make a macro have more than one name.
 
1898
.
 
1899
.ESC $ x
 
1900
Macro argument with 1-place number
 
1901
.argument x ,
 
1902
where
 
1903
.argument x
 
1904
is a digit between 1 and 9.
 
1905
.
 
1906
.ESC $( xy
 
1907
Macro argument with 2-digit number
 
1908
.argument xy .
 
1909
.
 
1910
.ESC[] $ nexp
 
1911
Macro argument with number
 
1912
.argument nexp ,
 
1913
where
 
1914
.argument nexp
 
1915
is a numerical expression evaluating to an integer \(>=1.
 
1916
.
 
1917
.ESC $*
 
1918
In a macro, the concatenation of all the arguments separated by spaces.
 
1919
.
 
1920
.ESC $@
 
1921
In a macro, the concatenation of all the arguments with each surrounded
 
1922
by double quotes, and separated by spaces.
 
1923
.
 
1924
.\" --------- escaped characters ---------
 
1925
.
 
1926
.ESC \(rs
 
1927
reduces to a single backslash; useful to delay its interpretation as
 
1928
escape character in copy mode.
 
1929
For a printable backslash, use
 
1930
.esc e .
 
1931
.
 
1932
.ESC \(cq
 
1933
The acute accent \(aa; same as
 
1934
.esc( aa .
 
1935
Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
 
1936
.
 
1937
.ESC `
 
1938
The grave accent \(ga; same as
 
1939
.esc( ga .
 
1940
Unescaped: left quote, backquote (ASCII 0x60).
 
1941
.
 
1942
.ESC \-
 
1943
The \- sign in the current font.
 
1944
.
 
1945
.ESC .
 
1946
An uninterpreted dot (period), even at start of line.
 
1947
.
 
1948
.ESC %
 
1949
Default optional hyphenation character.
 
1950
.
 
1951
.ESC !
 
1952
Transparent line indicator.
 
1953
.
 
1954
.ESC ? anything\fB?\fP
 
1955
In a diversion, this will transparently embed
 
1956
.argument anything
 
1957
in the diversion.
 
1958
.argument anything
 
1959
is read in copy mode.
 
1960
See also the escape sequences
 
1961
.esc !
 
1962
and
 
1963
.esc ? .
 
1964
.
 
1965
.
 
1966
.\" --------- spacing ---------
 
1967
.
 
1968
.ESC \& space
 
1969
Unpaddable space-size space character (no line break).
 
1970
.
 
1971
.ESC 0
 
1972
Digit width.
 
1973
.
 
1974
.ESC |
 
1975
1/6\ em narrow space character; zero width in nroff.
 
1976
.
 
1977
.ESC ^
 
1978
1/12\ em half-narrow space character; zero width in nroff.
 
1979
.
 
1980
.ESC &
 
1981
Non-printable, zero width character.
 
1982
.
 
1983
.ESC )
 
1984
Like
 
1985
.esc &
 
1986
except that it behaves like a character declared with the cflags
 
1987
request to be transparent for the purposes of end of sentence
 
1988
recognition.
 
1989
.
 
1990
.ESC /
 
1991
Increases the width of the preceding character so that the spacing
 
1992
between that character and the following character will be correct if
 
1993
the following character is a roman character.
 
1994
.
 
1995
.ESC ,
 
1996
Modifies the spacing of the following character so that the spacing
 
1997
between that character and the preceding character will correct if the
 
1998
preceding character is a roman character.
 
1999
.
 
2000
.ESC ~
 
2001
Unbreakable space that stretches like a normal inter-word space when a
 
2002
line is adjusted.
 
2003
.
 
2004
.ESC :
 
2005
Inserts a zero-width break point (similar to
 
2006
.esc %
 
2007
but without a soft hyphen character).
 
2008
.
 
2009
.ESC \& newline
 
2010
Ignored newline, for continuation lines.
 
2011
.
 
2012
.\" --------- structuring ---------
 
2013
.
 
2014
.ESC {
 
2015
Begin conditional input.
 
2016
.
 
2017
.ESC }
 
2018
End conditional input.
 
2019
.
 
2020
.\" --------- longer escape names ---------
 
2021
.
 
2022
.ESC ( st
 
2023
The special character with 2-character name
 
2024
.argument st ,
 
2025
see section
 
2026
.BR "SPECIAL CHARACTERS" .
 
2027
.
 
2028
.ESC[] \& name
 
2029
The named character with arbitrary length name
 
2030
.argument name .
 
2031
.
 
2032
.\" --------- alphabetical escapes ---------
 
2033
.
 
2034
.ESC a
 
2035
Non-interpreted leader character.
 
2036
.
 
2037
.ESCq A anything
 
2038
If
 
2039
.argument anything
 
2040
is acceptable as a name of a string, macro, diversion, register,
 
2041
environment or font it expands to
 
2042
.number 1 ,
 
2043
and
 
2044
.number 0
 
2045
otherwise.
 
2046
.
 
2047
.ESCq b abc...
 
2048
Bracket building function.
 
2049
.
 
2050
.ESCq B anything
 
2051
If
 
2052
.argument anything
 
2053
is acceptable as a valid numeric expression it expands to
 
2054
.number 1 ,
 
2055
and
 
2056
.number 0
 
2057
otherwise.
 
2058
.
 
2059
.ESC c
 
2060
Interrupt text processing.
 
2061
.
 
2062
.ESCq C char
 
2063
The character called
 
2064
.argument char ;
 
2065
same as
 
2066
.esc[] char ,
 
2067
but compatible to other roff versions.
 
2068
.
 
2069
.ESC d
 
2070
Forward (down) 1/2 em vertical unit (1/2 line in nroff).
 
2071
.
 
2072
.ESCq D charseq
 
2073
Draw a graphical element defined by the characters in
 
2074
.argument charseq ;
 
2075
see groff info file for details.
 
2076
.
 
2077
.ESC e
 
2078
Printable version of the current escape character.
 
2079
.
 
2080
.ESC E
 
2081
Equivalent to an escape character, but is not interpreted in copy-mode.
 
2082
.
 
2083
.ESC f F
 
2084
Change to font with 1-character name or 1-digit number
 
2085
.argument F .
 
2086
.
 
2087
.ESC f( fo
 
2088
Change to font with 2-characer name or 2-digit number
 
2089
.argument fo .
 
2090
.
 
2091
.ESC[] f font
 
2092
Change to font with arbitrary length name or number expression
 
2093
.argument font .
 
2094
.
 
2095
.ESC[] g reg
 
2096
Return format of register with name
 
2097
.argument reg
 
2098
suitable for
 
2099
.request .af .
 
2100
Alternative forms
 
2101
.esc(arg g xy
 
2102
and
 
2103
.escarg g x .
 
2104
.
 
2105
.ESCq h N
 
2106
Local horizontal motion; move right
 
2107
.argument N
 
2108
(left if negative).
 
2109
.
 
2110
.ESCq H N
 
2111
Set height of current font to
 
2112
.argument N .
 
2113
.
 
2114
.ESC[] k reg
 
2115
Mark horizontal input place in register with arbitrary length name
 
2116
.argument reg .
 
2117
Alternative forms
 
2118
.esc(arg k xy
 
2119
and
 
2120
.escarg k x .
 
2121
.
 
2122
.ESCq l Nc
 
2123
Horizontal line drawing function (optionally using character
 
2124
.argument c ).
 
2125
.
 
2126
.ESCq L Nc
 
2127
Vertical line drawing function (optionally using character
 
2128
.argument c ).
 
2129
.
 
2130
.ESC n r
 
2131
The numerical value stored in the register variable with the 1-character
 
2132
name
 
2133
.argument r .
 
2134
.
 
2135
.ESC n( re
 
2136
The numerical value stored in the register variable with the 2-character
 
2137
name
 
2138
.argument re .
 
2139
.
 
2140
.ESC[] n reg
 
2141
The numerical value stored in the register variable with arbitrary
 
2142
lenght name
 
2143
.argument reg .
 
2144
.
 
2145
.ESCq N n
 
2146
Typeset the character with code
 
2147
.argument n
 
2148
in the current font, no special fonts are searched.  Useful for adding
 
2149
characters to a font using the
 
2150
.request .char
 
2151
request.
 
2152
.
 
2153
.ESCq o abc...
 
2154
Overstrike characters
 
2155
.argument a ,
 
2156
.argument b ,
 
2157
.argument c ,
 
2158
etc.
 
2159
.
 
2160
.ESC p
 
2161
Break and spread output line.
 
2162
.
 
2163
.ESC r
 
2164
Reverse 1\ em vertical motion (reverse line in nroff).
 
2165
.
 
2166
.ESCq R name \(+-n
 
2167
The same as
 
2168
.request .nr
 
2169
.argument name
 
2170
.argument \(+-n .
 
2171
.
 
2172
.ESC[] s \(+-N
 
2173
Set the point size to
 
2174
.I N
 
2175
scaled points.  Note the alternative forms
 
2176
.BI \(rss \(+- [ N ]\c
 
2177
,
 
2178
.BI \(rss' \(+-N '\c
 
2179
,
 
2180
.BI \(rss \(+- ' N '\c
 
2181
,
 
2182
.esc(arg s \(+-xy ,
 
2183
.BI \(rss \(+- ( xy\c
 
2184
,
 
2185
.escarg s \(+-x .
 
2186
Same as
 
2187
.request .ps
 
2188
request.
 
2189
.
 
2190
.ESCq S N
 
2191
Slant output
 
2192
.argument N
 
2193
degrees.
 
2194
.
 
2195
.ESC t
 
2196
Non-interpreted horizontal tab.
 
2197
.
 
2198
.ESC u
 
2199
Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
 
2200
.
 
2201
.ESCq v N
 
2202
Local vertical motion; move down
 
2203
.argument N
 
2204
(up if negative).
 
2205
.
 
2206
.ESC[] V env
 
2207
The contents of the environment variable
 
2208
.argument env .
 
2209
Alternative forms
 
2210
.esc(arg V xy
 
2211
and
 
2212
.escarg V x .
 
2213
.
 
2214
.ESCq w string
 
2215
The width of the character sequence
 
2216
.argument string .
 
2217
.
 
2218
.ESCq x N
 
2219
Extra line-space function (negative before, positive after).
 
2220
.
 
2221
.ESCq X string
 
2222
Output
 
2223
.argument string
 
2224
as device control function.
 
2225
.
 
2226
.ESC[] Y name
 
2227
Output string variable or macro
 
2228
.argument name
 
2229
uninterpreted as device control function.
 
2230
Alternative forms
 
2231
.esc(arg Y xy
 
2232
and
 
2233
.escarg Y x .
 
2234
.
 
2235
.ESC z c
 
2236
Print
 
2237
.argument c
 
2238
with zero width (without spacing).
 
2239
.
 
2240
.ESCq Z anything
 
2241
Print
 
2242
.argument anything
 
2243
and then restore the horizontal and vertical position;
 
2244
.argument anything
 
2245
may not contain tabs or leaders.
 
2246
.PD
 
2247
.LP
 
2248
The escape sequences
 
2249
.esc e ,
 
2250
.esc . ,
 
2251
.esc \(dq ,
 
2252
.esc $ ,
 
2253
.esc * ,
 
2254
.esc a ,
 
2255
.esc n ,
 
2256
.esc t ,
 
2257
.esc g ,
 
2258
and
 
2259
.escarg \& newline
 
2260
are interpreted in copy mode.
 
2261
.LP
 
2262
Escape sequences starting with
 
2263
.esc (
 
2264
or
 
2265
.esc [
 
2266
do not represent single character escape sequences, but introduce escape
 
2267
names with two or more characters.
 
2268
.LP
 
2269
If a backslash is followed by a character that does not constitute a
 
2270
defined escape sequence the backslash is silently ignored and the
 
2271
character maps to itself.
 
2272
.
 
2273
.\" --------------------------------------------------------------------
 
2274
.SS "SPECIAL CHARACTERS"
 
2275
.\" --------------------------------------------------------------------
 
2276
Common special characters are predefined by escape sequences of the form
 
2277
.(esc \fP\f(CIxy
 
2278
with characters
 
2279
.argument x
 
2280
and
 
2281
.argument y .
 
2282
Some of these exist in the usual font while most of them are only
 
2283
available in the special font.  Below you'll find a selection of the most
 
2284
important glyphs; a complete list can be found in
 
2285
.BR groff_char (@MAN7EXT@).
 
2286
.RS
 
2287
.LP
 
2288
.PD 0
 
2289
.
 
2290
.ESc bu Bullet sign
 
2291
.ESc co Copyright
 
2292
.ESc ct Cent
 
2293
.ESc dd Double dagger
 
2294
.ESc de Degree
 
2295
.ESc dg Dagger
 
2296
.ESc em Em-dash
 
2297
.ESc hy Hyphen
 
2298
.ESc rg Registered sign
 
2299
.ESc sc Section sign
 
2300
.ESc ul Underline character
 
2301
.ESc == Identical
 
2302
.ESc >= Larger or equal
 
2303
.ESc <= Less or equal
 
2304
.ESc != Not equal
 
2305
.ESc -> Right arrow
 
2306
.ESc <- Left arrow
 
2307
.ESc +- Plus-minus sign
 
2308
.PD
 
2309
.RE
 
2310
.
 
2311
.\" --------------------------------------------------------------------
 
2312
.SH REGISTERS
 
2313
.\" --------------------------------------------------------------------
 
2314
Registers are variables that store a value.
 
2315
In groff, most registers store numerical values (see section
 
2316
.B NUMERICAL EXPRESSIONS
 
2317
above), but some can also hold a string value.
 
2318
.LP
 
2319
Each register is given a name.
 
2320
Arbitrary registers can be defined and set with the request
 
2321
.request .nr
 
2322
.argument register .
 
2323
.LP
 
2324
The value stored in a register can be retrieved by the escape sequences
 
2325
introduced by
 
2326
.esc n .
 
2327
.LP
 
2328
Most useful are predefined registers.
 
2329
In the following the notation
 
2330
.argument name
 
2331
is used to refer to a register called
 
2332
.register name
 
2333
to make clear that we speak about registers.
 
2334
Please keep in mind that the
 
2335
.esc en[]
 
2336
decoration is not part of the register name.
 
2337
.
 
2338
.\" --------------------------------------------------------------------
 
2339
.SS "READ-ONLY REGISTERS"
 
2340
.\" --------------------------------------------------------------------
 
2341
The following registers have predefined values that should not be
 
2342
modified by the user (usually, registers starting with a dot a read-only).
 
2343
Mostly, they provide information on the current settings or store results
 
2344
from request calls.
 
2345
.LP
 
2346
.PD 0
 
2347
.REG .$ Number of arguments in the current macro.
 
2348
.REG .a
 
2349
Post-line extra line-space most recently utilized using
 
2350
.escarg x 'N' .
 
2351
.REG .A
 
2352
Set to
 
2353
.number 1
 
2354
in
 
2355
.B troff
 
2356
if option
 
2357
.B \-A
 
2358
is used; always
 
2359
.number 1
 
2360
in
 
2361
.BR nroff .
 
2362
.REG .c Current input line number.
 
2363
.REG .C 1 if compatibility mode is in effect, 0 otherwise.
 
2364
.REG .cdp
 
2365
The depth of the last character added to the current environment.
 
2366
It is positive if the character extends below the baseline.
 
2367
.REG .ce
 
2368
The number of lines remaining to be centered, as set by the
 
2369
.request .ce
 
2370
request.
 
2371
.REG .cht
 
2372
The height of the last character added to the current environment.
 
2373
It is positive if the character extends above the baseline.
 
2374
.REG .csk
 
2375
The skew of the last character added to the current environment.
 
2376
The skew of a character is how far to the right of the center of a character
 
2377
the center of an accent over that character should be placed.
 
2378
.REG .d
 
2379
Current vertical place in current diversion; equal to register
 
2380
.register nl .
 
2381
.REG .ev The name or number of the current environment (string-valued).
 
2382
.REG .f Current font number.
 
2383
.REG .fam  The current font family (string-valued).
 
2384
.REG .fp The number of the next free font position.
 
2385
.REG .g
 
2386
Always 1 in GNU troff.
 
2387
Macros should use it to test if running under groff.
 
2388
.REG .h Text base-line high-water mark on current page or diversion.
 
2389
.REG .H Available horizontal resolution in basic units.
 
2390
.REG .hla
 
2391
The current hyphenation language as set by the
 
2392
.B .hla
 
2393
request.
 
2394
.REG .hlc
 
2395
The number of immediately preceding consecutive hyphenated lines.
 
2396
.REG .hlm
 
2397
The maximum allowed number of consecutive hyphenated lines, as set by
 
2398
the
 
2399
.request .hlm
 
2400
request.
 
2401
.REG .hy
 
2402
The current hyphenation flags (as set by the
 
2403
.request .hy
 
2404
request).
 
2405
.REG .hym
 
2406
The current hyphenation margin (as set by the
 
2407
.request .hym
 
2408
request).
 
2409
.REG .hys
 
2410
The current hyphenation space (as set by the
 
2411
.request .hys
 
2412
request).
 
2413
.REG .i Current ident.
 
2414
.REG .in The indent that applies to the current output line.
 
2415
.REG .int
 
2416
Positive if last output line contains
 
2417
.esc c .
 
2418
.REG .kern
 
2419
.number 1
 
2420
if pairwise kerning is enabled,
 
2421
.number 0
 
2422
otherwise.
 
2423
.REG .l Current line length.
 
2424
.REG .lg
 
2425
The current ligature mode (as set by the
 
2426
.request .lg
 
2427
request).
 
2428
.REG .linetabs
 
2429
The current line-tabs mode (as set by the
 
2430
.request .linetabs
 
2431
request).
 
2432
.REG .ll The line length that applies to the current output line.
 
2433
.REG .lt
 
2434
The title length (as set by the
 
2435
.request .lt
 
2436
request).
 
2437
.REG .n Length of text portion on previous output line.
 
2438
.REG .ne
 
2439
The amount of space that was needed in the last
 
2440
.request .ne
 
2441
request that caused a trap to be sprung.
 
2442
Useful in conjunction with
 
2443
.register .trunc .
 
2444
.REG .ns
 
2445
.number 1
 
2446
if in no-space mode,
 
2447
.number 0
 
2448
otherwise.
 
2449
.REG .o Current page offset.
 
2450
.REG .p Current page length.
 
2451
.REG .pn
 
2452
The number of the next page: either the value set by a
 
2453
.request .pn
 
2454
request, or the number of the current page plus\ 1.
 
2455
.REG .ps The current pointsize in scaled points.
 
2456
.REG .psr The last-requested pointsize in scaled points.
 
2457
.REG .rj
 
2458
The number of lines to be right-justified as set by the rj request.
 
2459
.REG .s Current point size as a decimal fraction.
 
2460
.REG .sr
 
2461
The last requested pointsize in points as a decimal fraction
 
2462
(string-valued).
 
2463
.REG .t Distance to the next trap.
 
2464
.REG .T
 
2465
Set to
 
2466
.number 1
 
2467
if option
 
2468
.B \-T
 
2469
is used.
 
2470
.REG .tabs
 
2471
A string representation of the current tab settings suitable for use as
 
2472
an argument to the
 
2473
.request .ta
 
2474
request.
 
2475
.REG .trunc
 
2476
The amount of vertical space truncated by the most recently sprung
 
2477
vertical position trap, or, if the trap was sprung by a
 
2478
.request .ne
 
2479
request, minus the amount of vertical motion produced by
 
2480
.request .ne .
 
2481
request.
 
2482
In other words, at the point a trap is sprung, it represents the difference
 
2483
of what the vertical position would have been but for the trap, and what the
 
2484
vertical position actually is.
 
2485
Useful in conjunction with the
 
2486
.register .ne
 
2487
register.
 
2488
.REG .ss
 
2489
The value of the parameters set by the first argument of the
 
2490
.request .ss
 
2491
request.
 
2492
.REG .sss
 
2493
The value of the parameters set by the second argument of the
 
2494
.request .ss
 
2495
request.
 
2496
.REG .u Equal to 1 bin fill mode and 0 in nofill mode.
 
2497
.REG .v Current vertical line spacing.
 
2498
.REG .V Available vertical resolution in basic units.
 
2499
.REG .vpt
 
2500
.number 1
 
2501
if vertical position traps are enabled,
 
2502
.number 0
 
2503
otherwise.
 
2504
.REG .w Width of previous character.
 
2505
.REG .warn
 
2506
The sum of the number codes of the currently enabled warnings.
 
2507
.REG .x The major version number.
 
2508
.REG .y The minor version number.
 
2509
.REG .Y The revision number of groff.
 
2510
.REG .z Name of current diversion.
 
2511
.PD
 
2512
.
 
2513
.\" --------------------------------------------------------------------
 
2514
.SS "WRITABLE REGISTERS"
 
2515
.\" --------------------------------------------------------------------
 
2516
The following registers can be read and written by the user.
 
2517
They have predefined default values, but these can be modified for
 
2518
customizing a document.
 
2519
.LP
 
2520
.PD 0
 
2521
.REG % Current page number.
 
2522
.REG c. Current input line number.
 
2523
.REG ct Character type (set by width function
 
2524
.esc w ).
 
2525
.REG dl Maximal width of last completed diversion.
 
2526
.REG dn Height of last completed diversion.
 
2527
.REG dw Current day of week (1-7).
 
2528
.REG dy Current day of month (1-31).
 
2529
.REG hp Current horizontal position at input line.
 
2530
.REG llx
 
2531
Lower left x-coordinate (in PostScript units) of a given PostScript
 
2532
image (set by
 
2533
.request .psbb ).
 
2534
.REG lly
 
2535
Lower left y-coordinate (in PostScript units) of a given PostScript
 
2536
image (set by
 
2537
.request .psbb ).
 
2538
.REG ln Output line number.
 
2539
.REG mo Current month (1-12).
 
2540
.REG nl Vertical position of last printed text base-line.
 
2541
.REG rsb Like
 
2542
.register sb ,
 
2543
but takes account of the heights and depths of characters.
 
2544
.REG rst
 
2545
Like
 
2546
.register st ,
 
2547
but takes account of the heights and depths of characters.
 
2548
.REG sb
 
2549
Depth of string below base line (generated by width function
 
2550
.esc w ).
 
2551
.REG skw
 
2552
Right skip width from the center of the last character in the
 
2553
.esc w
 
2554
argument.
 
2555
.REG slimit
 
2556
If greater than 0, the maximum number of objects on the input stack.
 
2557
If \(<=0 there is no limit, i.e., recursion can continue until virtual
 
2558
memory is exhausted.
 
2559
.REG ssc
 
2560
The amount of horizontal space (possibly negative) that should be added
 
2561
to the last character before a subscript (generated by width function
 
2562
.esc w ).
 
2563
.REG st
 
2564
Height of string above base line (generated by width function
 
2565
.esc w ).
 
2566
.REG systat
 
2567
The return value of the
 
2568
.I system()
 
2569
function executed by the last
 
2570
.request .sy
 
2571
request.
 
2572
.REG urx
 
2573
Upper right x-coordinate (in PostScript units) of a given PostScript
 
2574
image (set by
 
2575
.request .psbb ).
 
2576
.REG ury
 
2577
Upper right y-coordinate (in PostScript units) of a given PostScript
 
2578
image (set by
 
2579
.request .psbb ).
 
2580
.REG year The current year (year 2000 compliant).
 
2581
.REG yr
 
2582
Current year minus 1900.  For Y2K compliance use register
 
2583
.register year
 
2584
instead.
 
2585
.PD
 
2586
.
 
2587
.\" --------------------------------------------------------------------
 
2588
.SH WARNINGS
 
2589
.\" --------------------------------------------------------------------
 
2590
Each warning generated by groff is identified by a name and a code
 
2591
number.  The codes are powers of 2 to allow bit-encoding with a single
 
2592
integer.  There are also names that can be used to refer to groups of
 
2593
warnings.
 
2594
.LP
 
2595
The name associated with a warning is used by the
 
2596
.option \-w
 
2597
and
 
2598
.option \-W
 
2599
options;
 
2600
the number code is used by the
 
2601
.request .warn
 
2602
request and by the
 
2603
.esc[arg] n warn
 
2604
register.
 
2605
.LP
 
2606
.PD 0
 
2607
.Warning all group
 
2608
All warnings except
 
2609
.warning di ,
 
2610
.warning mac
 
2611
and
 
2612
.warning reg .
 
2613
Intended to cover all warnings with traditional macro packages.
 
2614
.Warning break 4
 
2615
In fill mode, lines which could not be broken so that their length was
 
2616
less than the line length.  This is enabled by default.
 
2617
.Warning char 1
 
2618
Non-existent characters.  This is enabled by default.
 
2619
.Warning delim 8
 
2620
Missing or mismatched closing delimiters.
 
2621
.Warning di 256
 
2622
Use of
 
2623
.request .di
 
2624
or
 
2625
.request .da
 
2626
without an argument when there is no current diversion.
 
2627
.Warning el 16
 
2628
Use of the
 
2629
.request .el
 
2630
request with no matching
 
2631
.request .ie
 
2632
request.
 
2633
.Warning escape 32768
 
2634
Unrecognized escape sequence.  Then the escape character is ignored.
 
2635
.Warning font 131072
 
2636
Non-existent fonts.  This is enabled by default.
 
2637
.Warning ig 262144
 
2638
Illegal escapes in text ignored with the
 
2639
.request \.ig
 
2640
request.  These are conditions that are errors when they occur outside
 
2641
of ignored text.
 
2642
.Warning mac 512
 
2643
Use of undefined strings, macros, and diversions.  Automatically handled
 
2644
as empty.  Usually, only one warning per name.
 
2645
.Warning missing 8192
 
2646
Request that is missing non-optional arguments.
 
2647
.Warning input 16384
 
2648
Illegal input character.
 
2649
.Warning number 2
 
2650
Invalid numeric expressions.  This is enabled by default.
 
2651
.Warning range 64
 
2652
Out of range arguments.
 
2653
.Warning reg 1024
 
2654
Use of undefined number register.  Automatically defined as having
 
2655
value 0.  Usually, only one warning per name.
 
2656
.Warning right-brace 4096
 
2657
Use of
 
2658
.esc }
 
2659
where a number was expected.
 
2660
.Warning scale 32
 
2661
Meaningless scaling indicators.
 
2662
.Warning space 65536
 
2663
Missing space between a request or macro and its argument.  Then no
 
2664
macro is automatically defined.  This is enabled by default.  This
 
2665
warning will never occur in compatibility mode.
 
2666
.Warning syntax 128
 
2667
Dubious syntax in numeric expressions.
 
2668
.Warning tab 2048
 
2669
Inappropriate use of a tab character (either in an unquoted macro
 
2670
argument or where a number was expected).
 
2671
.Warning w group
 
2672
All warnings.
 
2673
.PD
 
2674
.LP
 
2675
.TS
 
2676
tab(@), box, expand;
 
2677
c c c | c  c  c | c  c  c
 
2678
R RI CB | R RI CB | R RI CB.
 
2679
Bit@Code@Warning@Bit@Code@Warning@Bit@Code@Warning
 
2680
_
 
2681
0@1@char@8@256@di@16@65536@space
 
2682
1@2@number@9@512@mac@17@131072@font
 
2683
2@4@break@10@1024@reg@18@262144@ig
 
2684
3@8@delim@11@2048@tab
 
2685
4@16@el@12@4096@right-brace
 
2686
5@32@scale@13@8192@missing
 
2687
6@64@range@14@16384@input
 
2688
7@128@syntax@15@32768@escape
 
2689
.TE
 
2690
.LP
 
2691
.
 
2692
.\" --------------------------------------------------------------------
 
2693
.SH COMPATIBILITY
 
2694
.\" --------------------------------------------------------------------
 
2695
.I groff
 
2696
provides a
 
2697
.B compatibility mode
 
2698
that allows to process roff code written for classical
 
2699
.troff
 
2700
or for other implementations of roff in a consistent way.
 
2701
.LP
 
2702
Compatibility mode can be turned on with the
 
2703
.option \-C
 
2704
command line option, and turned on or off with the
 
2705
.request .cp
 
2706
request.  The number register
 
2707
.esc(arg n .C
 
2708
is
 
2709
.number 1
 
2710
if compatibility mode is on,
 
2711
.number 0
 
2712
otherwise.
 
2713
.LP
 
2714
This became necessary because the GNU concept for long names causes some
 
2715
incompatibilities.
 
2716
.I Classical troff
 
2717
will interpret
 
2718
.IP
 
2719
.B
 
2720
\&.dsabcd
 
2721
.LP
 
2722
as defining a string
 
2723
.B ab
 
2724
with contents
 
2725
.BR cd .
 
2726
Normally,
 
2727
.I groff
 
2728
will interpret this as a call of a macro named
 
2729
.request dsabcd .
 
2730
.LP
 
2731
Also
 
2732
.I classical troff
 
2733
will interpret
 
2734
.esc *[
 
2735
or
 
2736
.esc n[
 
2737
as references to a string or number register called
 
2738
.register [ .
 
2739
In
 
2740
.I GNU native
 
2741
.IR mode ,
 
2742
however, this will normally be interpreted as the start of a long name.
 
2743
.LP
 
2744
In
 
2745
.I compatibility
 
2746
.IR mode ,
 
2747
groff will interpret these things in the traditional way, but long names
 
2748
are not recognized.
 
2749
.LP
 
2750
On the other hand, groff in
 
2751
.I GNU native mode
 
2752
does not allow to use the escape sequences
 
2753
.esc e ,
 
2754
.esc | ,
 
2755
.esc ^ ,
 
2756
.esc & ,
 
2757
.esc } ,
 
2758
.esc { ,
 
2759
.esc "\ " (space),
 
2760
.esc ' ,
 
2761
.esc ` ,
 
2762
.esc - ,
 
2763
.esc _ ,
 
2764
.esc ! ,
 
2765
.esc % ,
 
2766
and
 
2767
.esc c
 
2768
in names of strings, macros, diversions, number registers, fonts or
 
2769
environments, whereas
 
2770
.I classical troff
 
2771
does.  The
 
2772
.esc A
 
2773
escape sequence can be helpful in avoiding these escape sequences in
 
2774
names.
 
2775
.LP
 
2776
Fractional pointsizes cause one noteworthy incompatibility.
 
2777
In
 
2778
.I classical
 
2779
.IR troff ,
 
2780
the
 
2781
.request .ps
 
2782
request ignores scale indicators and so
 
2783
.RS
 
2784
.LP
 
2785
.B .ps\ 10u
 
2786
.RE
 
2787
.LP
 
2788
will set the pointsize to 10 points, whereas in groff native mode the
 
2789
pointsize will be set to 10 scaled points.
 
2790
.LP
 
2791
In
 
2792
.I groff
 
2793
mode, there is a fundamental difference between unformatted input
 
2794
characters, and formatted output characters.
 
2795
Everything that affects how an output character will be output is stored
 
2796
with the character; once an output character has been constructed it is
 
2797
unaffected by any subsequent requests that are executed, including the
 
2798
.request .bd ,
 
2799
.request .cs ,
 
2800
.request .tkf ,
 
2801
.request .tr ,
 
2802
or
 
2803
.request .fp
 
2804
requests.
 
2805
.LP
 
2806
Normally output characters are constructed from input characters at the
 
2807
moment immediately before the character is added to the current output
 
2808
line.
 
2809
Macros, diversions and strings are all, in fact, the same type of object;
 
2810
they contain lists of input characters and output characters in any
 
2811
combination.
 
2812
.LP
 
2813
An output character does not behave like an input character for the
 
2814
purposes of macro processing; it does not inherit any of the special
 
2815
properties that the input character from which it was constructed might
 
2816
have had.
 
2817
The following example will make things clearer.
 
2818
.LP
 
2819
.RS
 
2820
.nf
 
2821
.ft B
 
2822
\&.di x
 
2823
\(rs\(rs\(rs\(rs
 
2824
\&.br
 
2825
\&.di
 
2826
\&.x
 
2827
.ft
 
2828
.fi
 
2829
.RE
 
2830
.LP
 
2831
In
 
2832
.I GNU mode
 
2833
this will be printed as
 
2834
.esc \(rs .
 
2835
So each pair of input backslashes
 
2836
.'char \(rs\(rs
 
2837
is turned into a single output backslash
 
2838
.'char \(rs
 
2839
and the resulting output backslashes are not interpreted as escape
 
2840
characters when they are reread.
 
2841
.LP
 
2842
.I Classical troff
 
2843
would interpret them as escape characters when they were reread and
 
2844
would end up printing a single backslash
 
2845
.'char \(rs .
 
2846
.LP
 
2847
The correct way to get a printable
 
2848
.'char \(rs
 
2849
is to use the
 
2850
.esc e
 
2851
escape sequence.  This will always print a single instance of the
 
2852
current escape character, regardless of whether or not it is used in a
 
2853
diversion.  It will also work in both GNU mode and compatibility mode.
 
2854
.LP
 
2855
To store an escape sequence in a diversion that will be interpreted when
 
2856
the diversion is reread, either the traditional
 
2857
.esc !
 
2858
transparent output facility or the
 
2859
new
 
2860
.esc ?
 
2861
escape sequence can be used.
 
2862
.
 
2863
.\" --------------------------------------------------------------------
 
2864
.SH BUGS
 
2865
.\" --------------------------------------------------------------------
 
2866
At the moment, the documentation of the groff system is in a state of
 
2867
change and evolution.  It is possible that there are small
 
2868
inconsistencies between different documents temporarily.
 
2869
.LP
 
2870
The
 
2871
.B WARNINGS
 
2872
section belongs to
 
2873
.BR troff (@MAN1EXT@).
 
2874
.
 
2875
.\" --------------------------------------------------------------------
 
2876
.SH AUTHOR
 
2877
.\" --------------------------------------------------------------------
 
2878
This document is part of groff, the GNU roff distribution.  It was
 
2879
written by Bernd Warken <bwarken@mayn.de>.
 
2880
.LP
 
2881
It is distributed under the terms of the FDL (GNU Free Documentation
 
2882
License) version 1.1 or later.  You should have received a copy of the
 
2883
FDL on your system, it is also available on-line under
 
2884
.RS
 
2885
.LP
 
2886
.IR http://www.gnu.org/copyleft/fdl.html .
 
2887
.RE
 
2888
.LP
 
2889
Formerly, the extensions of the groff language were kept in the manual
 
2890
page
 
2891
.BR troff (@MAN1EXT@).
 
2892
This document contains the essential parts of that documentation, but
 
2893
the gory details are found in the groff info file.
 
2894
.
 
2895
.\" --------------------------------------------------------------------
 
2896
.SH "SEE ALSO"
 
2897
.\" --------------------------------------------------------------------
 
2898
The main source of information for the groff language is the
 
2899
.B groff
 
2900
.BR info (1)
 
2901
file.
 
2902
.LP
 
2903
For a survey of roff and the groff system and further documentation
 
2904
pointers see
 
2905
.BR roff (@MAN7EXT@).
 
2906
.LP
 
2907
The formatter programs are described in
 
2908
.BR groff (@MAN1EXT@)
 
2909
and
 
2910
.BR troff (@MAN1EXT@);
 
2911
a complete of all predefined glyph names can be found in
 
2912
.BR groff_char (@MAN7EXT@).
 
2913
.LP
 
2914
The classical
 
2915
.I troff
 
2916
documentation is available on-line at
 
2917
.RS
 
2918
.LP
 
2919
.I http://cm.bell-labs.com/cm/cs/cstr.html
 
2920
.RE
 
2921
and
 
2922
.RS
 
2923
.IR http://www.kohala.com/start/troff/ .
 
2924
.
 
2925
.\" Local Variables:
 
2926
.\" mode: nroff
 
2927
.\" End: