Adapt src/pre-eqn (src/preproc/eqn)
[s-roff.git] / man / pre-eqn.1.in
blobe49ee08e05d6e61776c68f4e9e99a43145a201d6
1 .ig
2 @ @L_P_EQN@.1
4 Copyright (c) 2014 Steffen (Daode) Nurpmeso <sdaoden@users.sf.net>.
6 Copyright (C) 1989 - 2001, 2004, 2005, 2007
7   Free Software Foundation, Inc.
9 Permission is granted to make and distribute verbatim copies of
10 this manual provided the copyright notice and this permission notice
11 are preserved on all copies.
13 Permission is granted to copy and distribute modified versions of this
14 manual under the conditions for verbatim copying, provided that the
15 entire resulting derived work is distributed under the terms of a
16 permission notice identical to this one.
18 Permission is granted to copy and distribute translations of this
19 manual into another language, under the above conditions for modified
20 versions, except that this permission notice may be included in
21 translations approved by the Free Software Foundation instead of in
22 the original English.
26 .ie \n(.V<\n(.v \
27 .  ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
28 .el \
29 .  ds tx TeX
32 .\" Like TP, but if specified indent is more than half
33 .\" the current line-length - indent, use the default indent.
34 .de Tp
35 .  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
36 .  el .TP "\\$1"
40 .\" The BSD man macros can't handle " in arguments to font change macros,
41 .\" so use \(ts instead of ".
42 .tr \(ts"
45 .TH @U_P_EQN@ @MAN1EXT@ "@MDATE@" "@T_ROFF@ v@VERSION@"
48 .SH NAME
49 @L_P_EQN@ \- format equations for @T_ROFF@ or MathML
52 .SH SYNOPSIS
53 .SY @L_P_EQN
54 .OP \-rvCNR
55 .OP \-d xy
56 .OP \-T name
57 .OP \-M dir
58 .OP \-f F
59 .OP \-s n
60 .OP \-p n
61 .OP \-m n
62 .RI [ files\|.\|.\|. ]
63 .YS
65 .LP
66 It is possible to have whitespace between a command line option and its
67 parameter.
70 .SH DESCRIPTION
71 This manual page describes
72 .BR @L_P_EQN@ ,
73 which is part of the @T_ROFF@ document formatting system.
74 .B eqn
75 compiles descriptions of equations embedded within
76 .B troff
77 input files into commands that are understood by
78 .BR troff .
79 Normally, it should be invoked using the
80 .B \-e
81 option of
82 .BR @L_ROFF@ .
83 The syntax is quite compatible with Unix eqn;
84 its output cannot be processed with Unix troff, however,
85 it must be processed with @L_TROFF@.
86 If no files are given on the command line, the standard input is read.
87 A filename of
88 .B \-
89 causes the standard input to be read.
91 .LP
92 .B eqn
93 searches for the file
94 .B eqnrc
95 in the directories given with the
96 .B \-M
97 option first, then in
98 .BR @SYSTEMMACRODIR@ ,
99 .BR @LOCALMACRODIR@ ,
100 and finally in the standard macro directory
101 .BR @MACRODIR@ .
102 If it exists,
103 .B eqn
104 processes it before the other input files.
106 .B \-R
107 option prevents this.
110 .B @L_P_EQN@
111 does not provide the functionality of neqn:
112 it does not support low-resolution, typewriter-like devices
113 (although it may work adequately for very simple input).
116 .SH OPTIONS
119 .BI \-d xy
120 Specify delimiters
121 .I x
122 and\~\c
123 .I y
124 for the left and right end, respectively, of in-line equations.
126 .B delim
127 statements in the source file overrides this.
130 .B \-C
131 Recognize
132 .B .EQ
134 .B .EN
135 even when followed by a character other than space or newline.
137 .B \-N
138 Don't allow newlines within delimiters.
139 This option allows
140 .B eqn
141 to recover better from missing closing delimiters.
144 .B \-v
145 Print the version number.
148 .B \-r
149 Only one size reduction.
152 .BI \-m n
153 The minimum point-size is\~\c
154 .IR n .
155 .B eqn
156 does not reduce the size of subscripts or superscripts to
157 a smaller size than\~\c
158 .IR n .
161 .BI \-T name
162 The output is for device
163 .IR name .
164 Normally, the only effect of this is to define a macro
165 .I name
166 with a value of\~\c
167 .BR 1 ;
168 .B eqnrc
169 uses this to provide definitions appropriate for the output device.
170 However, if the specified device is \[lq]MathML\[rq], the output is
171 MathML markup rather than troff commands, and
172 .B eqnrc
173 is not loaded at all.
174 The default output device is
175 .BR @DEVICE@ .
178 .BI \-M dir
179 Search
180 .I dir
182 .B eqnrc
183 before the default directories.
186 .B \-R
187 Don't load
188 .BR eqnrc .
191 .BI \-f F
192 This is equivalent to a
193 .BI gfont\  F
194 command.
197 .BI \-s n
198 This is equivalent to a
199 .BI gsize\  n
200 command.
201 This option is deprecated.
202 .B eqn
203 normally sets equations at whatever the current point size
204 is when the equation is encountered.
207 .BI \-p n
208 This says that subscripts and superscripts should be
209 .I n\~\c
210 points smaller than the surrounding text.
211 This option is deprecated.
212 Normally
213 .B eqn
214 sets subscripts and superscripts at 70% of the size of the
215 surrounding text.
218 .SH USAGE
219 Only the differences between
220 .B @L_P_EQN@
221 and Unix eqn are described here.
224 .B @L_P_EQN@
225 emits Presentation MathML output when invoked with the
226 .B "-T\~MathML"
227 option.
230 @L_P_EQN@ sets the input token
231 .B \&"..."
232 as three periods or low dots, rather than the three centered dots of
233 classic eqn.  To get three centered dots, write
234 .B "cdots"
236 .BR "cdot cdot cdot".
239 Most of the new features of the
240 .B @L_P_EQN@
241 input language are based on \*(tx.
242 There are some references to the differences between \*(tx and
243 .B @L_P_EQN@
244 below;
245 these may safely be ignored if you do not know \*(tx.
247 .SS Automatic spacing
248 .B eqn
249 gives each component of an equation a type, and adjusts the spacing
250 between components using that type.
251 Possible types are:
254 .TP \w'punctuation'u+2n
255 ordinary
256 an ordinary character such as `1' or `\c
257 .IR x ';
260 operator
261 a large operator such as
262 .ds Su `\s+5\(*S\s0'
263 .if \n(.g .if !c\(*S .ds Su the summation operator
264 \*(Su;
267 binary
268 a binary operator such as `\(pl';
271 relation
272 a relation such as `=';
275 opening
276 a opening bracket such as `(';
279 closing
280 a closing bracket such as `)';
283 punctuation
284 a punctuation character such as `,';
287 inner
288 a subformula contained within brackets;
290 suppress
291 spacing that suppresses automatic spacing adjustment.
295 Components of an equation get a type in one of two ways.
298 .BI type\  t\ e
299 This yields an equation component that contains\~\c
300 .I e
301 but that has type\~\c
302 .IR t ,
303 where
304 .I t
305 is one of the types mentioned above.
306 For example,
307 .B times
308 is defined as
313 type "binary" \e(mu
317 The name of the type doesn't have to be quoted, but quoting protects
318 from macro expansion.
321 .BI chartype\  t\ text
322 Unquoted groups of characters are split up into individual characters,
323 and the type of each character is looked up;
324 this changes the type that is stored for each character;
325 it says that the characters in
326 .I text
327 from now on have type\~\c
328 .IR t .
329 For example,
334 chartype "punctuation" .,;:
338 would make the characters `.,;:' have type punctuation
339 whenever they subsequently appeared in an equation.
340 The type\~\c
341 .I t
342 can also be
343 .B letter
345 .BR digit ;
346 in these cases
347 .B chartype
348 changes the font type of the characters.
349 See the
350 .B Fonts
351 subsection.
353 .SS New primitives
355 .BI big\  e
356 Enlarges the expression it modifies; intended to have semantics like
357 CSS `large'.
358 In troff output, the point size is increased by\~5;
359 in MathML output, the expression uses
364 <mstyle \%mathsize='big'>
369 .IB e1\  smallover\  e2
370 This is similar to
371 .BR over ;
372 .B smallover
373 reduces the size of
374 .I e1
376 .IR e2 ;
377 it also puts less vertical space between
378 .I e1
380 .I e2
381 and the fraction bar.
383 .B over
384 primitive corresponds to the \*(tx
385 .B \eover
386 primitive in display styles;
387 .B smallover
388 corresponds to
389 .B \eover
390 in non-display styles.
393 .BI vcenter\  e
394 This vertically centers
395 .I e
396 about the math axis.
397 The math axis is the vertical position about which characters
398 such as `\(pl' and `\(mi' are centered; also it is the vertical position
399 used for the bar of fractions.
400 For example,
401 .B sum
402 is defined as
407 { type "operator" vcenter size +5 \e(*S }
411 (Note that vcenter is silently ignored when generating MathML.)
414 .IB e1\  accent\  e2
415 This sets
416 .I e2
417 as an accent over
418 .IR e1 .
419 .I e2
420 is assumed to be at the correct height for a lowercase letter;
421 .I e2
422 is moved down according to whether
423 .I e1
424 is taller or shorter than a lowercase letter.
425 For example,
426 .B hat
427 is defined as
432 accent { "^" }
436 .BR dotdot ,
437 .BR dot ,
438 .BR tilde ,
439 .BR vec ,
441 .B dyad
442 are also defined using the
443 .B accent
444 primitive.
447 .IB e1\  uaccent\  e2
448 This sets
449 .I e2
450 as an accent under
451 .IR e1 .
452 .I e2
453 is assumed to be at the correct height for a character without a descender;
454 .I e2
455 is moved down if
456 .I e1
457 has a descender.
458 .B utilde
459 is pre-defined using
460 .B uaccent
461 as a tilde accent below the baseline.
464 .BI split\ \(ts text \(ts
465 This has the same effect as simply
469 .I text
474 .I text
475 is not subject to macro expansion because it is quoted;
476 .I text
477 is split up and the spacing between individual characters is adjusted.
480 .BI nosplit\  text
481 This has the same effect as
485 .BI \(ts text \(ts
489 but because
490 .I text
491 is not quoted it is subject to macro expansion;
492 .I text
493 is not split up
494 and the spacing between individual characters is not adjusted.
497 .IB e\  opprime
498 This is a variant of
499 .B prime
500 that acts as an operator on\~\c
501 .IR e .
502 It produces a different result from
503 .B prime
504 in a case such as
505 .BR A\ opprime\ sub\ 1 :
506 with
507 .B opprime
508 the\~\c
509 .B 1
510 is tucked under the prime as a subscript to the\~\c
511 .B A
512 (as is conventional in mathematical typesetting),
513 whereas with
514 .B prime
515 the\~\c
516 .B 1
517 is a subscript to the prime character.
518 The precedence of
519 .B opprime
520 is the same as that of
521 .B bar
523 .BR under ,
524 which is higher than that of everything except
525 .B accent
527 .BR uaccent .
528 In unquoted text a\~\c
529 .B '
530 that is not the first character is treated like
531 .BR opprime .
534 .BI special\  text\ e
535 This constructs a new object from\~\c
536 .I e
537 using a
538 .BR @L_TROFF@ (@MAN1EXT@)
539 macro named
540 .IR text .
541 When the macro is called,
542 the string
543 .B 0s
544 contains the output for\~\c
545 .IR e ,
546 and the number registers
547 .BR 0w ,
548 .BR 0h ,
549 .BR 0d ,
550 .BR 0skern ,
552 .BR 0skew
553 contain the width, height, depth, subscript kern, and skew of\~\c
554 .IR e .
555 (The
556 .I "subscript kern"
557 of an object says how much a subscript on that object should be tucked in;
559 .I skew
560 of an object says how far to the right of the center of the object an
561 accent over the object should be placed.)
562 The macro must modify
563 .B 0s
564 so that it outputs the desired result with its origin at the current
565 point, and increase the current horizontal position by the width
566 of the object.
567 The number registers must also be modified so that they correspond to the
568 result.
571 For example, suppose you wanted a construct that `cancels' an expression
572 by drawing a diagonal line through it.
576 .ft B
577 .if t .ne 6+\n(.Vu
579 \&.EQ
581 define cancel 'special Ca'
583 \&.EN
585 \&.de Ca
587 \&.\ \ ds 0s \e
589 \eZ'\e\e*(0s'\e
591 \ev'\e\en(0du'\e
593 \eD'l \e\en(0wu -\e\en(0hu-\e\en(0du'\e
595 \ev'\e\en(0hu'
597 \&..
602 Then you could cancel an expression\~\c
603 .I e
604 with
605 .BI \%cancel\ {\  e\  }
608 Here's a more complicated construct that draws a box round an expression:
612 .ft B
613 .if t .ne 11+\n(.Vu
614 \&.EQ
616 define box 'special Bx'
618 \&.EN
620 \&.de Bx
622 \&.\ \ ds 0s \e
624 \eZ'\eh'1n'\e\e*(0s'\e
626 \eZ'\e
628 \ev'\e\en(0du+1n'\e
630 \eD'l \e\en(0wu+2n 0'\e
632 \eD'l 0 -\e\en(0hu-\e\en(0du-2n'\e
634 \eD'l -\e\en(0wu-2n 0'\e
636 \eD'l 0 \e\en(0hu+\e\en(0du+2n'\e
638 \&'\e
640 \eh'\e\en(0wu+2n'
642 \&.\ \ nr 0w +2n
644 \&.\ \ nr 0d +1n
646 \&.\ \ nr 0h +1n
648 \&..
653 .BI space\  n
654 A positive value of the integer\~\c
655 .I n
656 (in hundredths of an em) sets the vertical spacing before the equation,
657 a negative value sets the spacing after the equation, replacing the
658 default values.
659 This primitive provides an interface to
660 .BR @L_ROFF@ 's
661 .B \ex
662 escape (but with opposite sign).
665 This keyword has no effect if the equation is part of a
666 .B @L_P_PIC@
667 picture.
669 .SS Extended primitives
671 .BI col\  n\  {\  .\|.\|.\  }
673 .BI ccol\  n\  {\  .\|.\|.\  }
675 .BI lcol\  n\  {\  .\|.\|.\  }
677 .BI rcol\  n\  {\  .\|.\|.\  }
679 .BI pile\  n\  {\  .\|.\|.\  }
681 .BI cpile\  n\  {\  .\|.\|.\  }
683 .BI lpile\  n\  {\  .\|.\|.\  }
685 .BI rpile\  n\  {\  .\|.\|.\  }
686 The integer value\~\c
687 .I n
688 (in hundredths of an em) increases the vertical spacing between rows,
689 using
690 .BR @L_ROFF@ 's
691 .B \ex
692 escape (the value has no effect in MathML mode).
693 Negative values are possible but have no effect.
694 If there is more than a single value given in a matrix, the biggest one
695 is used.
697 .SS Customization
698 When
699 .B eqn
700 is generating troff markup, the appearance of equations is controlled
701 by a large number of parameters.  They have no effect when generating
702 MathML mode, which pushes typesetting and fine motions downstream to
703 a MathML rendering engine.
704 These parameters can be set using the
705 .B set
706 command.
709 .BI set\  p\ n
710 This sets parameter\~\c
711 .I p
712 to value\~\c
713 .IR n ;
714 .I n\~\c
715 is an integer.
716 For example,
721 set x_height 45
725 says that
726 .B eqn
727 should assume an x\~height of 0.45\~ems.
731 Possible parameters are as follows.
732 Values are in units of hundredths of an em unless otherwise stated.
733 These descriptions are intended to be expository rather than
734 definitive.
736 .ie t \
737 .  TP \w'\fBdefault_rule_thickness'u+2n
738 .el \
739 .  TP
740 .B minimum_size
741 .B eqn
742 doesn't set anything at a smaller point-size than this.
743 The value is in points.
746 .B fat_offset
748 .B fat
749 primitive emboldens an equation
750 by overprinting two copies of the equation
751 horizontally offset by this amount.
752 This parameter is not used in MathML mode; instead, fat text uses
757 <mstyle mathvariant='double-struck'>
762 .B over_hang
763 A fraction bar is longer by twice this amount than
764 the maximum of the widths of the numerator and denominator;
765 in other words, it overhangs the numerator and
766 denominator by at least this amount.
769 .B accent_width
770 When
771 .B bar
773 .B under
774 is applied to a single character,
775 the line is this long.
776 Normally,
777 .B bar
779 .B under
780 produces a line whose length is the width of the object to which it applies;
781 in the case of a single character,
782 this tends to produce a line that looks too long.
785 .B delimiter_factor
786 Extensible delimiters produced with the
787 .B left
789 .B right
790 primitives have a combined height and depth of at least this many
791 thousandths of twice the maximum amount by which the sub-equation that
792 the delimiters enclose extends away from the axis.
795 .B delimiter_shortfall
796 Extensible delimiters produced with the
797 .B left
799 .B right
800 primitives have a combined height and depth
801 not less than the difference of
802 twice the maximum amount by which the sub-equation that
803 the delimiters enclose extends away from the axis
804 and this amount.
807 .B null_delimiter_space
808 This much horizontal space is inserted
809 on each side of a fraction.
812 .B script_space
813 The width of subscripts and superscripts is increased by this amount.
816 .B thin_space
817 This amount of space is automatically inserted after punctuation
818 characters.
821 .B medium_space
822 This amount of space is automatically inserted on either side
823 of binary operators.
826 .B thick_space
827 This amount of space is automatically inserted on either side of
828 relations.
831 .B x_height
832 The height of lowercase letters without ascenders such as `x'.
835 .B axis_height
836 The height above the baseline of the center of characters
837 such as `\(pl' and `\(mi'.
838 It is important that this value is correct for the font
839 you are using.
842 .B default_rule_thickness
843 This should set to the thickness of the
844 .B \e(ru
845 character, or the thickness of horizontal lines produced with the
846 .B \eD
847 escape sequence.
850 .B num1
852 .B over
853 command shifts up the numerator by at least this amount.
856 .B num2
858 .B smallover
859 command shifts up the numerator by at least this amount.
862 .B denom1
864 .B over
865 command shifts down the denominator by at least this amount.
868 .B denom2
870 .B smallover
871 command shifts down the denominator by at least this amount.
874 .B sup1
875 Normally superscripts are shifted up by at least this amount.
878 .B sup2
879 Superscripts within superscripts or upper limits
880 or numerators of
881 .B smallover
882 fractions
883 are shifted up by at least this amount.
884 This is usually less than sup1.
887 .B sup3
888 Superscripts within denominators or square roots
889 or subscripts or lower limits are shifted up by at least
890 this amount.
891 This is usually less than sup2.
894 .B sub1
895 Subscripts are normally shifted down by at least this amount.
898 .B sub2
899 When there is both a subscript and a superscript, the subscript
900 is shifted down by at least this amount.
903 .B sup_drop
904 The baseline of a superscript is no more
905 than this much amount below the top of the object on
906 which the superscript is set.
909 .B sub_drop
910 The baseline of a subscript is at least this much below
911 the bottom of the object on which the subscript is set.
914 .B big_op_spacing1
915 The baseline of an upper limit is at least this
916 much above the top of the object on which the limit is set.
919 .B big_op_spacing2
920 The baseline of a lower limit is at least this
921 much below the bottom of the object on which the limit is set.
924 .B big_op_spacing3
925 The bottom of an upper limit is at least this much above the
926 top of the object on which the limit is set.
929 .B big_op_spacing4
930 The top of a lower limit is at least this much below
931 the bottom of the object on which the limit is set.
934 .B big_op_spacing5
935 This much vertical space is added above and below limits.
938 .B baseline_sep
939 The baselines of the rows in a pile or matrix are normally
940 this far apart.
941 In most cases this should be equal to the sum of
942 .B num1
944 .BR denom1 .
947 .B shift_down
948 The midpoint between the top baseline and the bottom baseline
949 in a matrix or pile is shifted down by this much from the axis.
950 In most cases this should be equal to
951 .BR axis_height .
954 .B column_sep
955 This much space is added between columns in a matrix.
958 .B matrix_side_sep
959 This much space is added at each side of a matrix.
962 .B draw_lines
963 If this is non-zero, lines are drawn using the
964 .B \eD
965 escape sequence, rather than with the
966 .B \el
967 escape sequence and the
968 .B \e(ru
969 character.
972 .B body_height
973 The amount by which the height of the equation exceeds this
974 is added as extra space before the line containing the equation
975 (using
976 .BR \ex ).
977 The default value is 85.
980 .B body_depth
981 The amount by which the depth of the equation exceeds this
982 is added as extra space after the line containing the equation
983 (using
984 .BR \ex ).
985 The default value is 35.
988 .B nroff
989 If this is non-zero,
990 then
991 .B ndefine
992 behaves like
993 .B define
995 .B tdefine
996 is ignored,
997 otherwise
998 .B tdefine
999 behaves like
1000 .B define
1002 .B ndefine
1003 is ignored.
1004 The default value is\~0
1005 (This is typically changed to\~1 by the
1006 .B eqnrc
1007 file for the
1008 .BR ascii ,
1009 .BR latin1 ,
1010 .BR utf8 ,
1012 .B cp1047
1013 devices.)
1016 A more precise description of the role of many of these
1017 parameters can be found in Appendix\~H of
1018 .IR "The \*(txbook" .
1021 .SS Macros
1022 Macros can take arguments.
1023 In a macro body,
1024 .BI $ n
1025 where
1026 .I n
1027 is between 1 and\~9,
1028 is replaced by the
1029 .IR n-th
1030 argument if the macro is called with arguments;
1031 if there are fewer than
1032 .I n\~\c
1033 arguments, it is replaced by nothing.
1034 A word containing a left parenthesis where the part of the word
1035 before the left parenthesis has been defined using the
1036 .B define
1037 command
1038 is recognized as a macro call with arguments;
1039 characters following the left parenthesis
1040 up to a matching right parenthesis are treated as comma-separated
1041 arguments;
1042 commas inside nested parentheses do not terminate an argument.
1045 .BI sdefine\  name\ X\ anything\ X
1046 This is like the
1047 .B define
1048 command, but
1049 .I name
1050 is not recognized if called with arguments.
1053 .BI include\ \(ts file \(ts
1055 .BI copy\ \(ts file \(ts
1056 Include the contents of
1057 .I file
1058 .RB ( include
1060 .B copy
1061 are synonyms).
1062 Lines of
1063 .I file
1064 beginning with
1065 .B .EQ
1067 .B .EN
1068 are ignored.
1071 .BI ifdef\  name\ X\ anything\ X
1073 .I name
1074 has been defined by
1075 .B define
1076 (or has been automatically defined because
1077 .I name
1078 is the output device)
1079 process
1080 .IR anything ;
1081 otherwise ignore
1082 .IR anything .
1083 .I X
1084 can be any character not appearing in
1085 .IR anything .
1088 .BI undef\  name
1089 Remove definition of
1090 .IR name ,
1091 making it undefined.
1094 Besides the macros mentioned above, the following definitions are available:
1095 .BR Alpha ,
1096 .BR Beta ,
1097 \&.\|.\|.,
1098 .B Omega
1099 (this is the same as
1100 .BR ALPHA ,
1101 .BR BETA ,
1102 \&.\|.\|.,
1103 .BR OMEGA ),
1104 .B ldots
1105 (three dots on the base line),
1107 .BR dollar .
1109 .SS Fonts
1110 .B eqn
1111 normally uses at least two fonts to set an equation:
1112 an italic font for letters,
1113 and a roman font for everything else.
1114 The existing
1115 .B gfont
1116 command
1117 changes the font that is used as the italic font.
1118 By default this is\~\c
1119 .BR I .
1120 The font that is used as the roman font can be changed
1121 using the new
1122 .B grfont
1123 command.
1126 .BI grfont\  f
1127 Set the roman font to\~\c
1128 .IR f .
1132 .B italic
1133 primitive uses the current italic font set by
1134 .BR gfont ;
1136 .B roman
1137 primitive uses the current roman font set by
1138 .BR grfont .
1139 There is also a new
1140 .B gbfont
1141 command, which changes the font used by the
1142 .B bold
1143 primitive.
1144 If you only use the
1145 .BR roman ,
1146 .B italic
1148 .B bold
1149 primitives to changes fonts within an equation,
1150 you can change all the fonts used by your equations
1151 just by using
1152 .BR gfont ,
1153 .B grfont
1155 .B gbfont
1156 commands.
1159 You can control which characters are treated as letters
1160 (and therefore set in italics) by using the
1161 .B chartype
1162 command described above.
1163 A type of
1164 .B letter
1165 causes a character to be set in italic type.
1166 A type of
1167 .B digit
1168 causes a character to be set in roman type.
1171 .SH FILES
1172 .Tp \w'\fB@MACRODIR@/eqnrc'u+2n
1173 .B @MACRODIR@/eqnrc
1174 Initialization file.
1176 .SH MATHML MODE LIMITATIONS
1177 MathML is designed on the assumption that it cannot know the exact
1178 physical characteristics of the media and devices on which it will
1179 be rendered.
1180 It does not support fine control of motions and sizes to the same
1181 degree troff does.
1182 Thus:
1184 .IP *
1185 .B eqn
1186 parameters have no effect on the generated MathML.
1188 .IP *
1190 .BR special,
1191 .BR up ,
1192 .BR down ,
1193 .BR fwd ,
1195 .B back
1196 operations cannot be implemented, and yield a
1197 MathML `<merror>' message instead.
1199 .IP *
1201 .B vcenter
1202 keyword is silently ignored, as centering on the math axis is the
1203 MathML default.
1205 .IP *
1206 Characters that
1207 .B eqn
1208 over troff sets extra large \(en notably the integral sign \(en
1209 may appear too small and need to have their `<mstyle>' wrappers
1210 adjusted by hand.
1213 As in its troff mode,
1214 .B eqn
1215 in MathML mode leaves the
1216 .B .EQ
1218 .B .EN
1219 delimiters in place for displayed equations, but emits no explicit
1220 delimiters around inline equations.
1221 They can, however, be recognized as strings that begin with `<math>'
1222 and end with `</math>' and do not cross line boundaries.
1225 See the
1226 .B BUGS
1227 section for translation limits specific to
1228 .BR eqn .
1231 .SH BUGS
1232 Inline equations are set at the point size that is current at the
1233 beginning of the input line.
1235 In MathML mode, the
1236 .B mark
1238 .B lineup
1239 features don't work.
1240 These could, in theory, be implemented with `<maligngroup>' elements.
1242 In MathML mode, each digit of a numeric literal gets a separate
1243 `<mn>\:</mn>' pair, and decimal points are tagged with `<mo>\:</mo>'.
1244 This is allowed by the specification, but inefficient.
1247 .SH "SEE ALSO"
1248 .BR @L_ROFF@ (@MAN1EXT@),
1249 .BR @L_TROFF@ (@MAN1EXT@),
1250 .BR @L_P_PIC@ (@MAN1EXT@),
1251 .BR @L_ROFF@_font (@MAN5EXT@),
1252 .I The\ \*(txbook
1254 .\" s-ts-mode