=================================================================== RCS file: /cvs/mandoc/mandoc_char.7,v retrieving revision 1.26 retrieving revision 1.45 diff -u -p -r1.26 -r1.45 --- mandoc/mandoc_char.7 2009/10/15 02:42:53 1.26 +++ mandoc/mandoc_char.7 2011/05/15 15:30:33 1.45 @@ -1,6 +1,6 @@ -.\" $Id: mandoc_char.7,v 1.26 2009/10/15 02:42:53 kristaps Exp $ +.\" $Id: mandoc_char.7,v 1.45 2011/05/15 15:30:33 kristaps Exp $ .\" -.\" Copyright (c) 2009 Kristaps Dzonsons +.\" Copyright (c) 2009 Kristaps Dzonsons .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -13,32 +13,27 @@ .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.\" -.Dd $Mdocdate: October 15 2009 $ +.\" +.Dd $Mdocdate: May 15 2011 $ .Dt MANDOC_CHAR 7 .Os -. -. .Sh NAME .Nm mandoc_char .Nd mandoc special characters -. -. .Sh DESCRIPTION -This documents the special characters and predefined strings accepted by +This page documents the special characters and predefined strings accepted by .Xr mandoc 1 to format .Xr mdoc 7 and .Xr man 7 documents. -. .Pp Both .Xr mdoc 7 and .Xr man 7 -encode special characters with +encode special characters with .Sq \eX .Pq for a one-character escape , .Sq \e(XX @@ -54,7 +49,7 @@ and .Sq \eX as .Sq \e[X] . -Predefined strings are functionally similar to special characters, using +Predefined strings are functionally similar to special characters, using .Sq \e*X .Pq for a one-character escape , .Sq \e*(XX @@ -70,38 +65,16 @@ and .Sq \e*X as .Sq \e*[X] . -. .Pp Note that each output mode will have a different rendering of the -characters. It's guaranteed that each input symbol will correspond to a +characters. +It's guaranteed that each input symbol will correspond to a (more or less) meaningful output rendering, regardless the mode. -. -.Ss ASCII output -Formatting documents with ASCII output results in a 7-bit ASCII -approximation of zero or more characters, for example, the -.Dq aleph -character -.Sq \e(Ah -will render as -.Sq N . -Approximations are a best-effort, and naturally some clarity will be lost. -. -.Ss HTML output -The HTML output mode uses decimal-encoded UTF-8 for sequences, for -example, the -.Dq aleph -character -.Sq \e(Ah -will render as -.Sq ℵ . -. -. .Sh SPECIAL CHARACTERS These are the preferred input symbols for producing special characters. -. .Pp Spacing: -.Bl -column -compact -offset indent 10m 20m +.Bl -column -compact -offset indent "Input" "Description" .It Em Input Ta Em Description .It \e~ Ta non-breaking, non-collapsing space .It \e Ta breaking, non-collapsing n-width space @@ -110,11 +83,11 @@ Spacing: .It \e& Ta zero-width space .It \e| Ta zero-width space .It \e0 Ta breaking, non-collapsing digit-width space +.It \ec Ta removes any trailing space (if applicable) .El -. .Pp Lines: -.Bl -column -compact -offset indent 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(ba Ta \(ba Ta bar .It \e(br Ta \(br Ta box rule @@ -124,10 +97,9 @@ Lines: .It \e(sl Ta \(sl Ta forward slash .It \e(rs Ta \(rs Ta backward slash .El -. .Pp Text markers: -.Bl -column -compact -offset indent 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(ci Ta \(ci Ta circle .It \e(bu Ta \(bu Ta bullet @@ -144,33 +116,29 @@ Text markers: .It \e(CR Ta \(CR Ta carriage return .It \e(OK Ta \(OK Ta check mark .El -. .Pp Legal symbols: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(co Ta \(co Ta copyright .It \e(rg Ta \(rg Ta registered .It \e(tm Ta \(tm Ta trademarked .El -. .Pp Punctuation: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(em Ta \(em Ta em-dash .It \e(en Ta \(en Ta en-dash .It \e(hy Ta \(hy Ta hyphen -.It \e\e Ta \\ Ta back-slash .It \ee Ta \e Ta back-slash .It \e. Ta \. Ta period .It \e(r! Ta \(r! Ta upside-down exclamation .It \e(r? Ta \(r? Ta upside-down question .El -. .Pp Quotes: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(Bq Ta \(Bq Ta right low double-quote .It \e(bq Ta \(bq Ta right low single-quote @@ -185,10 +153,9 @@ Quotes: .It \e(fo Ta \(fo Ta left single guillemet .It \e(fc Ta \(fc Ta right single guillemet .El -. .Pp Brackets: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "xxbracketrightbpx" Rendered Description .It Em Input Ta Em Rendered Ta Em Description .It \e(lB Ta \(lB Ta left bracket .It \e(rB Ta \(rB Ta right bracket @@ -225,10 +192,9 @@ Brackets: .It \e[parenrightbp] Ta \[parenrightbp] Ta bottom-right hooked parenthesis .It \e[parenrightex] Ta \[parenrightex] Ta right hooked parenthesis extension .El -. .Pp Arrows: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(<- Ta \(<- Ta left arrow .It \e(-> Ta \(-> Ta right arrow @@ -243,10 +209,9 @@ Arrows: .It \e(dA Ta \(dA Ta down double-arrow .It \e(vA Ta \(vA Ta up-down double-arrow .El -. .Pp Logical: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(AN Ta \(AN Ta logical and .It \e(OR Ta \(OR Ta logical or @@ -259,10 +224,9 @@ Logical: .It \e(3d Ta \(3d Ta therefore .It \e(or Ta \(or Ta bitwise or .El -. .Pp Mathematical: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "xxcoproductxx" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(pl Ta \(pl Ta plus .It \e(mi Ta \(mi Ta minus @@ -325,10 +289,9 @@ Mathematical: .It \e(pd Ta \(pd Ta partial differential .It \e(-h Ta \(-h Ta Planck constant over 2\(*p .El -. .Pp Ligatures: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(ff Ta \(ff Ta ff ligature .It \e(fi Ta \(fi Ta fi ligature @@ -343,10 +306,9 @@ Ligatures: .It \e(IJ Ta \(IJ Ta IJ ligature .It \e(ij Ta \(ij Ta ij ligature .El -. .Pp Accents: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(a" Ta \(a" Ta Hungarian umlaut .It \e(a- Ta \(a- Ta macron @@ -366,10 +328,9 @@ Accents: .It \e(ha Ta \(ha Ta hat (text) .It \e(ti Ta \(ti Ta tilde (text) .El -. .Pp Accented letters: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e('A Ta \('A Ta acute A .It \e('E Ta \('E Ta acute E @@ -427,10 +388,9 @@ Accented letters: .It \e(oA Ta \(oA Ta ring A .It \e(oa Ta \(oa Ta ring a .El -. .Pp Special letters: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(-D Ta \(-D Ta Eth .It \e(Sd Ta \(Sd Ta eth @@ -439,10 +399,9 @@ Special letters: .It \e(.i Ta \(.i Ta dotless i .It \e(.j Ta \(.j Ta dotless j .El -. .Pp Currency: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(Do Ta \(Do Ta dollar .It \e(ct Ta \(ct Ta cent @@ -453,10 +412,9 @@ Currency: .It \e(Cs Ta \(Cs Ta Scandinavian .It \e(Fn Ta \(Fn Ta florin .El -. .Pp Units: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(de Ta \(de Ta degree .It \e(%0 Ta \(%0 Ta per-thousand @@ -464,10 +422,9 @@ Units: .It \e(sd Ta \(sd Ta second .It \e(mc Ta \(mc Ta micro .El -. .Pp Greek letters: -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e(*A Ta \(*A Ta Alpha .It \e(*B Ta \(*B Ta Beta @@ -523,14 +480,16 @@ Greek letters: .It \e(+e Ta \(+e Ta epsilon variant .It \e(ts Ta \(ts Ta sigma terminal .El -. -. .Sh PREDEFINED STRINGS -These are not recommended for use, as they differ across -implementations: -. +Predefined strings are inherited from the macro packages of historical +troff implementations. +They are +.Em not recommended +for use, as they differ across implementations. +Manuals using these predefined strings are almost certainly not +portable. .Pp -.Bl -compact -offset indent -column 10m 10m 10m +.Bl -column -compact -offset indent "Input" "Rendered" "Description" .It Em Input Ta Em Rendered Ta Em Description .It \e*(Ba Ta \*(Ba Ta vertical bar .It \e*(Ne Ta \*(Ne Ta not equal @@ -558,59 +517,89 @@ implementations: .It \e*(>= Ta \*(>= Ta greater-than-equal .It \e*(aa Ta \*(aa Ta acute .It \e*(ga Ta \*(ga Ta grave +.It \e*(Px Ta \*(Px Ta POSIX standard name +.It \e*(Ai Ta \*(Ai Ta ANSI standard name .El -. -. -.Sh COMPATIBILITY -This section documents compatibility of -.Nm -with older or existing versions of -.Xr groff 1 . -. +.Sh UNICODE CHARACTERS +The escape sequence .Pp -The following render differently in -.Fl T Ns Ar ascii -output mode: -.Bd -ragged -offset indent -\e(ss, \e(nm, \e(nb, \e(nc, \e(ib, \e(ip, \e(pp, \e[sum], \e[product], -\e[coproduct], \e(gr, \e(-h, \e(a. -.Ed -. +.Dl \e[uXXXX] .Pp -The following render differently in -.Fl T Ns Ar html -output mode: -.Bd -ragged -offset indent -\e(~=, \e(nb, \e(nc -.Ed -. +is interpreted as a Unicode codepoint. +The codepoint must be in the range above U+0080 and less than U+10FFFF. +For compatibility, points must be zero-padded to four characters; if +greater than four characters, no zero padding is allowed. +Unicode surrogates are not allowed. +.\" .Pp +.\" Unicode glyphs attenuate to the +.\" .Sq \&? +.\" character if invalid or not rendered by current output media. +.Sh NUMBERED CHARACTERS +For backward compatibility with existing manuals, +.Xr mandoc 1 +also supports the .Pp -Finally, the following have been omitted by being poorly documented or -having no known representation: -.Bd -ragged -offset indent -\e[radicalex], \e[sqrtex], \e(ru -.Ed -. -. +.Dl \eN\(aq Ns Ar number Ns \(aq +.Pp +escape sequence, inserting the character +.Ar number +from the current character set into the output. +Of course, this is inherently non-portable and is already marked +as deprecated in the Heirloom roff manual. +For example, do not use \eN'34', use \e(dq, or even the plain +.Sq \(dq +character where possible. +.Sh COMPATIBILITY +This section documents compatibility between mandoc and other other +troff implementations, at this time limited to GNU troff +.Pq Qq groff . +.Pp +.Bl -dash -compact +.It +The \eN\(aq\(aq escape sequence is limited to printable characters; in +groff, it accepts arbitrary character numbers. +.It +In +.Fl T Ns Cm ascii , +the +\e(ss, \e(nm, \e(nb, \e(nc, \e(ib, \e(ip, \e(pp, \e[sum], \e[product], +\e[coproduct], \e(gr, \e(\-h, and \e(a. special characters render +differently between mandoc and groff. +.It +In +.Fl T Ns Cm html +and +.Fl T Ns Cm xhtml , +the \e(~=, \e(nb, and \e(nc special characters render differently +between mandoc and groff. +.It +The +.Fl T Ns Cm ps +and +.Fl T Ns Cm pdf +modes format like +.Fl T Ns Cm ascii +instead of rendering glyphs as in groff. +.It +The \e[radicalex], \e[sqrtex], and \e(ru special characters have been omitted +from mandoc either because they are poorly documented or they have no +known representation. +.El .Sh SEE ALSO .Xr mandoc 1 -. -. -.Sh STANDARDS -.Rs -.%A The Unicode Consortium -.%T The Unicode Standard: Worldwide Character Encoding, Version 5.2 -.%D 1991 -.Re -.Rs -.%A W3C -.%T HTML 4.01 Specification -.%D December, 1999 -.Re -. -. .Sh AUTHORS The .Nm -utility was written by -.An Kristaps Dzonsons Aq kristaps@kth.se . +manual page was written by +.An Kristaps Dzonsons Aq kristaps@bsd.lv . +.Sh CAVEATS +The +.Sq \e*(Ba +escape mimics the behaviour of the +.Sq \&| +character in +.Xr mdoc 7 ; +thus, if you wish to render a vertical bar with no side effects, use +the +.Sq \e(ba +escape.