1*c9bcef03Schristos.\" Id: eqn.7,v 1.37 2017/09/04 10:35:27 schwarze Exp 248741257Sjoerg.\" 348741257Sjoerg.\" Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv> 4fec65c98Schristos.\" Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org> 548741257Sjoerg.\" 648741257Sjoerg.\" Permission to use, copy, modify, and distribute this software for any 748741257Sjoerg.\" purpose with or without fee is hereby granted, provided that the above 848741257Sjoerg.\" copyright notice and this permission notice appear in all copies. 948741257Sjoerg.\" 1048741257Sjoerg.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1148741257Sjoerg.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1248741257Sjoerg.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1348741257Sjoerg.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1448741257Sjoerg.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1548741257Sjoerg.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1648741257Sjoerg.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1748741257Sjoerg.\" 18*c9bcef03Schristos.Dd September 4, 2017 1948741257Sjoerg.Dt EQN 7 2048741257Sjoerg.Os 2148741257Sjoerg.Sh NAME 2248741257Sjoerg.Nm eqn 2348741257Sjoerg.Nd eqn language reference for mandoc 2448741257Sjoerg.Sh DESCRIPTION 2548741257SjoergThe 2648741257Sjoerg.Nm eqn 27c5f73b34Sjoerglanguage is an equation-formatting language. 2848741257SjoergIt is used within 2948741257Sjoerg.Xr mdoc 7 3048741257Sjoergand 3148741257Sjoerg.Xr man 7 3248741257Sjoerg.Ux 3348741257Sjoergmanual pages. 34c5f73b34SjoergIt describes the 35c5f73b34Sjoerg.Em structure 36c5f73b34Sjoergof an equation, not its mathematical meaning. 37c5f73b34SjoergThis manual describes the 3848741257Sjoerg.Nm 3948741257Sjoerglanguage accepted by the 4048741257Sjoerg.Xr mandoc 1 41fec65c98Schristosutility, which corresponds to the Second Edition 42fec65c98Schristos.Nm 43fec65c98Schristosspecification (see 44c5f73b34Sjoerg.Sx SEE ALSO 45c5f73b34Sjoergfor references). 4648741257Sjoerg.Pp 4748741257SjoergEquations within 4848741257Sjoerg.Xr mdoc 7 4948741257Sjoergor 5048741257Sjoerg.Xr man 7 51c5f73b34Sjoergdocuments are enclosed by the standalone 52c5f73b34Sjoerg.Sq \&.EQ 5348741257Sjoergand 54c5f73b34Sjoerg.Sq \&.EN 55c5f73b34Sjoergtags. 56c5f73b34SjoergEquations are multi-line blocks consisting of formulas and control 57c5f73b34Sjoergstatements. 58c5f73b34Sjoerg.Sh EQUATION STRUCTURE 59c5f73b34SjoergEach equation is bracketed by 60c5f73b34Sjoerg.Sq \&.EQ 61c5f73b34Sjoergand 62c5f73b34Sjoerg.Sq \&.EN 63c5f73b34Sjoergstrings. 64c5f73b34Sjoerg.Em Note : 65c5f73b34Sjoergthese are not the same as 66c5f73b34Sjoerg.Xr roff 7 67c5f73b34Sjoergmacros, and may only be invoked as 68c5f73b34Sjoerg.Sq \&.EQ . 6948741257Sjoerg.Pp 70c5f73b34SjoergThe equation grammar is as follows, where quoted strings are 71c5f73b34Sjoergcase-sensitive literals in the input: 72c5f73b34Sjoerg.Bd -literal -offset indent 73c5f73b34Sjoergeqn : box | eqn box 74c5f73b34Sjoergbox : text 75fec65c98Schristos | \(dq{\(dq eqn \(dq}\(dq 76fec65c98Schristos | \(dqdefine\(dq text text 77fec65c98Schristos | \(dqndefine\(dq text text 78fec65c98Schristos | \(dqtdefine\(dq text text 79fec65c98Schristos | \(dqgfont\(dq text 80fec65c98Schristos | \(dqgsize\(dq text 81fec65c98Schristos | \(dqset\(dq text text 82fec65c98Schristos | \(dqundef\(dq text 83fec65c98Schristos | \(dqsqrt\(dq box 84c5f73b34Sjoerg | box pos box 85c5f73b34Sjoerg | box mark 86*c9bcef03Schristos | \(dqmatrix\(dq \(dq{\(dq [col \(dq{\(dq list \(dq}\(dq]* \(dq}\(dq 87fec65c98Schristos | pile \(dq{\(dq list \(dq}\(dq 88c5f73b34Sjoerg | font box 89fec65c98Schristos | \(dqsize\(dq text box 90fec65c98Schristos | \(dqleft\(dq text eqn [\(dqright\(dq text] 91fec65c98Schristoscol : \(dqlcol\(dq | \(dqrcol\(dq | \(dqccol\(dq | \(dqcol\(dq 92fec65c98Schristostext : [^space\e\(dq]+ | \e\(dq.*\e\(dq 93fec65c98Schristospile : \(dqlpile\(dq | \(dqcpile\(dq | \(dqrpile\(dq | \(dqpile\(dq 94fec65c98Schristospos : \(dqover\(dq | \(dqsup\(dq | \(dqsub\(dq | \(dqto\(dq | \(dqfrom\(dq 95fec65c98Schristosmark : \(dqdot\(dq | \(dqdotdot\(dq | \(dqhat\(dq | \(dqtilde\(dq | \(dqvec\(dq 96fec65c98Schristos | \(dqdyad\(dq | \(dqbar\(dq | \(dqunder\(dq 97fec65c98Schristosfont : \(dqroman\(dq | \(dqitalic\(dq | \(dqbold\(dq | \(dqfat\(dq 98c5f73b34Sjoerglist : eqn 99fec65c98Schristos | list \(dqabove\(dq eqn 100c5f73b34Sjoergspace : [\e^~ \et] 101c5f73b34Sjoerg.Ed 102c5f73b34Sjoerg.Pp 103c5f73b34SjoergWhite-space consists of the space, tab, circumflex, and tilde 104c5f73b34Sjoergcharacters. 105fec65c98SchristosIt is required to delimit tokens consisting of alphabetic characters 106fec65c98Schristosand it is ignored at other places. 107fec65c98SchristosBraces and quotes also delimit tokens. 108c5f73b34SjoergIf within a quoted string, these space characters are retained. 109fec65c98SchristosQuoted strings are also not scanned for keywords, glyph names, 110fec65c98Schristosand expansion of definitions. 111fec65c98SchristosTo print a literal quote character, it can be prepended with a 112fec65c98Schristosbackslash or expressed with the \e(dq escape sequence. 113fec65c98Schristos.Pp 114fec65c98SchristosSubequations can be enclosed in braces to pass them as arguments 115fec65c98Schristosto operation keywords, overriding standard operation precedence. 116fec65c98SchristosBraces can be nested. 117fec65c98SchristosTo set a brace verbatim, it needs to be enclosed in quotes. 118c5f73b34Sjoerg.Pp 119c5f73b34SjoergThe following text terms are translated into a rendered glyph, if 120c5f73b34Sjoergavailable: alpha, beta, chi, delta, epsilon, eta, gamma, iota, kappa, 121c5f73b34Sjoerglambda, mu, nu, omega, omicron, phi, pi, psi, rho, sigma, tau, theta, 122c5f73b34Sjoergupsilon, xi, zeta, DELTA, GAMMA, LAMBDA, OMEGA, PHI, PI, PSI, SIGMA, 123c5f73b34SjoergTHETA, UPSILON, XI, inter (intersection), union (union), prod (product), 124c5f73b34Sjoergint (integral), sum (summation), grad (gradient), del (vector 125fec65c98Schristosdifferential), times (multiply), cdot (center-dot), nothing (zero-width 126c5f73b34Sjoergspace), approx (approximately equals), prime (prime), half (one-half), 127c5f73b34Sjoergpartial (partial differential), inf (infinity), >> (much greater), << 128*c9bcef03Schristos(much less), <\- (left arrow), \-> (right arrow), +\- (plus-minus), != 129c5f73b34Sjoerg(not equal), == (equivalence), <= (less-than-equal), and >= 130c5f73b34Sjoerg(more-than-equal). 131fec65c98SchristosThe character escape sequences documented in 132fec65c98Schristos.Xr mandoc_char 7 133fec65c98Schristoscan be used, too. 134c5f73b34Sjoerg.Pp 135c5f73b34SjoergThe following control statements are available: 136c5f73b34Sjoerg.Bl -tag -width Ds 137c5f73b34Sjoerg.It Cm define 138c5f73b34SjoergReplace all occurrences of a key with a value. 139c5f73b34SjoergIts syntax is as follows: 140c5f73b34Sjoerg.Pp 141fec65c98Schristos.D1 Cm define Ar key cvalc 142c5f73b34Sjoerg.Pp 143c5f73b34SjoergThe first character of the value string, 144c5f73b34Sjoerg.Ar c , 145c5f73b34Sjoergis used as the delimiter for the value 146c5f73b34Sjoerg.Ar val . 147c5f73b34SjoergThis allows for arbitrary enclosure of terms (not just quotes), such as 148c5f73b34Sjoerg.Pp 1499ff1f2acSchristos.D1 Cm define Ar foo \(aqbar baz\(aq 150fec65c98Schristos.D1 Cm define Ar foo cbar bazc 151c5f73b34Sjoerg.Pp 152c5f73b34SjoergIt is an error to have an empty 153c5f73b34Sjoerg.Ar key 154c5f73b34Sjoergor 155c5f73b34Sjoerg.Ar val . 156c5f73b34SjoergNote that a quoted 157c5f73b34Sjoerg.Ar key 158c5f73b34Sjoergcauses errors in some 15948741257Sjoerg.Nm 160c5f73b34Sjoergimplementations and should not be considered portable. 161c5f73b34SjoergIt is not expanded for replacements. 162c5f73b34SjoergDefinitions may refer to other definitions; these are evaluated 163c5f73b34Sjoergrecursively when text replacement occurs and not when the definition is 164c5f73b34Sjoergcreated. 165c5f73b34Sjoerg.Pp 166c5f73b34SjoergDefinitions can create arbitrary strings, for example, the following is 167c5f73b34Sjoerga legal construction. 168c5f73b34Sjoerg.Bd -literal -offset indent 1699ff1f2acSchristosdefine foo \(aqdefine\(aq 1709ff1f2acSchristosfoo bar \(aqbaz\(aq 171c5f73b34Sjoerg.Ed 172c5f73b34Sjoerg.Pp 173c5f73b34SjoergSelf-referencing definitions will raise an error. 174c5f73b34SjoergThe 175c5f73b34Sjoerg.Cm ndefine 176c5f73b34Sjoergstatement is a synonym for 177c5f73b34Sjoerg.Cm define , 178c5f73b34Sjoergwhile 179c5f73b34Sjoerg.Cm tdefine 180c5f73b34Sjoergis discarded. 181c5f73b34Sjoerg.It Cm gfont 182c5f73b34SjoergSet the default font of subsequent output. 183c5f73b34SjoergIts syntax is as follows: 184c5f73b34Sjoerg.Pp 185fec65c98Schristos.D1 Cm gfont Ar font 186c5f73b34Sjoerg.Pp 187c5f73b34SjoergIn mandoc, this value is discarded. 188c5f73b34Sjoerg.It Cm gsize 189c5f73b34SjoergSet the default size of subsequent output. 190c5f73b34SjoergIts syntax is as follows: 191c5f73b34Sjoerg.Pp 192fec65c98Schristos.D1 Cm gsize Oo +|\- Oc Ns Ar size 19348741257Sjoerg.Pp 19448741257SjoergThe 195c5f73b34Sjoerg.Ar size 196c5f73b34Sjoergvalue should be an integer. 197fec65c98SchristosIf prepended by a sign, 198fec65c98Schristosthe font size is changed relative to the current size. 199c5f73b34Sjoerg.It Cm set 200c5f73b34SjoergSet an equation mode. 201c5f73b34SjoergIn mandoc, both arguments are thrown away. 202c5f73b34SjoergIts syntax is as follows: 203c5f73b34Sjoerg.Pp 204fec65c98Schristos.D1 Cm set Ar key val 205c5f73b34Sjoerg.Pp 206c5f73b34SjoergThe 207c5f73b34Sjoerg.Ar key 208c5f73b34Sjoergand 209c5f73b34Sjoerg.Ar val 210c5f73b34Sjoergare not expanded for replacements. 211c5f73b34SjoergThis statement is a GNU extension. 212c5f73b34Sjoerg.It Cm undef 213c5f73b34SjoergUnset a previously-defined key. 214c5f73b34SjoergIts syntax is as follows: 215c5f73b34Sjoerg.Pp 216fec65c98Schristos.D1 Cm define Ar key 217c5f73b34Sjoerg.Pp 218c5f73b34SjoergOnce invoked, the definition for 219c5f73b34Sjoerg.Ar key 220c5f73b34Sjoergis discarded. 221c5f73b34SjoergThe 222c5f73b34Sjoerg.Ar key 223c5f73b34Sjoergis not expanded for replacements. 224c5f73b34SjoergThis statement is a GNU extension. 225c5f73b34Sjoerg.El 226fec65c98Schristos.Pp 227fec65c98SchristosOperation keywords have the following semantics: 228fec65c98Schristos.Bl -tag -width Ds 229fec65c98Schristos.It Cm above 230fec65c98SchristosSee 231fec65c98Schristos.Cm pile . 232fec65c98Schristos.It Cm bar 233fec65c98SchristosDraw a line over the preceding box. 234fec65c98Schristos.It Cm bold 235fec65c98SchristosSet the following box using bold font. 236fec65c98Schristos.It Cm ccol 237fec65c98SchristosLike 238fec65c98Schristos.Cm cpile , 239fec65c98Schristosbut for use in 240fec65c98Schristos.Cm matrix . 241fec65c98Schristos.It Cm cpile 242fec65c98SchristosLike 243fec65c98Schristos.Cm pile , 244fec65c98Schristosbut with slightly increased vertical spacing. 245fec65c98Schristos.It Cm dot 246fec65c98SchristosSet a single dot over the preceding box. 247fec65c98Schristos.It Cm dotdot 248fec65c98SchristosSet two dots (dieresis) over the preceding box. 249fec65c98Schristos.It Cm dyad 250fec65c98SchristosSet a dyad symbol (left-right arrow) over the preceding box. 251fec65c98Schristos.It Cm fat 252fec65c98SchristosA synonym for 253fec65c98Schristos.Cm bold . 254fec65c98Schristos.It Cm font 255fec65c98SchristosSet the second argument using the font specified by the first argument; 256fec65c98Schristoscurrently not recognized by the 257fec65c98Schristos.Xr mandoc 1 258fec65c98Schristos.Nm 259fec65c98Schristosparser. 260fec65c98Schristos.It Cm from 261fec65c98SchristosSet the following box below the preceding box, 262fec65c98Schristosusing a slightly smaller font. 263fec65c98SchristosUsed for sums, integrals, limits, and the like. 264fec65c98Schristos.It Cm hat 265fec65c98SchristosSet a hat (circumflex) over the preceding box. 266fec65c98Schristos.It Cm italic 267fec65c98SchristosSet the following box using italic font. 268fec65c98Schristos.It Cm lcol 269fec65c98SchristosLike 270fec65c98Schristos.Cm lpile , 271fec65c98Schristosbut for use in 272fec65c98Schristos.Cm matrix . 273fec65c98Schristos.It Cm left 274fec65c98SchristosSet the first argument as a big left delimiter before the second argument. 275fec65c98SchristosAs an optional third argument, 276fec65c98Schristos.Cm right 277fec65c98Schristoscan follow. 278fec65c98SchristosIn that case, the fourth argument is set as a big right delimiter after 279fec65c98Schristosthe second argument. 280fec65c98Schristos.It Cm lpile 281fec65c98SchristosLike 282fec65c98Schristos.Cm cpile , 283fec65c98Schristosbut subequations are left-justified. 284fec65c98Schristos.It Cm matrix 285fec65c98SchristosFollowed by a list of columns enclosed in braces. 286fec65c98SchristosAll columns need to have the same number of subequations. 287fec65c98SchristosThe columns are set as a matrix. 288fec65c98SchristosThe difference compared to multiple subsequent 289fec65c98Schristos.Cm pile 290fec65c98Schristosoperators is that in a 291fec65c98Schristos.Cm matrix , 292fec65c98Schristoscorresponding subequations in all columns line up horizontally, 293fec65c98Schristoswhile each 294fec65c98Schristos.Cm pile 295fec65c98Schristosdoes vertical spacing independently. 296fec65c98Schristos.It Cm over 297fec65c98SchristosSet a fraction. 298fec65c98SchristosThe preceding box is the numerator, the following box is the denominator. 299fec65c98Schristos.It Cm pile 300fec65c98SchristosFollowed by a list of subequations enclosed in braces, 301fec65c98Schristosthe subequations being separated by 302fec65c98Schristos.Cm above 303fec65c98Schristoskeywords. 304fec65c98SchristosSets the subequations one above the other, each of them centered. 305fec65c98SchristosTypically used to represent vectors in coordinate representation. 306fec65c98Schristos.It Cm rcol 307fec65c98SchristosLike 308fec65c98Schristos.Cm rpile , 309fec65c98Schristosbut for use in 310fec65c98Schristos.Cm matrix . 311fec65c98Schristos.It Cm right 312fec65c98SchristosSee 313fec65c98Schristos.Cm left ; 314fec65c98Schristos.Cm right 315fec65c98Schristoscannot be used without 316fec65c98Schristos.Cm left . 317fec65c98SchristosTo set a big right delimiter without a big left delimiter, the following 318fec65c98Schristosconstruction can be used: 319fec65c98Schristos.Pp 320fec65c98Schristos.D1 Cm left No \(dq\(dq Ar box Cm right Ar delimiter 321fec65c98Schristos.It Cm roman 322fec65c98SchristosSet the following box using the default font. 323fec65c98Schristos.It Cm rpile 324fec65c98SchristosLike 325fec65c98Schristos.Cm cpile , 326fec65c98Schristosbut subequations are right-justified. 327fec65c98Schristos.It Cm size 328fec65c98SchristosSet the second argument with the font size specified by the first 329fec65c98Schristosargument; currently ignored by 330fec65c98Schristos.Xr mandoc 1 . 331fec65c98SchristosBy prepending a plus or minus sign to the first argument, 332fec65c98Schristosthe font size can be selected relative to the current size. 333fec65c98Schristos.It Cm sqrt 334fec65c98SchristosSet the square root of the following box. 335fec65c98Schristos.It Cm sub 336fec65c98SchristosSet the following box as a subscript to the preceding box. 337fec65c98Schristos.It Cm sup 338fec65c98SchristosSet the following box as a superscript to the preceding box. 339fec65c98SchristosAs a special case, if a 340fec65c98Schristos.Cm sup 341fec65c98Schristosclause immediately follows a 342fec65c98Schristos.Cm sub 343fec65c98Schristosclause as in 344fec65c98Schristos.Pp 345fec65c98Schristos.D1 Ar mainbox Cm sub Ar subbox Cm sup Ar supbox 346fec65c98Schristos.Pp 347fec65c98Schristosboth are set with respect to the same 348fec65c98Schristos.Ar mainbox , 349fec65c98Schristosthat is, 350fec65c98Schristos.Ar supbox 351fec65c98Schristosis set above 352fec65c98Schristos.Ar subbox . 353fec65c98Schristos.It Cm tilde 354fec65c98SchristosSet a tilde over the preceding box. 355fec65c98Schristos.It Cm to 356fec65c98SchristosSet the following box above the preceding box, 357fec65c98Schristosusing a slightly smaller font. 358fec65c98SchristosUsed for sums and integrals and the like. 359fec65c98SchristosAs a special case, if a 360fec65c98Schristos.Cm to 361fec65c98Schristosclause immediately follows a 362fec65c98Schristos.Cm from 363fec65c98Schristosclause as in 364fec65c98Schristos.Pp 365fec65c98Schristos.D1 Ar mainbox Cm from Ar frombox Cm to Ar tobox 366fec65c98Schristos.Pp 367fec65c98Schristosboth are set below and above the same 368fec65c98Schristos.Ar mainbox . 369fec65c98Schristos.It Cm under 370fec65c98SchristosUnderline the preceding box. 371fec65c98Schristos.It Cm vec 372fec65c98SchristosSet a vector symbol (right arrow) over the preceding box. 373fec65c98Schristos.El 374fec65c98Schristos.Pp 375fec65c98SchristosThe binary operations 376fec65c98Schristos.Cm from , 377fec65c98Schristos.Cm to , 378fec65c98Schristos.Cm sub , 379fec65c98Schristosand 380fec65c98Schristos.Cm sup 381fec65c98Schristosgroup to the right, that is, 382fec65c98Schristos.Pp 383fec65c98Schristos.D1 Ar mainbox Cm sup Ar supbox Cm sub Ar subbox 384fec65c98Schristos.Pp 385fec65c98Schristosis the same as 386fec65c98Schristos.Pp 387fec65c98Schristos.D1 Ar mainbox Cm sup Brq Ar supbox Cm sub Ar subbox 388fec65c98Schristos.Pp 389fec65c98Schristosand different from 390fec65c98Schristos.Pp 391fec65c98Schristos.D1 Bro Ar mainbox Cm sup Ar supbox Brc Cm sub Ar subbox . 392fec65c98Schristos.Pp 393fec65c98SchristosBy contrast, 394fec65c98Schristos.Cm over 395fec65c98Schristosgroups to the left. 396fec65c98Schristos.Pp 397fec65c98SchristosIn the following list, earlier operations bind more tightly than 398fec65c98Schristoslater operations: 399fec65c98Schristos.Pp 400fec65c98Schristos.Bl -enum -compact 401fec65c98Schristos.It 402fec65c98Schristos.Cm dyad , 403fec65c98Schristos.Cm vec , 404fec65c98Schristos.Cm under , 405fec65c98Schristos.Cm bar , 406fec65c98Schristos.Cm tilde , 407fec65c98Schristos.Cm hat , 408fec65c98Schristos.Cm dot , 409fec65c98Schristos.Cm dotdot 410fec65c98Schristos.It 411fec65c98Schristos.Cm fat , 412fec65c98Schristos.Cm roman , 413fec65c98Schristos.Cm italic , 414fec65c98Schristos.Cm bold , 415fec65c98Schristos.Cm size 416fec65c98Schristos.It 417fec65c98Schristos.Cm sub , 418fec65c98Schristos.Cm sup 419fec65c98Schristos.It 420fec65c98Schristos.Cm sqrt 421fec65c98Schristos.It 422fec65c98Schristos.Cm over 423fec65c98Schristos.It 424fec65c98Schristos.Cm from , 425fec65c98Schristos.Cm to 426fec65c98Schristos.El 427c5f73b34Sjoerg.Sh COMPATIBILITY 428c5f73b34SjoergThis section documents the compatibility of mandoc 42948741257Sjoerg.Nm 430c5f73b34Sjoergand the troff 431c5f73b34Sjoerg.Nm 432c5f73b34Sjoergimplementation (including GNU troff). 433c5f73b34Sjoerg.Pp 434c5f73b34Sjoerg.Bl -dash -compact 435c5f73b34Sjoerg.It 436c5f73b34SjoergThe text string 437fec65c98Schristos.Sq \e\(dq 438c5f73b34Sjoergis interpreted as a literal quote in troff. 439c5f73b34SjoergIn mandoc, this is interpreted as a comment. 440c5f73b34Sjoerg.It 441c5f73b34SjoergIn troff, The circumflex and tilde white-space symbols map to 442c5f73b34Sjoergfixed-width spaces. 443c5f73b34SjoergIn mandoc, these characters are synonyms for the space character. 444c5f73b34Sjoerg.It 445c5f73b34SjoergThe troff implementation of 446c5f73b34Sjoerg.Nm 447c5f73b34Sjoergallows for equation alignment with the 448c5f73b34Sjoerg.Cm mark 449c5f73b34Sjoergand 450c5f73b34Sjoerg.Cm lineup 451c5f73b34Sjoergtokens. 452c5f73b34Sjoergmandoc discards these tokens. 453c5f73b34SjoergThe 454c5f73b34Sjoerg.Cm back Ar n , 455c5f73b34Sjoerg.Cm fwd Ar n , 456c5f73b34Sjoerg.Cm up Ar n , 457c5f73b34Sjoergand 458c5f73b34Sjoerg.Cm down Ar n 459c5f73b34Sjoergcommands are also ignored. 460c5f73b34Sjoerg.El 46148741257Sjoerg.Sh SEE ALSO 46248741257Sjoerg.Xr mandoc 1 , 46348741257Sjoerg.Xr man 7 , 46448741257Sjoerg.Xr mandoc_char 7 , 46548741257Sjoerg.Xr mdoc 7 , 46648741257Sjoerg.Xr roff 7 46748741257Sjoerg.Rs 46848741257Sjoerg.%A Brian W. Kernighan 46948741257Sjoerg.%A Lorinda L. Cherry 47048741257Sjoerg.%T System for Typesetting Mathematics 47148741257Sjoerg.%J Communications of the ACM 47248741257Sjoerg.%V 18 47348741257Sjoerg.%P 151\(en157 47448741257Sjoerg.%D March, 1975 47548741257Sjoerg.Re 476c5f73b34Sjoerg.Rs 477c5f73b34Sjoerg.%A Brian W. Kernighan 478c5f73b34Sjoerg.%A Lorinda L. Cherry 479c5f73b34Sjoerg.%T Typesetting Mathematics, User's Guide 480c5f73b34Sjoerg.%D 1976 481c5f73b34Sjoerg.Re 482c5f73b34Sjoerg.Rs 483c5f73b34Sjoerg.%A Brian W. Kernighan 484c5f73b34Sjoerg.%A Lorinda L. Cherry 485c5f73b34Sjoerg.%T Typesetting Mathematics, User's Guide (Second Edition) 486c5f73b34Sjoerg.%D 1978 487c5f73b34Sjoerg.Re 488c5f73b34Sjoerg.Sh HISTORY 489c5f73b34SjoergThe eqn utility, a preprocessor for troff, was originally written by 490c5f73b34SjoergBrian W. Kernighan and Lorinda L. Cherry in 1975. 491c5f73b34SjoergThe GNU reimplementation of eqn, part of the GNU troff package, was 492c5f73b34Sjoergreleased in 1989 by James Clark. 493c5f73b34SjoergThe eqn component of 494c5f73b34Sjoerg.Xr mandoc 1 495c5f73b34Sjoergwas added in 2011. 49648741257Sjoerg.Sh AUTHORS 497c5f73b34SjoergThis 49848741257Sjoerg.Nm 49948741257Sjoergreference was written by 50070f041f9Sjoerg.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv . 501