Annotation of mandoc/mandoc_char.7, Revision 1.79
1.79 ! schwarze 1: .\" $Id: mandoc_char.7,v 1.78 2020/10/31 11:45:16 schwarze Exp $
1.1 kristaps 2: .\"
1.50 schwarze 3: .\" Copyright (c) 2003 Jason McIntyre <jmc@openbsd.org>
4: .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
1.79 ! schwarze 5: .\" Copyright (c) 2011, 2013, 2015, 2017-2020, 2022
! 6: .\" Ingo Schwarze <schwarze@openbsd.org>
1.1 kristaps 7: .\"
8: .\" Permission to use, copy, modify, and distribute this software for any
1.4 kristaps 9: .\" purpose with or without fee is hereby granted, provided that the above
10: .\" copyright notice and this permission notice appear in all copies.
1.1 kristaps 11: .\"
1.4 kristaps 12: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.30 kristaps 19: .\"
1.79 ! schwarze 20: .Dd $Mdocdate: October 31 2020 $
1.2 kristaps 21: .Dt MANDOC_CHAR 7
1.1 kristaps 22: .Os
23: .Sh NAME
24: .Nm mandoc_char
25: .Nd mandoc special characters
26: .Sh DESCRIPTION
1.50 schwarze 27: This page documents the
28: .Xr roff 7
29: escape sequences accepted by
1.1 kristaps 30: .Xr mandoc 1
1.50 schwarze 31: to represent special characters in
1.1 kristaps 32: .Xr mdoc 7
33: and
34: .Xr man 7
1.24 kristaps 35: documents.
1.1 kristaps 36: .Pp
1.50 schwarze 37: The rendering depends on the
38: .Xr mandoc 1
1.68 schwarze 39: output mode; it can be inspected by calling
40: .Xr man 1
41: on the
42: .Nm
43: manual page with different
44: .Fl T
45: arguments.
46: In ASCII output, the rendering of some characters may be hard
47: to interpret for the reader.
48: Many are rendered as descriptive strings like
49: .Qq <integral> ,
50: .Qq <degree> ,
51: or
52: .Qq <Gamma> ,
53: which may look ugly, and many are replaced by similar ASCII characters.
54: In particular, accented characters are usually shown without the accent.
55: For that reason, try to avoid using any of the special characters
56: documented here except those discussed in the
1.50 schwarze 57: .Sx DESCRIPTION ,
1.68 schwarze 58: unless they are essential for explaining the subject matter at hand,
59: for example when documenting complicated mathematical functions.
1.50 schwarze 60: .Pp
61: In particular, in English manual pages, do not use special-character
62: escape sequences to represent national language characters in author
63: names; instead, provide ASCII transcriptions of the names.
64: .Ss Dashes and Hyphens
65: In typography there are different types of dashes of various width:
1.72 schwarze 66: the hyphen (\(hy),
1.50 schwarze 67: the en-dash (\(en),
1.69 schwarze 68: the em-dash (\(em),
69: and the mathematical minus sign (\(mi).
1.50 schwarze 70: .Pp
71: Hyphens are used for adjectives;
72: to separate the two parts of a compound word;
73: or to separate a word across two successive lines of text.
74: The hyphen does not need to be escaped:
75: .Bd -unfilled -offset indent
76: blue-eyed
77: lorry-driver
78: .Ed
1.64 schwarze 79: .Pp
1.50 schwarze 80: The en-dash is used to separate the two elements of a range,
81: or can be used the same way as an em-dash.
82: It should be written as
83: .Sq \e(en :
84: .Bd -unfilled -offset indent
85: pp. 95\e(en97.
86: Go away \e(en or else!
87: .Ed
88: .Pp
89: The em-dash can be used to show an interruption
90: or can be used the same way as colons, semi-colons, or parentheses.
91: It should be written as
92: .Sq \e(em :
93: .Bd -unfilled -offset indent
94: Three things \e(em apples, oranges, and bananas.
95: This is not that \e(em rather, this is that.
96: .Ed
97: .Pp
1.69 schwarze 98: In
99: .Xr roff 7
100: documents, the minus sign is normally written as
101: .Sq \e- .
102: In manual pages, some style guides recommend to also use
103: .Sq \e-
104: if an ASCII 0x2d
105: .Dq hyphen-minus
106: output glyph that can be copied and pasted is desired in output modes
107: supporting it, for example in
108: .Fl T Cm utf8
109: and
110: .Fl T Cm html .
1.76 schwarze 111: But currently, no practically relevant manual page formatter requires
112: that subtlety, so in manual pages, it is sufficient to write plain
1.69 schwarze 113: .Sq -
114: to represent hyphen, minus, and hyphen-minus.
1.71 schwarze 115: .Pp
116: If a word on a text input line contains a hyphen, a formatter may decide
117: to insert an output line break after the hyphen if that helps filling
118: the current output line, but the whole word would overflow the line.
119: If it is important that the word is not broken across lines in this
120: way, a zero-width space
121: .Pq Sq \e&
122: can be inserted before or after the hyphen.
123: While
124: .Xr mandoc 1
125: never breaks the output line after hyphens adjacent to a zero-width
126: space, after any of the other dash- or hyphen-like characters
127: represented by escape sequences, or after hyphens inside words in
128: macro arguments, other software may not respect these rules and may
129: break the line even in such cases.
130: .Pp
131: Some
132: .Xr roff 7
133: implementations contains dictionaries allowing to break the line
134: at syllable boundaries even inside words that contain no hyphens.
135: Such automatic hyphenation is not supported by
136: .Xr mandoc 1 ,
137: which only breaks the line at whitespace, and inside words only
138: after existing hyphens.
1.50 schwarze 139: .Ss Spaces
140: To separate words in normal text, for indenting and alignment
141: in literal context, and when none of the following special cases apply,
142: just use the normal space character
143: .Pq Sq \ .
144: .Pp
1.56 schwarze 145: When filling text, output lines may be broken between words, i.e. at space
1.50 schwarze 146: characters.
147: To prevent a line break between two particular words,
1.56 schwarze 148: use the unpaddable non-breaking space escape sequence
149: .Pq Sq \e\ \&
1.50 schwarze 150: instead of the normal space character.
151: For example, the input string
1.56 schwarze 152: .Dq number\e\ 1
1.50 schwarze 153: will be kept together as
1.56 schwarze 154: .Dq number\ 1
1.50 schwarze 155: on the same output line.
156: .Pp
157: On request and macro lines, the normal space character serves as an
158: argument delimiter.
1.56 schwarze 159: To include whitespace into arguments, quoting is usually the best choice;
160: see the MACRO SYNTAX section in
161: .Xr roff 7 .
162: In some cases, using the non-breaking space escape sequence
1.50 schwarze 163: .Pq Sq \e\ \&
1.56 schwarze 164: may be preferable.
165: .Pp
1.50 schwarze 166: To escape macro names and to protect whitespace at the end
167: of input lines, the zero-width space
168: .Pq Sq \e&
169: is often useful.
170: For example, in
171: .Xr mdoc 7 ,
172: a normal space character can be displayed in single quotes in either
173: of the following ways:
174: .Pp
175: .Dl .Sq \(dq \(dq
176: .Dl .Sq \e \e&
177: .Ss Quotes
178: On request and macro lines, the double-quote character
179: .Pq Sq \(dq
180: is handled specially to allow quoting.
181: One way to prevent this special handling is by using the
182: .Sq \e(dq
183: escape sequence.
184: .Pp
185: Note that on text lines, literal double-quote characters can be used
186: verbatim.
187: All other quote-like characters can be used verbatim as well,
188: even on request and macro lines.
1.61 schwarze 189: .Ss Accents
190: In output modes supporting such special output characters, for example
191: .Fl T Cm pdf ,
1.66 schwarze 192: and sometimes less consistently in
193: .Fl T Cm utf8 ,
1.61 schwarze 194: some
195: .Xr roff 7
196: formatters convert the following ASCII input characters to the
197: following Unicode special output characters:
198: .Bl -column x(ga U+2018 -offset indent
199: .It \(ga Ta U+2018 Ta left single quotation mark
200: .It \(aq Ta U+2019 Ta right single quotation mark
201: .It \(ti Ta U+02DC Ta small tilde
1.66 schwarze 202: .It \(ha Ta U+02C6 Ta modifier letter circumflex
1.61 schwarze 203: .El
204: .Pp
205: In prose, this automatic substitution is often desirable;
206: but when these characters have to be displayed as plain ASCII
207: characters, for example in source code samples, they require
208: escaping to render as follows:
209: .Bl -column x(ga U+2018 -offset indent
210: .It \e(ga Ta U+0060 Ta grave accent
211: .It \e(aq Ta U+0027 Ta apostrophe
212: .It \e(ti Ta U+007E Ta tilde
1.66 schwarze 213: .It \e(ha Ta U+005E Ta circumflex accent
1.61 schwarze 214: .El
1.50 schwarze 215: .Ss Periods
216: The period
217: .Pq Sq \&.
218: is handled specially at the beginning of an input line,
219: where it introduces a
220: .Xr roff 7
221: request or a macro, and when appearing alone as a macro argument in
222: .Xr mdoc 7 .
223: In such situations, prepend a zero-width space
1.79 ! schwarze 224: .Pq Sq \e&.\&
1.50 schwarze 225: to make it behave like normal text.
226: .Pp
1.79 ! schwarze 227: Do not use the character pair
1.50 schwarze 228: .Sq \e.
1.79 ! schwarze 229: to escape a period because
! 230: .Sq \e.
! 231: is not a character escape sequence, does not prevent special handling
! 232: of the period under normal circumstances, and is only intended to
! 233: be used in the very special situation of defining a user-defined
! 234: macro that, when called, defines another user-defined macro, which
! 235: no manual page is ever supposed to do.
1.50 schwarze 236: .Ss Backslashes
237: To include a literal backslash
238: .Pq Sq \e
239: into the output, use the
240: .Pq Sq \ee
241: escape sequence.
242: .Pp
243: Note that doubling it
244: .Pq Sq \e\e
245: is not the right way to output a backslash.
246: Because
247: .Xr mandoc 1
248: does not implement full
249: .Xr roff 7
250: functionality, it may work with
251: .Xr mandoc 1 ,
252: but it may have weird effects on complete
253: .Xr roff 7
254: implementations.
255: .Sh SPECIAL CHARACTERS
256: Special characters are encoded as
1.9 kristaps 257: .Sq \eX
258: .Pq for a one-character escape ,
259: .Sq \e(XX
260: .Pq two-character ,
261: and
262: .Sq \e[N]
263: .Pq N-character .
1.50 schwarze 264: For details, see the
265: .Em Special Characters
266: subsection of the
267: .Xr roff 7
268: manual.
1.8 kristaps 269: .Pp
1.77 schwarze 270: Spaces, non-breaking unless stated otherwise:
1.49 kristaps 271: .Bl -column "Input" "Description" -offset indent -compact
1.24 kristaps 272: .It Em Input Ta Em Description
1.77 schwarze 273: .It Sq \e\ \& Ta unpaddable space
274: .It \e\(ti Ta paddable space
275: .It \e0 Ta digit-width space
1.56 schwarze 276: .It \e| Ta one-sixth \e(em narrow space, zero width in nroff mode
277: .It \e^ Ta one-twelfth \e(em half-narrow space, zero width in nroff
1.77 schwarze 278: .It \e& Ta zero-width space
1.75 schwarze 279: .It \e) Ta zero-width space transparent to end-of-sentence detection
1.56 schwarze 280: .It \e% Ta zero-width space allowing hyphenation
1.75 schwarze 281: .It \e: Ta zero-width space allowing line break
1.8 kristaps 282: .El
1.1 kristaps 283: .Pp
1.23 kristaps 284: Lines:
1.49 kristaps 285: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 286: .It Em Input Ta Em Rendered Ta Em Description
287: .It \e(ba Ta \(ba Ta bar
288: .It \e(br Ta \(br Ta box rule
289: .It \e(ul Ta \(ul Ta underscore
1.67 schwarze 290: .It \e(ru Ta \(ru Ta underscore (width 0.5m)
1.57 schwarze 291: .It \e(rn Ta \(rn Ta overline
1.24 kristaps 292: .It \e(bb Ta \(bb Ta broken bar
293: .It \e(sl Ta \(sl Ta forward slash
294: .It \e(rs Ta \(rs Ta backward slash
1.23 kristaps 295: .El
296: .Pp
297: Text markers:
1.49 kristaps 298: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 299: .It Em Input Ta Em Rendered Ta Em Description
300: .It \e(ci Ta \(ci Ta circle
301: .It \e(bu Ta \(bu Ta bullet
302: .It \e(dd Ta \(dd Ta double dagger
303: .It \e(dg Ta \(dg Ta dagger
304: .It \e(lz Ta \(lz Ta lozenge
305: .It \e(sq Ta \(sq Ta white square
306: .It \e(ps Ta \(ps Ta paragraph
307: .It \e(sc Ta \(sc Ta section
308: .It \e(lh Ta \(lh Ta left hand
309: .It \e(rh Ta \(rh Ta right hand
310: .It \e(at Ta \(at Ta at
311: .It \e(sh Ta \(sh Ta hash (pound)
312: .It \e(CR Ta \(CR Ta carriage return
313: .It \e(OK Ta \(OK Ta check mark
1.66 schwarze 314: .It \e(CL Ta \(CL Ta club suit
315: .It \e(SP Ta \(SP Ta spade suit
316: .It \e(HE Ta \(HE Ta heart suit
317: .It \e(DI Ta \(DI Ta diamond suit
1.23 kristaps 318: .El
319: .Pp
320: Legal symbols:
1.49 kristaps 321: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 322: .It Em Input Ta Em Rendered Ta Em Description
323: .It \e(co Ta \(co Ta copyright
324: .It \e(rg Ta \(rg Ta registered
325: .It \e(tm Ta \(tm Ta trademarked
1.23 kristaps 326: .El
327: .Pp
328: Punctuation:
1.49 kristaps 329: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 330: .It Em Input Ta Em Rendered Ta Em Description
331: .It \e(em Ta \(em Ta em-dash
332: .It \e(en Ta \(en Ta en-dash
333: .It \e(hy Ta \(hy Ta hyphen
334: .It \ee Ta \e Ta back-slash
335: .It \e(r! Ta \(r! Ta upside-down exclamation
336: .It \e(r? Ta \(r? Ta upside-down question
1.1 kristaps 337: .El
338: .Pp
1.19 kristaps 339: Quotes:
1.49 kristaps 340: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 341: .It Em Input Ta Em Rendered Ta Em Description
342: .It \e(Bq Ta \(Bq Ta right low double-quote
343: .It \e(bq Ta \(bq Ta right low single-quote
344: .It \e(lq Ta \(lq Ta left double-quote
345: .It \e(rq Ta \(rq Ta right double-quote
346: .It \e(oq Ta \(oq Ta left single-quote
347: .It \e(cq Ta \(cq Ta right single-quote
1.70 schwarze 348: .It \e(aq Ta \(aq Ta apostrophe quote (ASCII character)
349: .It \e(dq Ta \(dq Ta double quote (ASCII character)
1.24 kristaps 350: .It \e(Fo Ta \(Fo Ta left guillemet
351: .It \e(Fc Ta \(Fc Ta right guillemet
352: .It \e(fo Ta \(fo Ta left single guillemet
353: .It \e(fc Ta \(fc Ta right single guillemet
1.19 kristaps 354: .El
355: .Pp
356: Brackets:
1.57 schwarze 357: .Bl -column "xxbracketrightbtx" Rendered Description -offset indent -compact
1.24 kristaps 358: .It Em Input Ta Em Rendered Ta Em Description
359: .It \e(lB Ta \(lB Ta left bracket
360: .It \e(rB Ta \(rB Ta right bracket
361: .It \e(lC Ta \(lC Ta left brace
362: .It \e(rC Ta \(rC Ta right brace
363: .It \e(la Ta \(la Ta left angle
364: .It \e(ra Ta \(ra Ta right angle
1.70 schwarze 365: .It \e(bv Ta \(bv Ta brace extension (special font)
1.20 kristaps 366: .It \e[braceex] Ta \[braceex] Ta brace extension
367: .It \e[bracketlefttp] Ta \[bracketlefttp] Ta top-left hooked bracket
1.57 schwarze 368: .It \e[bracketleftbt] Ta \[bracketleftbt] Ta bottom-left hooked bracket
1.20 kristaps 369: .It \e[bracketleftex] Ta \[bracketleftex] Ta left hooked bracket extension
370: .It \e[bracketrighttp] Ta \[bracketrighttp] Ta top-right hooked bracket
1.57 schwarze 371: .It \e[bracketrightbt] Ta \[bracketrightbt] Ta bottom-right hooked bracket
1.20 kristaps 372: .It \e[bracketrightex] Ta \[bracketrightex] Ta right hooked bracket extension
1.24 kristaps 373: .It \e(lt Ta \(lt Ta top-left hooked brace
1.20 kristaps 374: .It \e[bracelefttp] Ta \[bracelefttp] Ta top-left hooked brace
1.24 kristaps 375: .It \e(lk Ta \(lk Ta mid-left hooked brace
1.20 kristaps 376: .It \e[braceleftmid] Ta \[braceleftmid] Ta mid-left hooked brace
1.24 kristaps 377: .It \e(lb Ta \(lb Ta bottom-left hooked brace
1.57 schwarze 378: .It \e[braceleftbt] Ta \[braceleftbt] Ta bottom-left hooked brace
1.20 kristaps 379: .It \e[braceleftex] Ta \[braceleftex] Ta left hooked brace extension
1.24 kristaps 380: .It \e(rt Ta \(rt Ta top-left hooked brace
1.20 kristaps 381: .It \e[bracerighttp] Ta \[bracerighttp] Ta top-right hooked brace
1.24 kristaps 382: .It \e(rk Ta \(rk Ta mid-right hooked brace
1.20 kristaps 383: .It \e[bracerightmid] Ta \[bracerightmid] Ta mid-right hooked brace
1.24 kristaps 384: .It \e(rb Ta \(rb Ta bottom-right hooked brace
1.57 schwarze 385: .It \e[bracerightbt] Ta \[bracerightbt] Ta bottom-right hooked brace
1.20 kristaps 386: .It \e[bracerightex] Ta \[bracerightex] Ta right hooked brace extension
387: .It \e[parenlefttp] Ta \[parenlefttp] Ta top-left hooked parenthesis
1.57 schwarze 388: .It \e[parenleftbt] Ta \[parenleftbt] Ta bottom-left hooked parenthesis
1.20 kristaps 389: .It \e[parenleftex] Ta \[parenleftex] Ta left hooked parenthesis extension
390: .It \e[parenrighttp] Ta \[parenrighttp] Ta top-right hooked parenthesis
1.57 schwarze 391: .It \e[parenrightbt] Ta \[parenrightbt] Ta bottom-right hooked parenthesis
1.20 kristaps 392: .It \e[parenrightex] Ta \[parenrightex] Ta right hooked parenthesis extension
1.1 kristaps 393: .El
394: .Pp
1.20 kristaps 395: Arrows:
1.49 kristaps 396: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 397: .It Em Input Ta Em Rendered Ta Em Description
398: .It \e(<- Ta \(<- Ta left arrow
399: .It \e(-> Ta \(-> Ta right arrow
400: .It \e(<> Ta \(<> Ta left-right arrow
401: .It \e(da Ta \(da Ta down arrow
402: .It \e(ua Ta \(ua Ta up arrow
403: .It \e(va Ta \(va Ta up-down arrow
404: .It \e(lA Ta \(lA Ta left double-arrow
405: .It \e(rA Ta \(rA Ta right double-arrow
406: .It \e(hA Ta \(hA Ta left-right double-arrow
407: .It \e(uA Ta \(uA Ta up double-arrow
408: .It \e(dA Ta \(dA Ta down double-arrow
409: .It \e(vA Ta \(vA Ta up-down double-arrow
1.66 schwarze 410: .It \e(an Ta \(an Ta horizontal arrow extension
1.1 kristaps 411: .El
412: .Pp
1.17 kristaps 413: Logical:
1.49 kristaps 414: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 415: .It Em Input Ta Em Rendered Ta Em Description
416: .It \e(AN Ta \(AN Ta logical and
417: .It \e(OR Ta \(OR Ta logical or
1.70 schwarze 418: .It \e[tno] Ta \[tno] Ta logical not (text font)
419: .It \e(no Ta \(no Ta logical not (special font)
1.24 kristaps 420: .It \e(te Ta \(te Ta existential quantifier
421: .It \e(fa Ta \(fa Ta universal quantifier
422: .It \e(st Ta \(st Ta such that
423: .It \e(tf Ta \(tf Ta therefore
424: .It \e(3d Ta \(3d Ta therefore
425: .It \e(or Ta \(or Ta bitwise or
1.17 kristaps 426: .El
427: .Pp
428: Mathematical:
1.49 kristaps 429: .Bl -column "xxcoproductxx" "Rendered" "Description" -offset indent -compact
1.24 kristaps 430: .It Em Input Ta Em Rendered Ta Em Description
1.70 schwarze 431: .It \e- Ta \- Ta minus (text font)
432: .It \e(mi Ta \(mi Ta minus (special font)
433: .It + Ta + Ta plus (text font)
434: .It \e(pl Ta \(pl Ta plus (special font)
1.24 kristaps 435: .It \e(-+ Ta \(-+ Ta minus-plus
1.70 schwarze 436: .It \e[t+-] Ta \[t+-] Ta plus-minus (text font)
437: .It \e(+- Ta \(+- Ta plus-minus (special font)
1.59 schwarze 438: .It \e(pc Ta \(pc Ta center-dot
1.70 schwarze 439: .It \e[tmu] Ta \[tmu] Ta multiply (text font)
440: .It \e(mu Ta \(mu Ta multiply (special font)
1.24 kristaps 441: .It \e(c* Ta \(c* Ta circle-multiply
442: .It \e(c+ Ta \(c+ Ta circle-plus
1.70 schwarze 443: .It \e[tdi] Ta \[tdi] Ta divide (text font)
444: .It \e(di Ta \(di Ta divide (special font)
1.24 kristaps 445: .It \e(f/ Ta \(f/ Ta fraction
446: .It \e(** Ta \(** Ta asterisk
447: .It \e(<= Ta \(<= Ta less-than-equal
448: .It \e(>= Ta \(>= Ta greater-than-equal
449: .It \e(<< Ta \(<< Ta much less
450: .It \e(>> Ta \(>> Ta much greater
451: .It \e(eq Ta \(eq Ta equal
452: .It \e(!= Ta \(!= Ta not equal
453: .It \e(== Ta \(== Ta equivalent
454: .It \e(ne Ta \(ne Ta not equivalent
1.58 schwarze 455: .It \e(ap Ta \(ap Ta tilde operator
456: .It \e(|= Ta \(|= Ta asymptotically equal
1.62 schwarze 457: .It \e(=\(ti Ta \(=~ Ta approximately equal
458: .It \e(\(ti\(ti Ta \(~~ Ta almost equal
459: .It \e(\(ti= Ta \(~= Ta almost equal
1.24 kristaps 460: .It \e(pt Ta \(pt Ta proportionate
461: .It \e(es Ta \(es Ta empty set
462: .It \e(mo Ta \(mo Ta element
463: .It \e(nm Ta \(nm Ta not element
464: .It \e(sb Ta \(sb Ta proper subset
465: .It \e(nb Ta \(nb Ta not subset
466: .It \e(sp Ta \(sp Ta proper superset
467: .It \e(nc Ta \(nc Ta not superset
468: .It \e(ib Ta \(ib Ta reflexive subset
469: .It \e(ip Ta \(ip Ta reflexive superset
470: .It \e(ca Ta \(ca Ta intersection
471: .It \e(cu Ta \(cu Ta union
472: .It \e(/_ Ta \(/_ Ta angle
473: .It \e(pp Ta \(pp Ta perpendicular
474: .It \e(is Ta \(is Ta integral
1.17 kristaps 475: .It \e[integral] Ta \[integral] Ta integral
476: .It \e[sum] Ta \[sum] Ta summation
477: .It \e[product] Ta \[product] Ta product
478: .It \e[coproduct] Ta \[coproduct] Ta coproduct
1.24 kristaps 479: .It \e(gr Ta \(gr Ta gradient
480: .It \e(sr Ta \(sr Ta square root
481: .It \e[sqrt] Ta \[sqrt] Ta square root
482: .It \e(lc Ta \(lc Ta left-ceiling
483: .It \e(rc Ta \(rc Ta right-ceiling
484: .It \e(lf Ta \(lf Ta left-floor
485: .It \e(rf Ta \(rf Ta right-floor
486: .It \e(if Ta \(if Ta infinity
487: .It \e(Ah Ta \(Ah Ta aleph
488: .It \e(Im Ta \(Im Ta imaginary
489: .It \e(Re Ta \(Re Ta real
1.66 schwarze 490: .It \e(wp Ta \(wp Ta Weierstrass p
1.24 kristaps 491: .It \e(pd Ta \(pd Ta partial differential
492: .It \e(-h Ta \(-h Ta Planck constant over 2\(*p
1.66 schwarze 493: .It \e[hbar] Ta \[hbar] Ta Planck constant over 2\(*p
494: .It \e(12 Ta \(12 Ta one-half
495: .It \e(14 Ta \(14 Ta one-fourth
496: .It \e(34 Ta \(34 Ta three-fourths
497: .It \e(18 Ta \(18 Ta one-eighth
498: .It \e(38 Ta \(38 Ta three-eighths
499: .It \e(58 Ta \(58 Ta five-eighths
500: .It \e(78 Ta \(78 Ta seven-eighths
501: .It \e(S1 Ta \(S1 Ta superscript 1
502: .It \e(S2 Ta \(S2 Ta superscript 2
503: .It \e(S3 Ta \(S3 Ta superscript 3
1.1 kristaps 504: .El
505: .Pp
506: Ligatures:
1.49 kristaps 507: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 508: .It Em Input Ta Em Rendered Ta Em Description
509: .It \e(ff Ta \(ff Ta ff ligature
510: .It \e(fi Ta \(fi Ta fi ligature
511: .It \e(fl Ta \(fl Ta fl ligature
512: .It \e(Fi Ta \(Fi Ta ffi ligature
513: .It \e(Fl Ta \(Fl Ta ffl ligature
514: .It \e(AE Ta \(AE Ta AE
515: .It \e(ae Ta \(ae Ta ae
516: .It \e(OE Ta \(OE Ta OE
517: .It \e(oe Ta \(oe Ta oe
518: .It \e(ss Ta \(ss Ta German eszett
519: .It \e(IJ Ta \(IJ Ta IJ ligature
520: .It \e(ij Ta \(ij Ta ij ligature
1.1 kristaps 521: .El
522: .Pp
1.18 kristaps 523: Accents:
1.49 kristaps 524: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 525: .It Em Input Ta Em Rendered Ta Em Description
526: .It \e(a" Ta \(a" Ta Hungarian umlaut
527: .It \e(a- Ta \(a- Ta macron
528: .It \e(a. Ta \(a. Ta dotted
529: .It \e(a^ Ta \(a^ Ta circumflex
530: .It \e(aa Ta \(aa Ta acute
1.62 schwarze 531: .It \e\(aq Ta \' Ta acute
1.24 kristaps 532: .It \e(ga Ta \(ga Ta grave
1.62 schwarze 533: .It \e\(ga Ta \` Ta grave
1.24 kristaps 534: .It \e(ab Ta \(ab Ta breve
535: .It \e(ac Ta \(ac Ta cedilla
536: .It \e(ad Ta \(ad Ta dieresis
537: .It \e(ah Ta \(ah Ta caron
538: .It \e(ao Ta \(ao Ta ring
1.62 schwarze 539: .It \e(a\(ti Ta \(a~ Ta tilde
1.24 kristaps 540: .It \e(ho Ta \(ho Ta ogonek
1.70 schwarze 541: .It \e(ha Ta \(ha Ta hat (ASCII character)
542: .It \e(ti Ta \(ti Ta tilde (ASCII character)
1.18 kristaps 543: .El
544: .Pp
1.21 kristaps 545: Accented letters:
1.49 kristaps 546: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 547: .It Em Input Ta Em Rendered Ta Em Description
1.62 schwarze 548: .It \e(\(aqA Ta \('A Ta acute A
549: .It \e(\(aqE Ta \('E Ta acute E
550: .It \e(\(aqI Ta \('I Ta acute I
551: .It \e(\(aqO Ta \('O Ta acute O
552: .It \e(\(aqU Ta \('U Ta acute U
1.74 schwarze 553: .It \e(\(aqY Ta \('Y Ta acute Y
1.62 schwarze 554: .It \e(\(aqa Ta \('a Ta acute a
555: .It \e(\(aqe Ta \('e Ta acute e
556: .It \e(\(aqi Ta \('i Ta acute i
557: .It \e(\(aqo Ta \('o Ta acute o
558: .It \e(\(aqu Ta \('u Ta acute u
1.74 schwarze 559: .It \e(\(aqy Ta \('y Ta acute y
1.62 schwarze 560: .It \e(\(gaA Ta \(`A Ta grave A
561: .It \e(\(gaE Ta \(`E Ta grave E
562: .It \e(\(gaI Ta \(`I Ta grave I
563: .It \e(\(gaO Ta \(`O Ta grave O
564: .It \e(\(gaU Ta \(`U Ta grave U
565: .It \e(\(gaa Ta \(`a Ta grave a
566: .It \e(\(gae Ta \(`e Ta grave e
567: .It \e(\(gai Ta \(`i Ta grave i
568: .It \e(\(gao Ta \(`i Ta grave o
569: .It \e(\(gau Ta \(`u Ta grave u
570: .It \e(\(tiA Ta \(~A Ta tilde A
571: .It \e(\(tiN Ta \(~N Ta tilde N
572: .It \e(\(tiO Ta \(~O Ta tilde O
573: .It \e(\(tia Ta \(~a Ta tilde a
574: .It \e(\(tin Ta \(~n Ta tilde n
575: .It \e(\(tio Ta \(~o Ta tilde o
1.24 kristaps 576: .It \e(:A Ta \(:A Ta dieresis A
577: .It \e(:E Ta \(:E Ta dieresis E
578: .It \e(:I Ta \(:I Ta dieresis I
579: .It \e(:O Ta \(:O Ta dieresis O
580: .It \e(:U Ta \(:U Ta dieresis U
581: .It \e(:a Ta \(:a Ta dieresis a
582: .It \e(:e Ta \(:e Ta dieresis e
583: .It \e(:i Ta \(:i Ta dieresis i
584: .It \e(:o Ta \(:o Ta dieresis o
585: .It \e(:u Ta \(:u Ta dieresis u
586: .It \e(:y Ta \(:y Ta dieresis y
587: .It \e(^A Ta \(^A Ta circumflex A
588: .It \e(^E Ta \(^E Ta circumflex E
589: .It \e(^I Ta \(^I Ta circumflex I
590: .It \e(^O Ta \(^O Ta circumflex O
591: .It \e(^U Ta \(^U Ta circumflex U
592: .It \e(^a Ta \(^a Ta circumflex a
593: .It \e(^e Ta \(^e Ta circumflex e
594: .It \e(^i Ta \(^i Ta circumflex i
595: .It \e(^o Ta \(^o Ta circumflex o
596: .It \e(^u Ta \(^u Ta circumflex u
597: .It \e(,C Ta \(,C Ta cedilla C
598: .It \e(,c Ta \(,c Ta cedilla c
599: .It \e(/L Ta \(/L Ta stroke L
600: .It \e(/l Ta \(/l Ta stroke l
601: .It \e(/O Ta \(/O Ta stroke O
602: .It \e(/o Ta \(/o Ta stroke o
603: .It \e(oA Ta \(oA Ta ring A
604: .It \e(oa Ta \(oa Ta ring a
1.1 kristaps 605: .El
606: .Pp
1.21 kristaps 607: Special letters:
1.49 kristaps 608: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 609: .It Em Input Ta Em Rendered Ta Em Description
610: .It \e(-D Ta \(-D Ta Eth
611: .It \e(Sd Ta \(Sd Ta eth
612: .It \e(TP Ta \(TP Ta Thorn
613: .It \e(Tp Ta \(Tp Ta thorn
614: .It \e(.i Ta \(.i Ta dotless i
615: .It \e(.j Ta \(.j Ta dotless j
1.21 kristaps 616: .El
617: .Pp
1.22 kristaps 618: Currency:
1.49 kristaps 619: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 620: .It Em Input Ta Em Rendered Ta Em Description
621: .It \e(Do Ta \(Do Ta dollar
622: .It \e(ct Ta \(ct Ta cent
623: .It \e(Eu Ta \(Eu Ta Euro symbol
624: .It \e(eu Ta \(eu Ta Euro symbol
625: .It \e(Ye Ta \(Ye Ta yen
626: .It \e(Po Ta \(Po Ta pound
627: .It \e(Cs Ta \(Cs Ta Scandinavian
628: .It \e(Fn Ta \(Fn Ta florin
1.11 kristaps 629: .El
630: .Pp
1.23 kristaps 631: Units:
1.49 kristaps 632: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 633: .It Em Input Ta Em Rendered Ta Em Description
634: .It \e(de Ta \(de Ta degree
635: .It \e(%0 Ta \(%0 Ta per-thousand
636: .It \e(fm Ta \(fm Ta minute
637: .It \e(sd Ta \(sd Ta second
638: .It \e(mc Ta \(mc Ta micro
1.66 schwarze 639: .It \e(Of Ta \(Of Ta Spanish female ordinal
640: .It \e(Om Ta \(Om Ta Spanish masculine ordinal
1.23 kristaps 641: .El
642: .Pp
1.11 kristaps 643: Greek letters:
1.49 kristaps 644: .Bl -column "Input" "Rendered" "Description" -offset indent -compact
1.24 kristaps 645: .It Em Input Ta Em Rendered Ta Em Description
646: .It \e(*A Ta \(*A Ta Alpha
647: .It \e(*B Ta \(*B Ta Beta
648: .It \e(*G Ta \(*G Ta Gamma
649: .It \e(*D Ta \(*D Ta Delta
650: .It \e(*E Ta \(*E Ta Epsilon
651: .It \e(*Z Ta \(*Z Ta Zeta
652: .It \e(*Y Ta \(*Y Ta Eta
653: .It \e(*H Ta \(*H Ta Theta
654: .It \e(*I Ta \(*I Ta Iota
655: .It \e(*K Ta \(*K Ta Kappa
656: .It \e(*L Ta \(*L Ta Lambda
657: .It \e(*M Ta \(*M Ta Mu
658: .It \e(*N Ta \(*N Ta Nu
659: .It \e(*C Ta \(*C Ta Xi
660: .It \e(*O Ta \(*O Ta Omicron
661: .It \e(*P Ta \(*P Ta Pi
662: .It \e(*R Ta \(*R Ta Rho
663: .It \e(*S Ta \(*S Ta Sigma
664: .It \e(*T Ta \(*T Ta Tau
665: .It \e(*U Ta \(*U Ta Upsilon
666: .It \e(*F Ta \(*F Ta Phi
667: .It \e(*X Ta \(*X Ta Chi
668: .It \e(*Q Ta \(*Q Ta Psi
669: .It \e(*W Ta \(*W Ta Omega
670: .It \e(*a Ta \(*a Ta alpha
671: .It \e(*b Ta \(*b Ta beta
672: .It \e(*g Ta \(*g Ta gamma
673: .It \e(*d Ta \(*d Ta delta
674: .It \e(*e Ta \(*e Ta epsilon
675: .It \e(*z Ta \(*z Ta zeta
676: .It \e(*y Ta \(*y Ta eta
677: .It \e(*h Ta \(*h Ta theta
678: .It \e(*i Ta \(*i Ta iota
679: .It \e(*k Ta \(*k Ta kappa
680: .It \e(*l Ta \(*l Ta lambda
681: .It \e(*m Ta \(*m Ta mu
682: .It \e(*n Ta \(*n Ta nu
683: .It \e(*c Ta \(*c Ta xi
684: .It \e(*o Ta \(*o Ta omicron
685: .It \e(*p Ta \(*p Ta pi
686: .It \e(*r Ta \(*r Ta rho
687: .It \e(*s Ta \(*s Ta sigma
688: .It \e(*t Ta \(*t Ta tau
689: .It \e(*u Ta \(*u Ta upsilon
690: .It \e(*f Ta \(*f Ta phi
691: .It \e(*x Ta \(*x Ta chi
692: .It \e(*q Ta \(*q Ta psi
693: .It \e(*w Ta \(*w Ta omega
694: .It \e(+h Ta \(+h Ta theta variant
695: .It \e(+f Ta \(+f Ta phi variant
696: .It \e(+p Ta \(+p Ta pi variant
697: .It \e(+e Ta \(+e Ta epsilon variant
698: .It \e(ts Ta \(ts Ta sigma terminal
1.1 kristaps 699: .El
1.10 kristaps 700: .Sh PREDEFINED STRINGS
1.43 kristaps 701: Predefined strings are inherited from the macro packages of historical
702: troff implementations.
703: They are
704: .Em not recommended
705: for use, as they differ across implementations.
706: Manuals using these predefined strings are almost certainly not
707: portable.
1.50 schwarze 708: .Pp
709: Their syntax is similar to special characters, using
710: .Sq \e*X
711: .Pq for a one-character escape ,
712: .Sq \e*(XX
713: .Pq two-character ,
714: and
715: .Sq \e*[N]
716: .Pq N-character .
1.49 kristaps 717: .Bl -column "Input" "Rendered" "Description" -offset indent
1.24 kristaps 718: .It Em Input Ta Em Rendered Ta Em Description
719: .It \e*(Ba Ta \*(Ba Ta vertical bar
720: .It \e*(Ne Ta \*(Ne Ta not equal
721: .It \e*(Ge Ta \*(Ge Ta greater-than-equal
722: .It \e*(Le Ta \*(Le Ta less-than-equal
723: .It \e*(Gt Ta \*(Gt Ta greater-than
724: .It \e*(Lt Ta \*(Lt Ta less-than
725: .It \e*(Pm Ta \*(Pm Ta plus-minus
726: .It \e*(If Ta \*(If Ta infinity
727: .It \e*(Pi Ta \*(Pi Ta pi
728: .It \e*(Na Ta \*(Na Ta NaN
729: .It \e*(Am Ta \*(Am Ta ampersand
730: .It \e*R Ta \*R Ta restricted mark
731: .It \e*(Tm Ta \*(Tm Ta trade mark
732: .It \e*q Ta \*q Ta double-quote
733: .It \e*(Rq Ta \*(Rq Ta right-double-quote
734: .It \e*(Lq Ta \*(Lq Ta left-double-quote
735: .It \e*(lp Ta \*(lp Ta right-parenthesis
736: .It \e*(rp Ta \*(rp Ta left-parenthesis
737: .It \e*(lq Ta \*(lq Ta left double-quote
738: .It \e*(rq Ta \*(rq Ta right double-quote
739: .It \e*(ua Ta \*(ua Ta up arrow
740: .It \e*(va Ta \*(va Ta up-down arrow
741: .It \e*(<= Ta \*(<= Ta less-than-equal
742: .It \e*(>= Ta \*(>= Ta greater-than-equal
743: .It \e*(aa Ta \*(aa Ta acute
744: .It \e*(ga Ta \*(ga Ta grave
1.43 kristaps 745: .It \e*(Px Ta \*(Px Ta POSIX standard name
746: .It \e*(Ai Ta \*(Ai Ta ANSI standard name
1.10 kristaps 747: .El
1.45 kristaps 748: .Sh UNICODE CHARACTERS
1.55 schwarze 749: The escape sequences
1.45 kristaps 750: .Pp
1.62 schwarze 751: .Dl \e[uXXXX] and \eC\(aquXXXX\(aq
1.45 kristaps 752: .Pp
1.55 schwarze 753: are interpreted as Unicode codepoints.
1.45 kristaps 754: The codepoint must be in the range above U+0080 and less than U+10FFFF.
1.56 schwarze 755: For compatibility, the hexadecimal digits
1.54 schwarze 756: .Sq A
757: to
758: .Sq F
759: must be given as uppercase characters,
760: and points must be zero-padded to four characters; if
1.45 kristaps 761: greater than four characters, no zero padding is allowed.
762: Unicode surrogates are not allowed.
1.41 schwarze 763: .Sh NUMBERED CHARACTERS
764: For backward compatibility with existing manuals,
765: .Xr mandoc 1
766: also supports the
767: .Pp
1.73 schwarze 768: .Dl \eN\(aq Ns Ar number Ns \(aq and \e[ Ns Cm char Ns Ar number ]
1.41 schwarze 769: .Pp
1.73 schwarze 770: escape sequences, inserting the character
1.41 schwarze 771: .Ar number
772: from the current character set into the output.
773: Of course, this is inherently non-portable and is already marked
1.73 schwarze 774: as deprecated in the Heirloom roff manual;
775: on top of that, the second form is a GNU extension.
776: For example, do not use \eN\(aq34\(aq or \e[char34], use \e(dq,
777: or even the plain
1.41 schwarze 778: .Sq \(dq
779: character where possible.
1.3 kristaps 780: .Sh COMPATIBILITY
1.52 schwarze 781: This section documents compatibility between mandoc and other
1.42 schwarze 782: troff implementations, at this time limited to GNU troff
783: .Pq Qq groff .
784: .Pp
785: .Bl -dash -compact
1.44 kristaps 786: .It
787: The \eN\(aq\(aq escape sequence is limited to printable characters; in
788: groff, it accepts arbitrary character numbers.
1.42 schwarze 789: .It
790: In
791: .Fl T Ns Cm ascii ,
792: the
1.17 kristaps 793: \e(ss, \e(nm, \e(nb, \e(nc, \e(ib, \e(ip, \e(pp, \e[sum], \e[product],
1.63 schwarze 794: \e[coproduct], \e(gr, \e(-h, and \e(a. special characters render
1.42 schwarze 795: differently between mandoc and groff.
796: .It
797: In
1.65 schwarze 798: .Fl T Ns Cm html ,
1.62 schwarze 799: the \e(\(ti=, \e(nb, and \e(nc special characters render differently
1.42 schwarze 800: between mandoc and groff.
801: .It
802: The
803: .Fl T Ns Cm ps
804: and
805: .Fl T Ns Cm pdf
806: modes format like
807: .Fl T Ns Cm ascii
808: instead of rendering glyphs as in groff.
809: .It
810: The \e[radicalex], \e[sqrtex], and \e(ru special characters have been omitted
811: from mandoc either because they are poorly documented or they have no
812: known representation.
813: .El
1.1 kristaps 814: .Sh SEE ALSO
1.50 schwarze 815: .Xr mandoc 1 ,
816: .Xr man 7 ,
817: .Xr mdoc 7 ,
818: .Xr roff 7
1.1 kristaps 819: .Sh AUTHORS
820: The
821: .Nm
1.30 kristaps 822: manual page was written by
1.53 schwarze 823: .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .
1.38 kristaps 824: .Sh CAVEATS
1.56 schwarze 825: The predefined string
1.38 kristaps 826: .Sq \e*(Ba
1.56 schwarze 827: mimics the behaviour of the
1.39 kristaps 828: .Sq \&|
1.38 kristaps 829: character in
830: .Xr mdoc 7 ;
831: thus, if you wish to render a vertical bar with no side effects, use
832: the
833: .Sq \e(ba
834: escape.
CVSweb