[BACK]Return to mandoc_char.7 CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Annotation of mandoc/mandoc_char.7, Revision 1.78

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