/contrib/groff/man/groff_diff.man

https://bitbucket.org/freebsd/freebsd-head/ · Unknown · 3848 lines · 3842 code · 6 blank · 0 comment · 0 complexity · cbc9dff3c7997ddca4916803cc304d3c MD5 · raw file

Large files are truncated click here to view the full file

  1. '\" e
  2. .\" The above line should force the use of eqn as a preprocessor
  3. .ig
  4. groff_diff.man
  5. Last update : 26 Jul 2004
  6. This file is part of groff, the GNU roff type-setting system.
  7. It is the source of the man-page groff_diff(7).
  8. Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
  9. written by James Clark
  10. modified by Werner Lemberg <wl@gnu.org>
  11. Bernd Warken <bwarken@mayn.de>
  12. Permission is granted to copy, distribute and/or modify this document
  13. under the terms of the GNU Free Documentation License, Version 1.1 or
  14. any later version published by the Free Software Foundation; with the
  15. Invariant Sections being this .ig-section and AUTHORS, with no
  16. Front-Cover Texts, and with no Back-Cover Texts.
  17. A copy of the Free Documentation License is included as a file called
  18. FDL in the main directory of the groff source package.
  19. ..
  20. .
  21. .\" --------------------------------------------------------------------
  22. .\" Setup
  23. .\" --------------------------------------------------------------------
  24. .
  25. .do nr groff_diff_C \n[.C]
  26. .cp 0
  27. .
  28. .mso www.tmac
  29. .
  30. .if n \{\
  31. . mso tty-char.tmac
  32. . ftr CR R
  33. . ftr CI I
  34. . ftr CB B
  35. .\}
  36. .
  37. .if '\*[.T]'dvi' \
  38. . ftr CB CW
  39. .
  40. .\" define a string tx for the TeX logo
  41. .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
  42. .el .ds tx TeX
  43. .
  44. .
  45. .\" --------------------------------------------------------------------
  46. .\" start of macro definitions
  47. .
  48. .eo
  49. .
  50. .de c
  51. ..
  52. .
  53. .de TQ
  54. . br
  55. . ns
  56. . TP \$1
  57. ..
  58. .de Text
  59. . RI "\$*"
  60. ..
  61. .de Topic
  62. . TP 2m
  63. . Text \[bu]
  64. ..
  65. .de squoted
  66. . ds @arg1 \$1
  67. . shift
  68. .\" Text \[oq]\f[CB]\*[@arg1]\f[]\[cq]\$*
  69. . Text \[oq]\f[B]\*[@arg1]\f[]\[cq]\$*
  70. . rm @arg1
  71. ..
  72. .c A shell command line
  73. .de ShellCommand
  74. . br
  75. . IR "shell#" "\h'1m'\f[CB]\$*\f[]\/"
  76. ..
  77. .c reference of a request or macro
  78. .de request
  79. . ds @arg1 \$1
  80. . shift 1
  81. .\" Text \f[CB]\*[@arg1]\f[]\$*
  82. . Text \f[B]\*[@arg1]\f[]\$*
  83. . rm @arg1
  84. ..
  85. .als option request
  86. .
  87. .c representation of an escape sequence
  88. .de esc
  89. . ds @arg1 \$1
  90. . shift
  91. .\" Text \f[CB]\[rs]\*[@arg1]\f[]\$*
  92. . Text \f[B]\[rs]\*[@arg1]\&\f[]\$*
  93. . rm @arg1
  94. ..
  95. .ec
  96. .\" end of macro definitions
  97. .
  98. .\" from old groff_out.man
  99. .ie \n(.g \
  100. . ds ic \/
  101. .el \
  102. . ds ic \^
  103. .
  104. .
  105. .\" --------------------------------------------------------------------
  106. .\" Title
  107. .\" --------------------------------------------------------------------
  108. .
  109. .TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
  110. .SH NAME
  111. groff_diff \- differences between GNU troff and classical troff
  112. .
  113. .
  114. .\" --------------------------------------------------------------------
  115. .SH DESCRIPTION
  116. .\" --------------------------------------------------------------------
  117. .
  118. This manual page describes the language differences between
  119. .IR groff ,
  120. the GNU
  121. .I roff
  122. text processing system and the classical
  123. .I roff
  124. formatter of the freely available Unix\~7 of the 1970s, documented in
  125. the
  126. .I Troff User's Manual
  127. by
  128. .I Osanna
  129. and
  130. .IR Kernighan .
  131. This inludes the roff language as well as the intermediate output
  132. format (troff output).
  133. .
  134. .P
  135. The section
  136. .I SEE ALSO
  137. gives pointers to both the classical
  138. .I roff
  139. and the modern
  140. .I groff
  141. documentation.
  142. .
  143. .
  144. .\" --------------------------------------------------------------------
  145. .SH "GROFF LANGUAGE"
  146. .\" --------------------------------------------------------------------
  147. .
  148. In this section, all additional features of
  149. .I groff
  150. compared to the classical Unix\~7
  151. .I troff
  152. are described in detail.
  153. .
  154. .
  155. .\" --------------------------------------------------------------------
  156. .SS "Long names"
  157. .\" --------------------------------------------------------------------
  158. .
  159. The names of number registers, fonts, strings/\:macros/\:diversions,
  160. special characters (glyphs), and colors can be of any length.
  161. .
  162. In escape sequences, additionally to the classical
  163. .BI ( xx
  164. construction for a two-character name, you can use
  165. .BI [ xxx ]
  166. for a name of arbitrary length.
  167. .
  168. .TP
  169. .BI \[rs][ xxx ]
  170. Print the special character (glyph) called
  171. .IR xxx .
  172. .
  173. .TP
  174. .BI \[rs][ "comp1 comp2 .\|.\|." ]
  175. Print composite glyph consisting of multiple components.
  176. .
  177. Example: `\[rs][A\~ho]' is capital letter A with ogonek which finally maps
  178. to glyph name `u0041_0328'.
  179. .
  180. See the
  181. .I groff info file
  182. for details how a glyph name for a composite glyph is constructed, and
  183. .BR groff_char (@MAN7EXT@)
  184. for list of glyph name components used composite glyph names.
  185. .
  186. .TP
  187. .BI \[rs]f[ xxx ]
  188. Set font
  189. .IR xxx .
  190. .
  191. Additionally,
  192. .B \[rs]f[]
  193. is a new syntax equal to
  194. .BR \[rs]fP ,
  195. i.e., to return to the previous font.
  196. .
  197. .TP
  198. .BI \[rs]*[ "xxx arg1 arg2 .\|.\|." ]
  199. Interpolate string
  200. .IR xxx ,
  201. taking
  202. .IR arg1 ,
  203. .IR arg2 ,
  204. .I .\|.\|.\&
  205. as arguments.
  206. .
  207. .TP
  208. .BI \[rs]n[ xxx ]
  209. Interpolate number register
  210. .IR xxx .
  211. .
  212. .
  213. .\" --------------------------------------------------------------------
  214. .SS "Fractional pointsizes"
  215. .\" --------------------------------------------------------------------
  216. .
  217. A
  218. .I scaled point
  219. is equal to
  220. .B 1/sizescale
  221. points, where
  222. .B sizescale
  223. is specified in the
  224. .B DESC
  225. file (1 by default).
  226. .
  227. There is a new scale indicator
  228. .B z
  229. that has the effect of multiplying by sizescale.
  230. .
  231. Requests and escape sequences in troff interpret arguments that
  232. represent a pointsize as being in units of scaled points, but they
  233. evaluate each such argument using a default scale indicator of
  234. .BR z .
  235. Arguments treated in this way are the argument to the
  236. .B ps
  237. request, the third argument to the
  238. .B cs
  239. request, the second and fourth arguments to the
  240. .B tkf
  241. request, the argument to the
  242. .B \[rs]H
  243. escape sequence, and those variants of the
  244. .B \[rs]s
  245. escape sequence that take a numeric expression as their argument.
  246. .
  247. .P
  248. For example, suppose sizescale is 1000; then a scaled point will be
  249. equivalent to a millipoint; the call
  250. .B .ps\ 10.25
  251. is equivalent to
  252. .B .ps\ 10.25z
  253. and so sets the pointsize to 10250 scaled points, which is equal to
  254. 10.25 points.
  255. .
  256. .P
  257. The number register
  258. .B \[rs]n[.s]
  259. returns the pointsize in points as decimal fraction.
  260. .
  261. There is also a new number register
  262. .B \[rs]n[.ps]
  263. that returns the pointsize in scaled points.
  264. .
  265. .P
  266. It would make no sense to use the
  267. .B z
  268. scale indicator in a numeric expression whose default scale indicator
  269. was neither
  270. .B u
  271. nor
  272. .BR z ,
  273. and so
  274. .B troff
  275. disallows this.
  276. .
  277. Similarly it would make no sense to use a scaling indicator other than
  278. .B z
  279. or
  280. .B u
  281. in a numeric expression whose default scale indicator was
  282. .BR z ,
  283. and so
  284. .B troff
  285. disallows this as well.
  286. .
  287. .P
  288. There is also new scale indicator\~\c
  289. .B s
  290. which multiplies by the number of units in a scaled point.
  291. .
  292. So, for example,
  293. .B \[rs]n[.ps]s
  294. is equal to
  295. .BR 1m .
  296. Be sure not to confuse the
  297. .B s
  298. and
  299. .B z
  300. scale indicators.
  301. .
  302. .
  303. .\" --------------------------------------------------------------------
  304. .SS "Numeric expressions"
  305. .\" --------------------------------------------------------------------
  306. .
  307. Spaces are permitted in a number expression within parentheses.
  308. .
  309. .P
  310. .B M
  311. indicates a scale of 100ths of an em.
  312. .B f
  313. indicates a scale of 65536 units, providing fractions for color
  314. definitions with the
  315. .B defcolor
  316. request.
  317. .
  318. For example, 0.5f = 32768u.
  319. .
  320. .TP
  321. .IB e1 >? e2
  322. The maximum of
  323. .I e1
  324. and
  325. .IR e2 .
  326. .
  327. .TP
  328. .IB e1 <? e2
  329. The minimum of
  330. .I e1
  331. and
  332. .IR e2 .
  333. .
  334. .TP
  335. .BI ( c ; e )
  336. Evaluate
  337. .I e
  338. using
  339. .I c
  340. as the default scaling indicator.
  341. .
  342. If
  343. .I c
  344. is missing, ignore scaling indicators in the evaluation of
  345. .IR e .
  346. .
  347. .
  348. .\" --------------------------------------------------------------------
  349. .SS "New escape sequences"
  350. .\" --------------------------------------------------------------------
  351. .
  352. .TP
  353. .BI \[rs]A' anything '
  354. This expands to
  355. .B 1
  356. or
  357. .B 0
  358. resp., depending on whether
  359. .I anything
  360. is or is not acceptable as the name of a string, macro, diversion, number
  361. register, environment, font, or color.
  362. It will return\~\c
  363. .B 0
  364. if
  365. .I anything
  366. is empty.
  367. .
  368. This is useful if you want to lookup user input in some sort of
  369. associative table.
  370. .
  371. .TP
  372. .BI \[rs]B' anything '
  373. This expands to
  374. .B 1
  375. or
  376. .B 0
  377. resp., depending on whether
  378. .I anything
  379. is or is not a valid numeric expression.
  380. .
  381. It will return\~\c
  382. .B 0
  383. if
  384. .I anything
  385. is empty.
  386. .
  387. .TP
  388. .BI \[rs]C' xxx '
  389. Typeset glyph named
  390. .IR xxx .
  391. Normally it is more convenient to use
  392. .BI \[rs][ xxx ]\f[R].
  393. But
  394. .B \[rs]C
  395. has the advantage that it is compatible with recent versions of
  396. .SM UNIX
  397. and is available in compatibility mode.
  398. .
  399. .TP
  400. .B \[rs]E
  401. This is equivalent to an escape character, but it is not interpreted in
  402. copy-mode.
  403. .
  404. For example, strings to start and end superscripting could be defined
  405. like this
  406. .
  407. .RS
  408. .IP
  409. .ft CB
  410. .Text .ds { \[rs]v'\-.3m'\[rs]s'\[rs]En[.s]*6u/10u'
  411. .br
  412. .Text .ds } \[rs]s0\[rs]v'.3m'
  413. .ft
  414. .
  415. .P
  416. The use of
  417. .B \[rs]E
  418. ensures that these definitions will work even if
  419. .B \[rs]*{
  420. gets interpreted in copy-mode (for example, by being used in a macro
  421. argument).
  422. .RE
  423. .
  424. .TP
  425. .BI \[rs]F f
  426. .TQ
  427. .BI \[rs]F( fm
  428. .TQ
  429. .BI \[rs]F[ fam ]
  430. Change font family.
  431. .
  432. This is the same as the
  433. .B fam
  434. request.
  435. .
  436. .B \[rs]F[]
  437. switches back to the previous color (note that
  438. .B \[rs]FP
  439. won't work; it selects font family `P' instead).
  440. .
  441. .TP
  442. .BI \[rs]m x
  443. .TQ
  444. .BI \[rs]m( xx
  445. .TQ
  446. .BI \[rs]m[ xxx ]
  447. Set drawing color.
  448. .B \[rs]m[]
  449. switches back to the previous color.
  450. .
  451. .TP
  452. .BI \[rs]M x
  453. .TQ
  454. .BI \[rs]M( xx
  455. .TQ
  456. .BI \[rs]M[ xxx ]
  457. Set background color for filled objects drawn with the
  458. .BI \[rs]D' .\|.\|. '
  459. commands.
  460. .B \[rs]M[]
  461. switches back to the previous color.
  462. .
  463. .TP
  464. .BI \[rs]N' n '
  465. Typeset the glyph with index
  466. .I n
  467. in the current font.
  468. .I n
  469. can be any integer.
  470. .
  471. Most devices only have glyphs with indices between 0 and 255.
  472. .
  473. If the current font does not contain a glyph with that code,
  474. special fonts will
  475. .I not
  476. be searched.
  477. .
  478. The
  479. .B \[rs]N
  480. escape sequence can be conveniently used in conjunction with the
  481. .B char
  482. request, for example
  483. .
  484. .RS
  485. .ft CB
  486. .IP
  487. .Text .char \[rs][phone] \[rs]f(ZD\[rs]N'37'
  488. .ft
  489. .RE
  490. .
  491. .IP
  492. The index of each glyph is given in the fourth column in the font
  493. description file after the
  494. .B charset
  495. command.
  496. .
  497. It is possible to include unnamed glyphs in the font description
  498. file by using a name of
  499. .BR \-\-\- ;
  500. the
  501. .B \[rs]N
  502. escape sequence is the only way to use these.
  503. .
  504. .TP
  505. .BI \[rs]O n
  506. .TQ
  507. .BI \[rs]O[ n ]
  508. Suppressing troff output.
  509. .
  510. The escapes
  511. .BR \[rs]02 ,
  512. .BR \[rs]O3 ,
  513. .BR \[rs]O4 ,
  514. and
  515. .B \[rs]O5
  516. are intended for internal use by
  517. .BR \%grohtml .
  518. .
  519. .RS
  520. .TP
  521. .B \[rs]O0
  522. Disable any ditroff glyphs from being emitted to the device driver,
  523. provided that the escape occurs at the outer level (see
  524. .B \[rs]O3
  525. and
  526. .BR \[rs]O4 ).
  527. .
  528. .TP
  529. .B \[rs]O1
  530. Enable output of glyphs, provided that the escape occurs at the outer
  531. level.
  532. .IP
  533. .B \[rs]O0
  534. and
  535. .B \[rs]O1
  536. also reset the registers
  537. .BR \[rs]n[opminx] ,
  538. .BR \[rs]n[opminy] ,
  539. .BR \[rs]n[opmaxx] ,
  540. and
  541. .B \[rs]n[opmaxy]
  542. to\~-1.
  543. .
  544. These four registers mark the top left and bottom right hand corners
  545. of a box which encompasses all written glyphs.
  546. .
  547. .TP
  548. .B \[rs]O2
  549. Provided that the escape occurs at the outer level, enable output of
  550. glyphs and also write out to stderr the page number and four registers
  551. encompassing the glyphs previously written since the last call to
  552. .BR \[rs]O .
  553. .
  554. .TP
  555. .B \[rs]O3
  556. Begin a nesting level.
  557. .
  558. At start-up,
  559. .B troff
  560. is at outer level.
  561. .
  562. This is really an internal mechanism for
  563. .B \%grohtml
  564. while producing images.
  565. .
  566. They are generated by running the troff source through
  567. .B troff
  568. to the postscript device and
  569. .B ghostscript
  570. to produce images in PNG format.
  571. .
  572. The
  573. .B \[rs]O3
  574. escape will start a new page if the device is not html (to reduce the
  575. possibility of images crossing a page boundary).
  576. .
  577. .TP
  578. .B \[rs]O4
  579. End a nesting level.
  580. .
  581. .TP
  582. .BI \[rs]O5[ Pfilename ]
  583. This escape is
  584. .B \%grohtml
  585. specific.
  586. .
  587. Provided that this escape occurs at the outer nesting level, write
  588. .I filename
  589. to stderr.
  590. .
  591. The position of the image,
  592. .IR P ,
  593. must be specified and must be one of l, r, c, or i (left, right,
  594. centered, inline).
  595. .
  596. .I filename
  597. will be associated with the production of the next inline image.
  598. .RE
  599. .
  600. .TP
  601. .BI \[rs]R' name\ \[+-]n '
  602. This has the same effect as
  603. .
  604. .RS
  605. .IP
  606. .BI .nr\ name\ \[+-]n
  607. .RE
  608. .
  609. .TP
  610. .BI \[rs]s( nn
  611. .TQ
  612. .BI \[rs]s\[+-]( nn
  613. Set the point size to
  614. .I nn
  615. points;
  616. .I nn
  617. must be exactly two digits.
  618. .
  619. .TP
  620. .BI \[rs]s[\[+-] n ]
  621. .TQ
  622. .BI \[rs]s\[+-][ n ]
  623. .TQ
  624. .BI \[rs]s'\[+-] n '
  625. .TQ
  626. .BI \[rs]s\[+-]' n '
  627. Set the point size to
  628. .I n
  629. scaled points;
  630. .I n
  631. is a numeric expression with a default scale indicator of\~\c
  632. .BR z .
  633. .
  634. .TP
  635. .BI \[rs]V x
  636. .TQ
  637. .BI \[rs]V( xx
  638. .TQ
  639. .BI \[rs]V[ xxx ]
  640. Interpolate the contents of the environment variable
  641. .IR xxx ,
  642. as returned by
  643. .BR getenv (3).
  644. .B \[rs]V
  645. is interpreted in copy-mode.
  646. .
  647. .TP
  648. .BI \[rs]Y x
  649. .TQ
  650. .BI \[rs]Y( xx
  651. .TQ
  652. .BI \[rs]Y[ xxx ]
  653. This is approximately equivalent to
  654. .BI \[rs]X'\[rs]*[ xxx ]'\f[R].
  655. However the contents of the string or macro
  656. .I xxx
  657. are not interpreted; also it is permitted for
  658. .I xxx
  659. to have been defined as a macro and thus contain newlines (it is not
  660. permitted for the argument to
  661. .B \[rs]X
  662. to contain newlines).
  663. .
  664. The inclusion of newlines requires an extension to the UNIX troff
  665. output format, and will confuse drivers that do not know about this
  666. extension.
  667. .
  668. .TP
  669. .BI \[rs]Z' anything '
  670. Print anything and then restore the horizontal and vertical position;
  671. .I anything
  672. may not contain tabs or leaders.
  673. .
  674. .TP
  675. .B \[rs]$0
  676. The name by which the current macro was invoked.
  677. .
  678. The
  679. .B als
  680. request can make a macro have more than one name.
  681. .
  682. .TP
  683. .B \[rs]$*
  684. In a macro or string, the concatenation of all the arguments separated
  685. by spaces.
  686. .
  687. .TP
  688. .B \[rs]$@
  689. In a macro or string, the concatenation of all the arguments with each
  690. surrounded by double quotes, and separated by spaces.
  691. .
  692. .TP
  693. .BI \[rs]$( nn
  694. .TQ
  695. .BI \[rs]$[ nnn ]
  696. In a macro or string, this gives the
  697. .IR nn -th
  698. or
  699. .IR nnn -th
  700. argument.
  701. .
  702. Macros and strings can have an unlimited number of arguments.
  703. .
  704. .TP
  705. .BI \[rs]? anything \[rs]?
  706. When used in a diversion, this will transparently embed
  707. .I anything
  708. in the diversion.
  709. .I anything
  710. is read in copy mode.
  711. .
  712. When the diversion is reread,
  713. .I anything
  714. will be interpreted.
  715. .I anything
  716. may not contain newlines; use
  717. .B \[rs]!\&
  718. if you want to embed newlines in a diversion.
  719. .
  720. The escape sequence
  721. .B \[rs]?\&
  722. is also recognised in copy mode and turned into a single internal
  723. code; it is this code that terminates
  724. .IR anything .
  725. Thus
  726. .
  727. .RS
  728. .IP
  729. .ne 14v+\n(.Vu
  730. .ft CB
  731. .nf
  732. .Text .nr x 1
  733. .Text .nf
  734. .Text .di d
  735. .Text \[rs]?\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\c
  736. .Text \[rs]nx\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]?\[rs]?
  737. .Text .di
  738. .Text .nr x 2
  739. .Text .di e
  740. .Text .d
  741. .Text .di
  742. .Text .nr x 3
  743. .Text .di f
  744. .Text .e
  745. .Text .di
  746. .Text .nr x 4
  747. .Text .f
  748. .fi
  749. .ft
  750. .RE
  751. .
  752. .IP
  753. will print\~\c
  754. .BR 4 .
  755. .
  756. .TP
  757. .B \[rs]/
  758. This increases the width of the preceding glyph so that the
  759. spacing between that glyph and the following glyph will be
  760. correct if the following glyph is a roman glyph.
  761. .
  762. .if t \{\
  763. . nop For example, if an italic f is immediately followed by a roman
  764. . nop right parenthesis, then in many fonts the top right portion of
  765. . nop the f will overlap the top left of the right parenthesis
  766. . nop producing \f[I]f\f[R])\f[R], which is ugly.
  767. . nop Inserting
  768. . B \[rs]/
  769. . nop produces
  770. . ie \n(.g \f[I]f\/\f[R])\f[R]
  771. . el \f[I]f\|\f[R])\f[R]
  772. . nop and avoids this problem.
  773. .\}
  774. It is a good idea to use this escape sequence whenever an italic
  775. glyph is immediately followed by a roman glyph without any
  776. intervening space.
  777. .
  778. .TP
  779. .B \[rs],
  780. This modifies the spacing of the following glyph so that the
  781. spacing between that glyph and the preceding glyph will
  782. correct if the preceding glyph is a roman glyph.
  783. .
  784. .if t \{\
  785. . nop For example, inserting
  786. . B \[rs],
  787. . nop between the parenthesis and the f changes
  788. . nop \f[R](\f[I]f\f[R] to
  789. . ie \n(.g \f[R](\,\f[I]f\f[R].
  790. . el \f[R](\^\f[I]f\f[R].
  791. .\}
  792. It is a good idea to use this escape sequence whenever a roman
  793. glyph is immediately followed by an italic glyph without any
  794. intervening space.
  795. .
  796. .TP
  797. .B \[rs])
  798. Like
  799. .B \[rs]&
  800. except that it behaves like a character declared with the
  801. .B cflags
  802. request to be transparent for the purposes of end-of-sentence
  803. recognition.
  804. .
  805. .TP
  806. .B \[rs]~
  807. This produces an unbreakable space that stretches like a normal
  808. inter-word space when a line is adjusted.
  809. .
  810. .TP
  811. .B \[rs]:
  812. This causes the insertion of a zero-width break point.
  813. .
  814. It is equal to
  815. .B \[rs]%
  816. within a word but without insertion of a soft hyphen character.
  817. .
  818. .TP
  819. .B \[rs]#
  820. Everything up to and including the next newline is ignored.
  821. .
  822. This is interpreted in copy mode.
  823. .
  824. It is like
  825. .B \[rs]"
  826. except that
  827. .B \[rs]"
  828. does not ignore the terminating newline.
  829. .
  830. .
  831. .\" --------------------------------------------------------------------
  832. .SS "New requests"
  833. .\" --------------------------------------------------------------------
  834. .
  835. .TP
  836. .BI .aln\ xx\ yy
  837. Create an alias
  838. .I xx
  839. for number register object named
  840. .IR yy .
  841. The new name and the old name will be exactly equivalent.
  842. .
  843. If
  844. .I yy
  845. is undefined, a warning of type
  846. .B reg
  847. will be generated, and the request will be ignored.
  848. .
  849. .TP
  850. .BI .als\ xx\ yy
  851. Create an alias
  852. .I xx
  853. for request, string, macro, or diversion object named
  854. .IR yy .
  855. .
  856. The new name and the old name will be exactly equivalent (it is
  857. similar to a hard rather than a soft link).
  858. .
  859. If
  860. .I yy
  861. is undefined, a warning of type
  862. .B mac
  863. will be generated, and the request will be ignored.
  864. .
  865. The
  866. .BR de ,
  867. .BR am ,
  868. .BR di ,
  869. .BR da ,
  870. .BR ds ,
  871. and
  872. .B as
  873. requests only create a new object if the name of the macro, diversion
  874. or string diversion is currently undefined or if it is defined to be a
  875. request; normally they modify the value of an existing object.
  876. .
  877. .TP
  878. .BI .am1\ xx\ yy
  879. Similar to
  880. .BR .am ,
  881. but compatibility mode is switched off during execution.
  882. .
  883. To be more precise, a `compatibility save' token is inserted at the
  884. beginning of the macro addition, and a `compatibility restore' token at
  885. the end.
  886. .
  887. As a consequence, the requests
  888. .BR am ,
  889. .BR am1 ,
  890. .BR de ,
  891. and
  892. .B de1
  893. can be intermixed freely since the compatibility save/\:restore tokens
  894. only affect the macro parts defined by
  895. .B .am1
  896. and
  897. .BR .ds1 .
  898. .
  899. .TP
  900. .BI .ami\ xx\ yy
  901. Append to macro indirectly.
  902. .
  903. See the
  904. .B dei
  905. request below for more information.
  906. .
  907. .TP
  908. .BI .ami1\ xx\ yy
  909. Same as the
  910. .B ami
  911. request but compatibility mode is switched off during execution.
  912. .
  913. .TP
  914. .BI .as1\ xx\ yy
  915. Similar to
  916. .BR .as ,
  917. but compatibility mode is switched off during expansion.
  918. .
  919. To be more precise, a `compatibility save' token is inserted at the
  920. beginning of the string, and a `compatibility restore' token at the end.
  921. .
  922. As a consequence, the requests
  923. .BR as ,
  924. .BR as1 ,
  925. .BR ds ,
  926. and
  927. .B ds1
  928. can be intermixed freely since the compatibility save/\:restore tokens
  929. only affect the (sub)strings defined by
  930. .B as1
  931. and
  932. .BR ds1 .
  933. .
  934. .TP
  935. .BI .asciify\ xx
  936. This request `unformats' the diversion
  937. .I xx
  938. in such a way that
  939. .SM ASCII
  940. and space characters (and some escape sequences) that were formatted
  941. and diverted into
  942. .I xx
  943. will be treated like ordinary input characters when
  944. .I xx
  945. is reread.
  946. Useful for diversions in conjunction with the
  947. .B .writem
  948. request.
  949. .
  950. It can be also used for gross hacks; for example, this
  951. .
  952. .RS
  953. .IP
  954. .ne 7v+\n(.Vu
  955. .ft CB
  956. .nf
  957. .Text .tr @.
  958. .Text .di x
  959. .Text @nr n 1
  960. .Text .br
  961. .Text .di
  962. .Text .tr @@
  963. .Text .asciify x
  964. .Text .x
  965. .fi
  966. .ft
  967. .RE
  968. .
  969. .IP
  970. will set register\~\c
  971. .B n
  972. to\~1.
  973. .
  974. Note that glyph information (font, font size, etc.) is not preserved;
  975. use
  976. .B .unformat
  977. instead.
  978. .
  979. .TP
  980. .B .backtrace
  981. Print a backtrace of the input stack on stderr.
  982. .
  983. .TP
  984. .BI .blm\ xx
  985. Set the blank line macro to
  986. .IR xx .
  987. If there is a blank line macro, it will be invoked when a blank line
  988. is encountered instead of the usual troff behaviour.
  989. .
  990. .TP
  991. .BI .box\ xx
  992. .TQ
  993. .BI .boxa\ xx
  994. These requests are similar to the
  995. .B di
  996. and
  997. .B da
  998. requests with the exception that a partially filled line will not
  999. become part of the diversion (i.e., the diversion always starts with a
  1000. new line) but restored after ending the diversion, discarding the
  1001. partially filled line which possibly comes from the diversion.
  1002. .
  1003. .TP
  1004. .B .break
  1005. Break out of a while loop.
  1006. .
  1007. See also the
  1008. .B while
  1009. and
  1010. .B continue
  1011. requests.
  1012. .
  1013. Be sure not to confuse this with the
  1014. .B br
  1015. request.
  1016. .
  1017. .TP
  1018. .B .brp
  1019. This is the same as
  1020. .BR \[rs]p .
  1021. .
  1022. .TP
  1023. .BI .cflags\ n\ c1\ c2\|.\|.\|.\&
  1024. Characters
  1025. .IR c1 ,
  1026. .IR c2 ,\|.\|.\|.\&
  1027. have properties determined by
  1028. .IR n ,
  1029. which is ORed from the following:
  1030. .
  1031. .RS
  1032. .IP 1
  1033. The character ends sentences (initially characters
  1034. .B .?!\&
  1035. have this property).
  1036. .
  1037. .IP 2
  1038. Lines can be broken before the character (initially no characters have
  1039. this property); a line will not be broken at a character with this
  1040. property unless the characters on each side both have non-zero
  1041. hyphenation codes.
  1042. .
  1043. .IP 4
  1044. Lines can be broken after the character (initially characters
  1045. .B \-\[rs][hy]\[rs][em]
  1046. have this property); a line will not be broken at a character with
  1047. this property unless the characters on each side both have non-zero
  1048. hyphenation codes.
  1049. .
  1050. .IP 8
  1051. The character overlaps horizontally (initially characters
  1052. .B \[rs][ul]\[rs][rn]\[rs][ru]\[rs][radicalex]\[rs][sqrtex]
  1053. have this property).
  1054. .
  1055. .IP 16
  1056. The character overlaps vertically (initially character
  1057. .B \[rs][br]
  1058. has this property).
  1059. .
  1060. .IP 32
  1061. An end-of-sentence character followed by any number of characters with
  1062. this property will be treated as the end of a sentence if followed by
  1063. a newline or two spaces; in other words the character is transparent
  1064. for the purposes of end-of-sentence recognition; this is the same as
  1065. having a zero space factor in \*[tx] (initially characters
  1066. .B \[dq]')]*\[rs](dg\[rs](rq
  1067. have this property).
  1068. .RE
  1069. .
  1070. .TP
  1071. .BI .char\ c\ string
  1072. Define glyph
  1073. .I c
  1074. to be
  1075. .IR string .
  1076. Every time glyph
  1077. .I c
  1078. needs to be printed,
  1079. .I string
  1080. will be processed in a temporary environment and the result will be
  1081. wrapped up into a single object.
  1082. .
  1083. Compatibility mode will be turned off and the escape character will be
  1084. set to
  1085. .B \[rs]
  1086. while
  1087. .I string
  1088. is being processed.
  1089. .
  1090. Any emboldening, constant spacing or track kerning will be applied to
  1091. this object rather than to individual glyphs in
  1092. .IR string .
  1093. .
  1094. .IP
  1095. A glyph defined by this request can be used just like a normal
  1096. glyph provided by the output device.
  1097. .
  1098. In particular other characters can be translated to it with the
  1099. .B tr
  1100. request; it can be made the leader character by the
  1101. .B lc
  1102. request; repeated patterns can be drawn with the character using the
  1103. .B \[rs]l
  1104. and
  1105. .B \[rs]L
  1106. escape sequences; words containing the character can be hyphenated
  1107. correctly, if the
  1108. .B hcode
  1109. request is used to give the character a hyphenation code.
  1110. .
  1111. .IP
  1112. There is a special anti-recursion feature: Use of glyph within the
  1113. glyph's definition will be handled like normal glyphs not
  1114. defined with
  1115. .BR char .
  1116. .IP
  1117. A glyph definition can be removed with the
  1118. .B rchar
  1119. request.
  1120. .
  1121. .TP
  1122. .BI .chop\ xx
  1123. Chop the last element off macro, string, or diversion
  1124. .IR xx .
  1125. This is useful for removing the newline from the end of diversions
  1126. that are to be interpolated as strings.
  1127. .
  1128. .TP
  1129. .BI .close\ stream
  1130. Close the stream named
  1131. .IR stream ;
  1132. .I stream
  1133. will no longer be an acceptable argument to the
  1134. .B write
  1135. request.
  1136. .
  1137. See the
  1138. .B open
  1139. request.
  1140. .
  1141. .TP
  1142. .BI .composite\ glyph1\ glyph2
  1143. Map glyph name
  1144. .I glyph1
  1145. to glyph name
  1146. .I glyph2
  1147. if it is used in
  1148. .BI \[rs][ ... ]
  1149. with more than one component.
  1150. .
  1151. .TP
  1152. .B .continue
  1153. Finish the current iteration of a while loop.
  1154. .
  1155. See also the
  1156. .B while
  1157. and
  1158. .B break
  1159. requests.
  1160. .
  1161. .TP
  1162. .BI .color\ n
  1163. If
  1164. .I n
  1165. is non-zero or missing, enable colors (this is the default), otherwise
  1166. disable them.
  1167. .
  1168. .TP
  1169. .BI .cp\ n
  1170. If
  1171. .I n
  1172. is non-zero or missing, enable compatibility mode, otherwise disable
  1173. it.
  1174. .
  1175. In compatibility mode, long names are not recognised, and the
  1176. incompatibilities caused by long names do not arise.
  1177. .
  1178. .TP
  1179. .BI .defcolor\ xxx\ scheme\ color_components
  1180. Define color.
  1181. .I scheme
  1182. can be one of the following values:
  1183. .B rgb
  1184. (three components),
  1185. .B cym
  1186. (three components),
  1187. .B cmyk
  1188. (four components), and
  1189. .B gray
  1190. or
  1191. .B grey
  1192. (one component).
  1193. .
  1194. Color components can be given either as a hexadecimal string or as
  1195. positive decimal integers in the range 0-65535.
  1196. .
  1197. A hexadecimal string contains all color components concatenated; it
  1198. must start with either
  1199. .B #
  1200. or
  1201. .BR ## .
  1202. The former specifies hex values in the range 0-255 (which are
  1203. internally multiplied by\~257), the latter in the range 0-65535.
  1204. .
  1205. Examples: #FFC0CB (pink), ##ffff0000ffff (magenta).
  1206. .
  1207. A new scaling indicator\~\c
  1208. .B f
  1209. has been introduced which multiplies its value by\~65536; this makes
  1210. it convenient to specify color components as fractions in the range 0
  1211. to\~1.
  1212. .
  1213. Example:
  1214. .
  1215. .RS
  1216. .IP
  1217. .ft CB
  1218. .Text .defcolor darkgreen rgb 0.1f 0.5f 0.2f
  1219. .br
  1220. .ft
  1221. .RE
  1222. .
  1223. .IP
  1224. Note that
  1225. .B f
  1226. is the default scaling indicator for the
  1227. .B defcolor
  1228. request, thus the above statement is equivalent to
  1229. .
  1230. .RS
  1231. .IP
  1232. .ft CB
  1233. .Text .defcolor darkgreen rgb 0.1 0.5 0.2
  1234. .br
  1235. .ft
  1236. .RE
  1237. .
  1238. .IP
  1239. The color named
  1240. .B default
  1241. (which is device-specific) can't be redefined.
  1242. .
  1243. It is possible that the default color for
  1244. .esc M
  1245. and
  1246. .esc m
  1247. is not the same.
  1248. .
  1249. .TP
  1250. .BI .de1\ xx\ yy
  1251. Similar to
  1252. .BR .de ,
  1253. but compatibility mode is switched off during execution.
  1254. .
  1255. On entry, the current compatibility mode is saved and restored at exit.
  1256. .
  1257. .TP
  1258. .BI .dei\ xx\ yy
  1259. Define macro indirectly.
  1260. .
  1261. The following example
  1262. .
  1263. .RS
  1264. .IP
  1265. .ne 2v+\n(.Vu
  1266. .ft CB
  1267. .nf
  1268. .Text .ds xx aa
  1269. .Text .ds yy bb
  1270. .Text .dei xx yy
  1271. .fi
  1272. .ft
  1273. .RE
  1274. .
  1275. .IP
  1276. is equivalent to
  1277. .
  1278. .RS
  1279. .IP
  1280. .ft CB
  1281. .Text .de aa bb
  1282. .br
  1283. .ft
  1284. .RE
  1285. .
  1286. .TP
  1287. .BI .dei1\ xx\ yy
  1288. Similar to the
  1289. .B dei
  1290. request but compatibility mode is switched off during execution.
  1291. .
  1292. .TP
  1293. .BI .do\ xxx
  1294. Interpret
  1295. .I .xxx
  1296. with compatibility mode disabled.
  1297. .
  1298. For example,
  1299. .
  1300. .RS
  1301. .
  1302. .IP
  1303. .ft CB
  1304. .Text .do fam T
  1305. .br
  1306. .ft
  1307. .
  1308. .P
  1309. would have the same effect as
  1310. .
  1311. .IP
  1312. .ft CB
  1313. .Text .fam T
  1314. .br
  1315. .ft
  1316. .
  1317. .P
  1318. except that it would work even if compatibility mode had been enabled.
  1319. .
  1320. Note that the previous compatibility mode is restored before any files
  1321. sourced by
  1322. .I xxx
  1323. are interpreted.
  1324. .
  1325. .RE
  1326. .
  1327. .TP
  1328. .BI .ds1\ xx\ yy
  1329. Similar to
  1330. .BR .ds ,
  1331. but compatibility mode is switched off during expansion.
  1332. .
  1333. To be more precise, a `compatibility save' token is inserted at the
  1334. beginning of the string, and a `compatibility restore' token at the end.
  1335. .
  1336. .TP
  1337. .B .ecs
  1338. Save current escape character.
  1339. .
  1340. .TP
  1341. .B .ecr
  1342. Restore escape character saved with
  1343. .BR ecs .
  1344. Without a previous call to
  1345. .BR ecs ,
  1346. .RB ` \[rs] '
  1347. will be the new escape character.
  1348. .
  1349. .TP
  1350. .BI .evc\ xx
  1351. Copy the contents of environment
  1352. .I xx
  1353. to the current environment.
  1354. .
  1355. No pushing or popping of environments will be done.
  1356. .
  1357. .TP
  1358. .BI .fam\ xx
  1359. Set the current font family to
  1360. .IR xx .
  1361. The current font family is part of the current environment.
  1362. If
  1363. .I xx
  1364. is missing, switch back to previous font family.
  1365. .
  1366. The value at start-up is `T'.
  1367. .
  1368. See the description of the
  1369. .B sty
  1370. request for more information on font families.
  1371. .
  1372. .TP
  1373. .BI .fchar\ c\ string
  1374. Define fallback glyph
  1375. .I c
  1376. to be
  1377. .IR string .
  1378. .
  1379. The syntax of this request is the same as the
  1380. .B char
  1381. request; the only difference is that a glyph defined with
  1382. .B char
  1383. hides the glyph with the same name in the current font, whereas a
  1384. glyph defined with
  1385. .B fchar
  1386. is checked only if the particular glyph isn't found in the current font.
  1387. .
  1388. This test happens before checking special fonts.
  1389. .
  1390. .TP
  1391. .BI .fcolor\ c
  1392. Set the fill color to
  1393. .IR c .
  1394. If
  1395. .I c
  1396. is missing,
  1397. switch to the previous fill color.
  1398. .
  1399. .TP
  1400. .BI .fschar\ f\ c\ string
  1401. Define fallback glyph
  1402. .I c
  1403. for font
  1404. .I f
  1405. to be
  1406. .IR string .
  1407. .
  1408. The syntax of this request is the same as the
  1409. .B char
  1410. request (with an additional argument to specify the font); a glyph
  1411. defined with
  1412. .B fschar
  1413. is searched after the list of fonts declared with the
  1414. .B fspecial
  1415. request but before the list of fonts declared with
  1416. .BR special .
  1417. .
  1418. .TP
  1419. .BI .fspecial\ f\ s1\ s2\|.\|.\|.\&
  1420. When the current font is
  1421. .IR f ,
  1422. fonts
  1423. .IR s1 ,
  1424. .IR s2 ,\|.\|.\|.\&
  1425. will be special, that is, they will searched for glyphs not in
  1426. the current font.
  1427. .
  1428. Any fonts specified in the
  1429. .B special
  1430. request will be searched after fonts specified in the
  1431. .B fspecial
  1432. request.
  1433. .
  1434. Without argument, reset the list of global special fonts to be empty.
  1435. .
  1436. .TP
  1437. .BI .ftr\ f\ g
  1438. Translate font
  1439. .I f
  1440. to
  1441. .IR g .
  1442. Whenever a font named
  1443. .I f
  1444. is referred to in an
  1445. .B \[rs]f
  1446. escape sequence, in the
  1447. .B F
  1448. and
  1449. .B S
  1450. conditional operators, or in the
  1451. .BR ft ,
  1452. .BR ul ,
  1453. .BR bd ,
  1454. .BR cs ,
  1455. .BR tkf ,
  1456. .BR special ,
  1457. .BR fspecial ,
  1458. .BR fp ,
  1459. or
  1460. .BR sty
  1461. requests, font
  1462. .I g
  1463. will be used.
  1464. If
  1465. .I g
  1466. is missing, or equal to
  1467. .I f
  1468. then font
  1469. .I f
  1470. will not be translated.
  1471. .
  1472. .TP
  1473. .BI .gcolor\ c
  1474. Set the glyph color to
  1475. .IR c .
  1476. If
  1477. .I c
  1478. is missing,
  1479. switch to the previous glyph color.
  1480. .
  1481. .TP
  1482. .BI .hcode \ c1\ code1\ c2\ code2\|.\|.\|.\&
  1483. Set the hyphenation code of character
  1484. .I c1
  1485. to
  1486. .I code1
  1487. and that of
  1488. .I c2
  1489. to
  1490. .IR code2 .
  1491. A hyphenation code must be a single input character (not a special
  1492. character) other than a digit or a space.
  1493. .
  1494. Initially each lower-case letter \%a-z has a hyphenation code, which is
  1495. itself, and each upper-case letter \%A-Z has a hyphenation code which is
  1496. the lower-case version of itself.
  1497. .
  1498. See also the
  1499. .B hpf
  1500. request.
  1501. .
  1502. .TP
  1503. .BI .hla\ lang
  1504. Set the current hyphenation language to
  1505. .IR lang .
  1506. Hyphenation exceptions specified with the
  1507. .B hw
  1508. request and hyphenation patterns specified with the
  1509. .B hpf
  1510. request are both associated with the current hyphenation language.
  1511. .
  1512. The
  1513. .B hla
  1514. request is usually invoked by the
  1515. .B troffrc
  1516. file.
  1517. .
  1518. .TP
  1519. .BI .hlm\ n
  1520. Set the maximum number of consecutive hyphenated lines to\~\c
  1521. .IR n .
  1522. If
  1523. .I n
  1524. is negative, there is no maximum.
  1525. .
  1526. The default value is\~\-1.
  1527. .
  1528. This value is associated with the current environment.
  1529. .
  1530. Only lines output from an environment count towards the maximum
  1531. associated with that environment.
  1532. .
  1533. Hyphens resulting from
  1534. .B \[rs]%
  1535. are counted; explicit hyphens are not.
  1536. .
  1537. .TP
  1538. .BI .hpf\ file
  1539. Read hyphenation patterns from
  1540. .IR file ;
  1541. this will be searched for in the same way that
  1542. .IB name .tmac
  1543. is searched for when the
  1544. .BI \-m name
  1545. option is specified.
  1546. .
  1547. It should have the same format as (simple) \*[tx] patterns files.
  1548. .
  1549. More specifically, the following scanning rules are implemented.
  1550. .
  1551. .RS
  1552. .IP \[bu]
  1553. A percent sign starts a comment (up to the end of the line) even if
  1554. preceded by a backslash.
  1555. .
  1556. .IP \[bu]
  1557. No support for `digraphs' like
  1558. .BR \[rs]$ .
  1559. .
  1560. .IP \[bu]
  1561. .BI ^^ xx
  1562. .RI ( x
  1563. is 0-9 or a-f) and
  1564. .BI ^^ x
  1565. (character code of\~\c
  1566. .I x
  1567. in the range 0-127) are recognized; other use of
  1568. .B ^
  1569. causes an error.
  1570. .
  1571. .IP \[bu]
  1572. No macro expansion.
  1573. .
  1574. .IP \[bu]
  1575. .B hpf
  1576. checks for the expression
  1577. .B \[rs]patterns{.\|.\|.}
  1578. (possibly with whitespace before and after the braces).
  1579. .
  1580. Everything between the braces is taken as hyphenation patterns.
  1581. .
  1582. Consequently,
  1583. .B {
  1584. and
  1585. .B }
  1586. are not allowed in patterns.
  1587. .
  1588. .IP \[bu]
  1589. Similarly,
  1590. .B \[rs]hyphenation{.\|.\|.}
  1591. gives a list of hyphenation exceptions.
  1592. .
  1593. .IP \[bu]
  1594. .B \[rs]endinput
  1595. is recognized also.
  1596. .
  1597. .IP \[bu]
  1598. For backwards compatibility, if
  1599. .B \[rs]patterns
  1600. is missing, the whole file is treated as a list of hyphenation patterns
  1601. (only recognizing the
  1602. .BR % \~\c
  1603. character as the start of a comment).
  1604. .RE
  1605. .
  1606. .IP
  1607. Use the
  1608. .B hpfcode
  1609. request to map the encoding used in hyphenation patterns files to
  1610. .BR groff 's
  1611. input encoding.
  1612. .IP
  1613. The set of hyphenation patterns is associated with the current language
  1614. set by the
  1615. .B hla
  1616. request.
  1617. .
  1618. The
  1619. .B hpf
  1620. request is usually invoked by the
  1621. .B troffrc
  1622. file; a second call replaces the old patterns with the new ones.
  1623. .
  1624. .TP
  1625. .BI .hpfa\ file
  1626. The same as
  1627. .B hpf
  1628. except that the hyphenation patterns from
  1629. .I file
  1630. are appended to the patterns already loaded in the current language.
  1631. .
  1632. .TP
  1633. .BI .hpfcode\ a\ b\ c\ d\ .\|.\|.
  1634. After reading a hyphenation patterns file with the
  1635. .B hpf
  1636. or
  1637. .B hpfa
  1638. request, convert all characters with character code\~\c
  1639. .I a
  1640. in the recently read patterns to character code\~\c
  1641. .IR b ,
  1642. character code\~\c
  1643. .I c
  1644. to\~\c
  1645. .IR d ,
  1646. etc.
  1647. .
  1648. Initially, all character codes map to themselves.
  1649. .
  1650. The arguments of
  1651. .B hpfcode
  1652. must be integers in the range 0 to\~255.
  1653. .
  1654. Note that it is even possible to use character codes which are invalid in
  1655. .B groff
  1656. otherwise.
  1657. .
  1658. .TP
  1659. .BI .hym\ n
  1660. Set the
  1661. .I hyphenation margin
  1662. to\~\c
  1663. .IR n :
  1664. when the current adjustment mode is not\~\c
  1665. .BR b ,
  1666. the line will not be hyphenated if the line is no more than
  1667. .I n
  1668. short.
  1669. .
  1670. The default hyphenation margin is\~0.
  1671. .
  1672. The default scaling indicator for this request is\~\c
  1673. .IR m .
  1674. The hyphenation margin is associated with the current environment.
  1675. .
  1676. The current hyphenation margin is available in the
  1677. .B \[rs]n[.hym]
  1678. register.
  1679. .
  1680. .TP
  1681. .BI .hys\ n
  1682. Set the
  1683. .I hyphenation space
  1684. to\~\c
  1685. .IR n :
  1686. when the current adjustment mode is\~\c
  1687. .B b
  1688. don't hyphenate the line if the line can be justified by adding no
  1689. more than
  1690. .I n
  1691. extra space to each word space.
  1692. .
  1693. The default hyphenation space is\~0.
  1694. .
  1695. The default scaling indicator for this request is\~\c
  1696. .BR m .
  1697. The hyphenation space is associated with the current environment.
  1698. .
  1699. The current hyphenation space is available in the
  1700. .B \[rs]n[.hys]
  1701. register.
  1702. .
  1703. .TP
  1704. .BI .itc\ n\ macro
  1705. Variant of
  1706. .B .it
  1707. for which a line interrupted with
  1708. .B \[rs]c
  1709. counts as one input line.
  1710. .
  1711. .TP
  1712. .BI .kern\ n
  1713. If
  1714. .I n
  1715. is non-zero or missing, enable pairwise kerning, otherwise disable it.
  1716. .
  1717. .TP
  1718. .BI .length\ xx\ string
  1719. Compute the length of
  1720. .I string
  1721. and return it in the number register
  1722. .I xx
  1723. (which is not necessarily defined before).
  1724. .
  1725. .TP
  1726. .BI .linetabs\ n
  1727. If
  1728. .I n
  1729. is non-zero or missing, enable line-tabs mode, otherwise disable it
  1730. (which is the default).
  1731. .
  1732. In line-tabs mode, tab distances are computed relative to the
  1733. (current) output line.
  1734. .
  1735. Otherwise they are taken relative to the input line.
  1736. .
  1737. For example, the following
  1738. .
  1739. .RS
  1740. .IP
  1741. .ne 6v+\n(.Vu
  1742. .ft CB
  1743. .nf
  1744. .Text .ds x a\[rs]t\[rs]c
  1745. .Text .ds y b\[rs]t\[rs]c
  1746. .Text .ds z c
  1747. .Text .ta 1i 3i
  1748. .Text \[rs]*x
  1749. .Text \[rs]*y
  1750. .Text \[rs]*z
  1751. .fi
  1752. .ft
  1753. .RE
  1754. .
  1755. .IP
  1756. yields
  1757. .
  1758. .RS
  1759. .IP
  1760. a b c
  1761. .RE
  1762. .
  1763. .IP
  1764. In line-tabs mode, the same code gives
  1765. .
  1766. .RS
  1767. .IP
  1768. a b c
  1769. .RE
  1770. .
  1771. .IP
  1772. Line-tabs mode is associated with the current environment; the
  1773. read-only number register
  1774. .B \\[rs]n[.linetabs]
  1775. is set to\~1 if in line-tabs mode, and 0 otherwise.
  1776. .
  1777. .TP
  1778. .BI .mso\ file
  1779. The same as the
  1780. .B so
  1781. request except that
  1782. .I file
  1783. is searched for in the same directories as macro files for the the
  1784. .B \-m
  1785. command line option.
  1786. .
  1787. If the file name to be included has the form
  1788. .IB name .tmac
  1789. and it isn't found,
  1790. .B mso
  1791. tries to include
  1792. .BI tmac. name
  1793. instead and vice versa.
  1794. .
  1795. .TP
  1796. .BI .nop \ anything
  1797. Execute
  1798. .IR anything .
  1799. This is similar to `.if\ 1'.
  1800. .
  1801. .TP
  1802. .B .nroff
  1803. Make the
  1804. .B n
  1805. built-in condition true and the
  1806. .B t
  1807. built-in condition false.
  1808. .
  1809. This can be reversed using the
  1810. .B troff
  1811. request.
  1812. .
  1813. .TP
  1814. .BI .open\ stream\ filename
  1815. Open
  1816. .I filename
  1817. for writing and associate the stream named
  1818. .I stream
  1819. with it.
  1820. .
  1821. See also the
  1822. .B close
  1823. and
  1824. .B write
  1825. requests.
  1826. .
  1827. .TP
  1828. .BI .opena\ stream\ filename
  1829. Like
  1830. .BR open ,
  1831. but if
  1832. .I filename
  1833. exists, append to it instead of truncating it.
  1834. .
  1835. .TP
  1836. .BI .output\ string
  1837. Emit
  1838. .I string
  1839. directly to the intermediate output (subject to copy-mode interpretation);
  1840. this is similar to
  1841. .B \[rs]!
  1842. used at the top level.
  1843. .
  1844. An initial double quote in
  1845. .I string
  1846. is stripped off to allow initial blanks.
  1847. .
  1848. .TP
  1849. .B .pnr
  1850. Print the names and contents of all currently defined number registers
  1851. on stderr.
  1852. .
  1853. .TP
  1854. .BI .psbb \ filename
  1855. Get the bounding box of a PostScript image
  1856. .IR filename .
  1857. This file must conform to Adobe's Document Structuring Conventions;
  1858. the command looks for a
  1859. .B \%%%BoundingBox
  1860. comment to extract the bounding box values.
  1861. .
  1862. After a successful call, the coordinates (in PostScript units) of the
  1863. lower left and upper right corner can be found in the registers
  1864. .BR \[rs]n[llx] ,
  1865. .BR \[rs]n[lly] ,
  1866. .BR \[rs]n[urx] ,
  1867. and
  1868. .BR \[rs]n[ury] ,
  1869. respectively.
  1870. .
  1871. If some error has occurred, the four registers are set to zero.
  1872. .
  1873. .TP
  1874. .BI .pso \ command
  1875. This behaves like the
  1876. .B so
  1877. request except that input comes from the standard output of
  1878. .IR command .
  1879. .
  1880. .TP
  1881. .B .ptr
  1882. Print the names and positions of all traps (not including input line
  1883. traps and diversion traps) on stderr.
  1884. .
  1885. Empty slots in the page trap list are printed as well, because they
  1886. can affect the priority of subsequently planted traps.
  1887. .
  1888. .TP
  1889. .BI .pvs \ \[+-]n
  1890. Set the post-vertical line space to
  1891. .IR n ;
  1892. default scale indicator is\~\c
  1893. .BR p .
  1894. .
  1895. This value will be added to each line after it has been output.
  1896. .
  1897. With no argument, the post-vertical line space is set to its previous
  1898. value.
  1899. .
  1900. .IP
  1901. The total vertical line spacing consists of four components:
  1902. .B .vs
  1903. and
  1904. .B \[rs]x
  1905. with a negative value which are applied before the line is output, and
  1906. .B .pvs
  1907. and
  1908. .B \[rs]x
  1909. with a positive value which are applied after the line is output.
  1910. .
  1911. .TP
  1912. .BI .rchar\ c1\ c2\|.\|.\|.\&
  1913. Remove the definitions of glyphs
  1914. .IR c1 ,
  1915. .IR c2 ,\|.\|.\|.
  1916. This undoes the effect of a
  1917. .B char
  1918. request.
  1919. .
  1920. .TP
  1921. .B .return
  1922. Within a macro, return immediately.
  1923. .
  1924. If called with an argument, return twice, namely from the current macro and
  1925. from the macro one level higher.
  1926. .
  1927. No effect otherwise.
  1928. .
  1929. .TP
  1930. .BI .rfschar\ c1\ c2\|.\|.\|.\&
  1931. Remove the font-specific definitions of glyphs
  1932. .IR c1 ,
  1933. .IR c2 ,\|.\|.\|.
  1934. This undoes the effect of a
  1935. .B fschar
  1936. request.
  1937. .
  1938. .TP
  1939. .B .rj
  1940. .TQ
  1941. .BI .rj \~n
  1942. Right justify the next
  1943. .IR n \~\c
  1944. input lines.
  1945. .
  1946. Without an argument right justify the next input line.
  1947. .
  1948. The number of lines to be right justified is available in the
  1949. .B \[rs]n[.rj]
  1950. register.
  1951. .
  1952. This implicitly does
  1953. .BR .ce \~0 .
  1954. The
  1955. .B ce
  1956. request implicitly does
  1957. .BR .rj \~0 .
  1958. .
  1959. .TP
  1960. .BI .rnn \ xx\ yy
  1961. Rename number register
  1962. .I xx
  1963. to
  1964. .IR yy .
  1965. .
  1966. .TP
  1967. .BI .schar\ c\ string
  1968. Define global fallback glyph
  1969. .I c
  1970. to be
  1971. .IR string .
  1972. .
  1973. The syntax of this request is the same as the
  1974. .B char
  1975. request; a glyph defined with
  1976. .B schar
  1977. is searched after the list of fonts declared with the
  1978. .B special
  1979. request but before the mounted special fonts.
  1980. .
  1981. .TP
  1982. .BI .shc\ c
  1983. Set the soft hyphen character to
  1984. .IR c .
  1985. If
  1986. .I c
  1987. is omitted, the soft hyphen character will be set to the default
  1988. .BR \[rs](hy .
  1989. The soft hyphen character is the glyph which will be inserted when
  1990. a word is hyphenated at a line break.
  1991. .
  1992. If the soft hyphen character does not exist in the font of the
  1993. glyph immediately preceding a potential break point, then the line
  1994. will not be broken at that point.
  1995. .
  1996. Neither definitions (specified with the
  1997. .B char
  1998. request) nor translations (specified with the
  1999. .B tr
  2000. request) are considered when finding the soft hyphen character.
  2001. .
  2002. .TP
  2003. .BI .shift\ n
  2004. In a macro, shift the arguments by
  2005. .I n
  2006. positions: argument\~\c
  2007. .I i
  2008. becomes argument
  2009. .IR i \- n ;
  2010. arguments 1 to\~\c
  2011. .I n
  2012. will no longer be available.
  2013. .
  2014. If
  2015. .I n
  2016. is missing, arguments will be shifted by\~1.
  2017. .
  2018. Shifting by negative amounts is currently undefined.
  2019. .
  2020. .TP
  2021. .BI .sizes\ s1\ s2\|.\|.\|.\|sn\ [0]
  2022. This command is similar to the
  2023. .B sizes
  2024. command of a
  2025. .B DESC
  2026. file.
  2027. .
  2028. It sets the available font sizes for the current font to
  2029. .IR s1 ,
  2030. .IR s2 ,\|.\|.\|.\|,\~ sn
  2031. scaled points.
  2032. .
  2033. The list of sizes can be terminated by an optional\~\c
  2034. .BR 0 .
  2035. .
  2036. Each
  2037. .I si
  2038. can also be a range of sizes
  2039. .IR m - n .
  2040. .
  2041. Contrary to the font file command, the list can't extend over more
  2042. than a single line.
  2043. .
  2044. .TP
  2045. .BI .special\ s1\ s2\|.\|.\|.\&
  2046. Fonts
  2047. .IR s1 ,
  2048. .IR s2 ,
  2049. are special and will be searched for glyphs not in the current
  2050. font.
  2051. .
  2052. Without arguments, reset the list of special fonts to be empty.
  2053. .
  2054. .TP
  2055. .BI .spreadwarn\ limit
  2056. Make
  2057. .B troff
  2058. emit a warning if the additional space inserted for each space between
  2059. words in an output line is larger or equal to
  2060. .IR limit .
  2061. .
  2062. A negative value is changed to zero; no argument toggles the warning on
  2063. and off without changing
  2064. .IR limit .
  2065. .
  2066. The default scaling indicator is\~\c
  2067. .BR m .
  2068. .
  2069. At startup,
  2070. .B spreadwarn
  2071. is deactivated, and
  2072. .I limit
  2073. is set to 3m.
  2074. .
  2075. For example,
  2076. .B .spreadwarn\ 0.2m
  2077. will cause a warning if
  2078. .B troff
  2079. must add 0.2m or more for each interword space in a line.
  2080. .
  2081. This request is active only if text is justified to both margins (using
  2082. .BR .ad\ b ).
  2083. .
  2084. .TP
  2085. .BI .sty\ n\ f
  2086. Associate style\~\c
  2087. .I f
  2088. with font position\~\c
  2089. .IR n .
  2090. A font position can be associated either with a font or with a style.
  2091. .
  2092. The current font is the index of a font position and so is also either
  2093. a font or a style.
  2094. .
  2095. When it is a style, the font that is actually used is the font the
  2096. name of which is the concatenation of the name of the current family
  2097. and the name of the current style.
  2098. .
  2099. For example, if the current font is\~1 and font position\~1 is
  2100. associated with style\~\c
  2101. .B R
  2102. and the current font family is\~\c
  2103. .BR T ,
  2104. then font
  2105. .BR TR
  2106. will be used.
  2107. .
  2108. If the current font is not a style, then the current family is ignored.
  2109. .
  2110. When the requests
  2111. .BR cs ,
  2112. .BR bd ,
  2113. .BR tkf ,
  2114. .BR uf ,
  2115. or
  2116. .B fspecial
  2117. are applied to a style, then they will instead be applied to the
  2118. member of the current family corresponding to that style.
  2119. .
  2120. The default family can be set with the
  2121. .B \-f
  2122. option.
  2123. .
  2124. The
  2125. .B styles
  2126. command in the
  2127. .SM DESC
  2128. file controls which font positions (if any) are initially associated
  2129. with styles rather than fonts.
  2130. .
  2131. .TP
  2132. .BI .substring\ xx\ n1\ [ n2 ]
  2133. Replace the string named
  2134. .I xx
  2135. with the substring defined by the indices
  2136. .I n1
  2137. and
  2138. .IR n2 .
  2139. The first character in the string has index\~0.
  2140. .
  2141. If
  2142. .I n2
  2143. is omitted, it is taken to be equal to the string's length.
  2144. .
  2145. If the index value
  2146. .I n1
  2147. or
  2148. .I n2
  2149. is negative, it will be counted from the end of the string,
  2150. going backwards:
  2151. .
  2152. The last character has index\~-1, the character before the last
  2153. character has index\~-2, etc.
  2154. .
  2155. .TP
  2156. .BI .tkf\ f\ s1\ n1\ s2\ n2
  2157. Enable track kerning for font
  2158. .IR f .
  2159. When the current font is
  2160. .I f
  2161. the width of every glyph will be increased by an amount between
  2162. .I n1
  2163. and
  2164. .IR n2 ;
  2165. when the current point size is less than or equal to
  2166. .I s1
  2167. the width will be increased by
  2168. .IR n1 ;
  2169. when it is greater than or equal to
  2170. .I s2
  2171. the width will be increased by
  2172. .IR n2 ;
  2173. when the point size is greater than or equal to
  2174. .I s1
  2175. and less than or equal to
  2176. .I s2
  2177. the increase in width is a linear function of the point size.
  2178. .
  2179. .TP
  2180. .BI .tm1\ string
  2181. Similar to the
  2182. .B tm
  2183. request,
  2184. .I string
  2185. is read in copy mode and written on the standard error, but an initial
  2186. double quote in
  2187. .I string
  2188. is stripped off to allow initial blanks.
  2189. .
  2190. .TP
  2191. .BI .tmc\ string
  2192. Similar to
  2193. .B tm1
  2194. but without writing a final newline.
  2195. .
  2196. .TP
  2197. .BI .trf\ filename
  2198. Transparently output the contents of file
  2199. .IR filename .
  2200. Each line is output as if preceded by
  2201. .BR \[rs]! ;
  2202. however, the lines are not subject to copy-mode interpretation.
  2203. .
  2204. If the file does not end with a newline, then a newline will be added.
  2205. .
  2206. For example, you can define a macro\~\c
  2207. .I x
  2208. containing the contents of file\~\c
  2209. .IR f ,
  2210. using
  2211. .
  2212. .RS
  2213. .IP
  2214. .ne 2v+\n(.Vu
  2215. .ft CB
  2216. .nf
  2217. .Text .di x
  2218. .Text .trf f
  2219. .Text .di
  2220. .fi
  2221. .ft
  2222. .RE
  2223. .
  2224. .IP
  2225. Unlike with the
  2226. .B cf
  2227. request, the file cannot contain characters such as
  2228. .SM NUL
  2229. that are not legal troff input characters.
  2230. .
  2231. .TP
  2232. .BI .trin\ abcd
  2233. This is the same as the
  2234. .B tr
  2235. request except that the
  2236. .B asciify
  2237. request will use the character code (if any) before the character
  2238. translation.
  2239. .
  2240. Example:
  2241. .
  2242. .RS
  2243. .IP
  2244. .nf
  2245. .ft CB
  2246. .Text .trin ax
  2247. .Text .di xxx
  2248. .Text a
  2249. .Text .br
  2250. .Text .di
  2251. .Text .xxx
  2252. .Text .trin aa
  2253. .Text .asciify xxx
  2254. .Text .xxx
  2255. .fi
  2256. .ft
  2257. .RE
  2258. .
  2259. .IP
  2260. The result is
  2261. .BR x\ a .
  2262. .
  2263. Using
  2264. .BR tr ,
  2265. the result would be
  2266. .BR x\ x .
  2267. .
  2268. .TP
  2269. .BI .trnt\ abcd
  2270. This is the same as the
  2271. .B tr
  2272. request except that the translations do not apply to text that is
  2273. transparently throughput into a diversion with
  2274. .BR \[rs]! .
  2275. For example,
  2276. .
  2277. .RS
  2278. .IP
  2279. .nf
  2280. .ft CB
  2281. .Text .tr ab
  2282. .Text .di x
  2283. .Text \[rs]!.tm a
  2284. .Text .di
  2285. .Text .x
  2286. .fi
  2287. .ft
  2288. .RE
  2289. .
  2290. .IP
  2291. will print\~\c
  2292. .BR b ;
  2293. if
  2294. .B trnt
  2295. is used instead of
  2296. .B tr
  2297. it will print\~\c
  2298. .BR a .
  2299. .RE
  2300. .
  2301. .TP
  2302. .B .troff
  2303. Make the
  2304. .B n
  2305. built-in condition false, and the
  2306. .B t
  2307. built-in condition true.
  2308. .
  2309. This undoes the effect of the
  2310. .B nroff
  2311. request.
  2312. .
  2313. .TP
  2314. .BI .unformat\ xx
  2315. This request `unformats' the diversion
  2316. .IR xx .
  2317. Contrary to the
  2318. .B .asciify
  2319. request, which tries to convert formatted elements of the diversion
  2320. back to input tokens as much as possible,
  2321. .B .unformat
  2322. will only handle tabs and spaces between words (usually caused by
  2323. spaces or newlines in the input) specially.
  2324. .
  2325. The former are treated as if they were input tokens, and the latter
  2326. are stretchable again.
  2327. .
  2328. Note that the vertical size of lines is not preserved.
  2329. .
  2330. Glyph information (font, font size, space width, etc.) is retained.
  2331. .
  2332. Useful in conjunction with the
  2333. .B .box
  2334. and
  2335. .B .boxa
  2336. requests.
  2337. .
  2338. .TP
  2339. .BI .vpt\ n
  2340. Enable vertical position traps if
  2341. .I n
  2342. is non-zero, disable them otherwise.
  2343. .
  2344. Vertical position traps are traps set by the
  2345. .B wh
  2346. or
  2347. .B dt
  2348. requests.
  2349. .
  2350. Traps set by the
  2351. .B it
  2352. request are not vertical position traps.
  2353. .
  2354. The parameter that controls whether vertical position traps are
  2355. enabled is global.
  2356. .
  2357. Initially vertical position traps are enabled.
  2358. .
  2359. .TP
  2360. .BI .warn\ n
  2361. Control warnings.
  2362. .I n
  2363. is the sum of the numbers associated with each warning that is to be
  2364. enabled; all other warnings will be disabled.
  2365. .
  2366. The number associated with each warning is listed in
  2367. .BR @g@troff (@MAN1EXT@).
  2368. .
  2369. For example,
  2370. .B .warn\~0
  2371. will disable all warnings, and
  2372. .B .warn\~1
  2373. will disable all warnings except that about missing glyphs.
  2374. .
  2375. If
  2376. .I n
  2377. is not given, all warnings will be enabled.
  2378. .
  2379. .TP
  2380. .BI .warnscale\ si
  2381. Set the scaling indicator used in warnings to
  2382. .IR si .
  2383. .
  2384. Valid values for
  2385. .I si
  2386. are
  2387. .BR u ,
  2388. .BR i ,
  2389. .BR c ,
  2390. .BR p ,
  2391. and
  2392. .BR P .
  2393. .
  2394. At startup, it is set to\~\c
  2395. .BR i .
  2396. .
  2397. .TP
  2398. .BI .while \ c\ anything
  2399. While condition\~\c
  2400. .I c
  2401. is true, accept
  2402. .I anything
  2403. as input;
  2404. .IR c \~\c
  2405. can be any condition acceptable to an
  2406. .B if
  2407. request;
  2408. .I anything
  2409. can comprise multiple lines if the first line starts with
  2410. .B \[rs]{
  2411. and the last line ends with
  2412. .BR \[rs]} .
  2413. See also the
  2414. .B break
  2415. and
  2416. .B continue
  2417. requests.
  2418. .
  2419. .TP
  2420. .BI .write\ stream\ anything
  2421. Write
  2422. .I anything
  2423. to the stream named
  2424. .IR stream .
  2425. .I stream
  2426. must previously have been the subject of an
  2427. .B open
  2428. request.
  2429. .I anything
  2430. is read in copy mode;
  2431. a leading\~\c
  2432. .B \[dq]
  2433. will be stripped.
  2434. .
  2435. .TP
  2436. .BI .writec\ stream\ anything
  2437. Similar to
  2438. .B write
  2439. but without writing a final newline.
  2440. .
  2441. .TP
  2442. .BI .writem\ stream\ xx
  2443. Write the contents of the macro or string
  2444. .I xx
  2445. to the stream named
  2446. .IR stream .
  2447. .I stream
  2448. must previously have been the subject of an
  2449. .B open
  2450. request.
  2451. .I xx
  2452. is read in copy mode.
  2453. .
  2454. .
  2455. .\" --------------------------------------------------------------------
  2456. .SS "Extended escape sequences"
  2457. .\" --------------------------------------------------------------------
  2458. .
  2459. .TP
  2460. .BI \[rs]D' .\|.\|. '
  2461. All drawing commands of groff's intermediate output are accepted.
  2462. .
  2463. See subsection
  2464. .B "Drawing Commands"
  2465. below for more information.
  2466. .
  2467. .
  2468. .\" --------------------------------------------------------------------
  2469. .SS "Extended requests"
  2470. .\" --------------------------------------------------------------------
  2471. .
  2472. .TP
  2473. .BI .cf\ filename
  2474. When used in a diversion, this will embed in the diversion an object
  2475. which, when reread, will cause the contents of
  2476. .I filename
  2477. to be transparently copied through to the output.
  2478. .
  2479. In UNIX troff, the contents of
  2480. .I filename
  2481. is immediately copied through to the output regardless of whether
  2482. there is a current diversion; this behaviour is so anomalous that it
  2483. must be considered a bug.
  2484. .
  2485. .TP
  2486. .BI .de\ xx\ yy
  2487. .TQ
  2488. .BI .am\ xx\ yy
  2489. .TQ
  2490. .BI .ds\ xx\ yy
  2491. .TQ
  2492. .BI .as\ xx\ yy
  2493. In compatibility mode, these requests behaves similar to
  2494. .BR .de1 ,
  2495. .BR .am1 ,
  2496. .BR .ds1 ,
  2497. and
  2498. .BR .as1 ,
  2499. respectively: A `compatibility save' token is inserted at the
  2500. beginning, and a `compatibility restore' token at the end, with
  2501. compatibility mode switched on during execution.
  2502. .
  2503. .TP
  2504. .BI .ev\ xx
  2505. If
  2506. .I xx
  2507. is not a number, this will switch to a named environment called
  2508. .IR xx .
  2509. The environment should be popped with a matching
  2510. .B ev
  2511. request without any arguments, just as for numbered environments.
  2512. .
  2513. There is no limit on the number of named environments; they will be
  2514. created the first time that they are referenced.
  2515. .
  2516. .TP
  2517. .BI .ss\ m\ n
  2518. When two arguments are given to the
  2519. .B ss
  2520. request, the second argument gives the
  2521. .IR "sentence space size" .
  2522. If the second argument is not given, the sentence space size
  2523. will be the same as the word space size.
  2524. .
  2525. Like the word space size, the sentence space is in units of
  2526. one twelfth of the spacewidth parameter for the current font.
  2527. .
  2528. Initially both the word space size and the sentence
  2529. space size are\~12.
  2530. .
  2531. Contrary to UNIX troff, GNU troff handles this request in nroff mode
  2532. also; a given value is then rounded down to the nearest multiple
  2533. of\~12.
  2534. .
  2535. The sentence space size is used in two circumstances.
  2536. .
  2537. If the end of a sentence occurs at the end of a line in fill mode,
  2538. then both an inter-word space and a sentence space will be added; if
  2539. two spaces follow the end of a sentence in the middle of a line, then
  2540. the second space will be a sentence space.
  2541. .
  2542. Note that the behaviour of UNIX troff will be exactly that exhibited
  2543. by GNU troff if a second argument is never given to the
  2544. .B ss
  2545. request.
  2546. .
  2547. In GNU troff, as in UNIX troff, you should always follow a sentence
  2548. with either a newline or two spaces.
  2549. .
  2550. .TP
  2551. .BI .ta\ n1\ n2\|.\|.\|.nn \ T\ r1\ r2\|.\|.\|.\|rn
  2552. Set tabs at positions
  2553. .IR n1 ,
  2554. .IR n2 ,\|.\|.\|.\|,
  2555. .I nn
  2556. and then set tabs at
  2557. .IR nn + r1 ,
  2558. .IR nn + r2 ,\|.\|.\|.\|,
  2559. .IR nn + rn
  2560. and then at
  2561. .IR nn + rn + r1 ,
  2562. .IR nn + rn + r2 ,\|.\|.\|.\|,
  2563. .IR nn + rn + rn ,
  2564. and so on.
  2565. For example,
  2566. .
  2567. .RS
  2568. .IP
  2569. .ft CB
  2570. .Text .ta T .5i
  2571. .br
  2572. .ft
  2573. .
  2574. .P
  2575. will set tabs every half an inch.
  2576. .RE
  2577. .
  2578. .
  2579. .\" --------------------------------------------------------------------
  2580. .SS "New number registers"
  2581. .\" --------------------------------------------------------------------
  2582. .
  2583. The following read-only registers are available:
  2584. .
  2585. .TP
  2586. .B \[rs]n[.C]
  2587. 1\~if compatibility mode is in effect, 0\~otherwise.
  2588. .
  2589. .TP
  2590. .B \[rs]n[.cdp]
  2591. The depth of the last glyph added to the current environment.
  2592. .
  2593. It is positive if the glyph extends below the baseline.
  2594. .
  2595. .TP
  2596. .B \[rs]n[.ce]
  2597. The number of lines remaining to be centered, as set by the
  2598. .B ce
  2599. request.
  2600. .
  2601. .TP
  2602. .B \[rs]n[.cht]
  2603. The height of the last glyph added to the current environment.
  2604. .
  2605. It is positive if the glyph extends above the baseline.
  2606. .
  2607. .TP
  2608. .B \[rs]n[.color]
  2609. 1\~if colors are enabled, 0\~otherwise.
  2610. .
  2611. .TP
  2612. .B \[rs]n[.csk]
  2613. The skew of the last glyph added to the current environment.
  2614. .
  2615. The
  2616. .I skew
  2617. of a glyph is how far to the right of the center of a glyph
  2618. the center of an accent over that glyph should be placed.
  2619. .
  2620. .TP
  2621. .B \[rs]n[.ev]