Merge branch 'topic/sync-to-go-2'
[s-roff.git] / man / pre-eqn.1.in
blob218a0cbb85e6ee0670de7a1839d2988f52f21579
1 .ig
2 @ @L_P_EQN@.1
4 Copyright (c) 2014 - 2017 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
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.
25 .do nr __compat \n[.C]
26 .cp 0
28 .ie \n(.V<\n(.v \
29 .  ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
30 .el \
31 .  ds tx TeX
33 .\" Like TP, but if specified indent is more than half
34 .\" the current line-length - indent, use the default indent.
35 .de Tp
36 .  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
37 .  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
66 .SH DESCRIPTION
67 This manual page describes
68 .BR @L_P_EQN@ ,
69 which is part of the @T_ROFF@ document formatting system.
70 .B eqn
71 compiles descriptions of equations embedded within
72 .B troff
73 input files into commands that are understood by
74 .BR troff .
75 Normally, it should be invoked using the
76 .B \-e
77 option of
78 .BR @L_ROFF@ .
79 The syntax is quite compatible with Unix eqn;
80 its output cannot be processed with Unix troff, however,
81 it must be processed with @L_TROFF@.
82 If no files are given on the command line, the standard input is read.
83 A filename of
84 .B \-
85 causes the standard input to be read.
87 .LP
88 .B eqn
89 searches for the file
90 .B eqnrc
91 in the directories given with the
92 .B \-M
93 option first, then in
94 .BR @SYSTEMMACRODIR@ ,
95 .BR @LOCALMACRODIR@ ,
96 and finally in the standard macro directory
97 .BR @MACRODIR@ .
98 If it exists,
99 .B eqn
100 processes it before the other input files.
102 .B \-R
103 option prevents this.
106 .B @L_P_EQN@
107 does not provide the functionality of neqn:
108 it does not support low-resolution, typewriter-like devices
109 (although it may work adequately for very simple input).
112 .SH OPTIONS
115 .BI \-d xy
116 Specify delimiters
117 .I x
118 and\~\c
119 .I y
120 for the left and right end, respectively, of in-line equations.
122 .B delim
123 statements in the source file overrides this.
126 .B \-C
127 Recognize
128 .B .EQ
130 .B .EN
131 even when followed by a character other than space or newline.
133 .B \-N
134 Don't allow newlines within delimiters.
135 This option allows
136 .B eqn
137 to recover better from missing closing delimiters.
140 .B \-v
141 Print the version number.
144 .B \-r
145 Only one size reduction.
148 .BI \-m n
149 The minimum point-size is\~\c
150 .IR n .
151 .B eqn
152 does not reduce the size of subscripts or superscripts to
153 a smaller size than\~\c
154 .IR n .
157 .BI \-T name
158 The output is for device
159 .IR name .
160 Normally, the only effect of this is to define a macro
161 .I name
162 with a value of\~\c
163 .BR 1 ;
164 .B eqnrc
165 uses this to provide definitions appropriate for the output device.
166 However, if the specified device is \[lq]MathML\[rq], the output is
167 MathML markup rather than troff commands, and
168 .B eqnrc
169 is not loaded at all.
170 The default output device is
171 .BR @DEVICE@ .
174 .BI \-M dir
175 Search
176 .I dir
178 .B eqnrc
179 before the default directories.
182 .B \-R
183 Don't load
184 .BR eqnrc .
187 .BI \-f F
188 This is equivalent to a
189 .BI gfont\  F
190 command.
193 .BI \-s n
194 This is equivalent to a
195 .BI gsize\  n
196 command.
197 This option is deprecated.
198 .B eqn
199 normally sets equations at whatever the current point size
200 is when the equation is encountered.
203 .BI \-p n
204 This says that subscripts and superscripts should be
205 .I n\~\c
206 points smaller than the surrounding text.
207 This option is deprecated.
208 Normally
209 .B eqn
210 sets subscripts and superscripts at 70% of the size of the
211 surrounding text.
214 .SH USAGE
215 Only the differences between
216 .B @L_P_EQN@
217 and Unix eqn are described here.
220 .B @L_P_EQN@
221 emits Presentation MathML output when invoked with the
222 .B "-T\~MathML"
223 option.
226 @L_P_EQN@ sets the input token
227 .B \&"..."
228 as three periods or low dots, rather than the three centered dots of
229 classic eqn.  To get three centered dots, write
230 .B "cdots"
232 .BR "cdot cdot cdot".
235 Most of the new features of the
236 .B @L_P_EQN@
237 input language are based on \*(tx.
238 There are some references to the differences between \*(tx and
239 .B @L_P_EQN@
240 below;
241 these may safely be ignored if you do not know \*(tx.
244 .SS Automatic spacing
245 .B eqn
246 gives each component of an equation a type, and adjusts the spacing
247 between components using that type.
248 Possible types are:
251 .TP \w'punctuation'u+2n
252 ordinary
253 an ordinary character such as `1' or `\c
254 .IR x ';
257 operator
258 a large operator such as
259 .ds Su `\s+5\(*S\s0'
260 .if \n(.g .if !c\(*S .ds Su the summation operator
261 \*(Su;
264 binary
265 a binary operator such as `\(pl';
268 relation
269 a relation such as `=';
272 opening
273 a opening bracket such as `(';
276 closing
277 a closing bracket such as `)';
280 punctuation
281 a punctuation character such as `,';
284 inner
285 a subformula contained within brackets;
287 suppress
288 spacing that suppresses automatic spacing adjustment.
292 Components of an equation get a type in one of two ways.
295 .BI type\  t\ e
296 This yields an equation component that contains\~\c
297 .I e
298 but that has type\~\c
299 .IR t ,
300 where
301 .I t
302 is one of the types mentioned above.
303 For example,
304 .B times
305 is defined as
310 type "binary" \e(mu
314 The name of the type doesn't have to be quoted, but quoting protects
315 from macro expansion.
318 .BI chartype\  t\ text
319 Unquoted groups of characters are split up into individual characters,
320 and the type of each character is looked up;
321 this changes the type that is stored for each character;
322 it says that the characters in
323 .I text
324 from now on have type\~\c
325 .IR t .
326 For example,
331 chartype "punctuation" .,;:
335 would make the characters `.,;:' have type punctuation
336 whenever they subsequently appeared in an equation.
337 The type\~\c
338 .I t
339 can also be
340 .B letter
342 .BR digit ;
343 in these cases
344 .B chartype
345 changes the font type of the characters.
346 See the
347 .B Fonts
348 subsection.
350 .SS New primitives
352 .BI big\  e
353 Enlarges the expression it modifies; intended to have semantics like
354 CSS `large'.
355 In troff output, the point size is increased by\~5;
356 in MathML output, the expression uses
361 <mstyle \%mathsize='big'>
366 .IB e1\  smallover\  e2
367 This is similar to
368 .BR over ;
369 .B smallover
370 reduces the size of
371 .I e1
373 .IR e2 ;
374 it also puts less vertical space between
375 .I e1
377 .I e2
378 and the fraction bar.
380 .B over
381 primitive corresponds to the \*(tx
382 .B \eover
383 primitive in display styles;
384 .B smallover
385 corresponds to
386 .B \eover
387 in non-display styles.
390 .BI vcenter\  e
391 This vertically centers
392 .I e
393 about the math axis.
394 The math axis is the vertical position about which characters
395 such as `\(pl' and `\(mi' are centered; also it is the vertical position
396 used for the bar of fractions.
397 For example,
398 .B sum
399 is defined as
404 { type "operator" vcenter size +5 \e(*S }
408 (Note that vcenter is silently ignored when generating MathML.)
411 .IB e1\  accent\  e2
412 This sets
413 .I e2
414 as an accent over
415 .IR e1 .
416 .I e2
417 is assumed to be at the correct height for a lowercase letter;
418 .I e2
419 is moved down according to whether
420 .I e1
421 is taller or shorter than a lowercase letter.
422 For example,
423 .B hat
424 is defined as
429 accent { "^" }
433 .BR dotdot ,
434 .BR dot ,
435 .BR tilde ,
436 .BR vec ,
438 .B dyad
439 are also defined using the
440 .B accent
441 primitive.
444 .IB e1\  uaccent\  e2
445 This sets
446 .I e2
447 as an accent under
448 .IR e1 .
449 .I e2
450 is assumed to be at the correct height for a character without a descender;
451 .I e2
452 is moved down if
453 .I e1
454 has a descender.
455 .B utilde
456 is pre-defined using
457 .B uaccent
458 as a tilde accent below the baseline.
461 .BI split\ \(ts text \(ts
462 This has the same effect as simply
466 .I text
471 .I text
472 is not subject to macro expansion because it is quoted;
473 .I text
474 is split up and the spacing between individual characters is adjusted.
477 .BI nosplit\  text
478 This has the same effect as
482 .BI \(ts text \(ts
486 but because
487 .I text
488 is not quoted it is subject to macro expansion;
489 .I text
490 is not split up
491 and the spacing between individual characters is not adjusted.
494 .IB e\  opprime
495 This is a variant of
496 .B prime
497 that acts as an operator on\~\c
498 .IR e .
499 It produces a different result from
500 .B prime
501 in a case such as
502 .BR A\ opprime\ sub\ 1 :
503 with
504 .B opprime
505 the\~\c
506 .B 1
507 is tucked under the prime as a subscript to the\~\c
508 .B A
509 (as is conventional in mathematical typesetting),
510 whereas with
511 .B prime
512 the\~\c
513 .B 1
514 is a subscript to the prime character.
515 The precedence of
516 .B opprime
517 is the same as that of
518 .B bar
520 .BR under ,
521 which is higher than that of everything except
522 .B accent
524 .BR uaccent .
525 In unquoted text a\~\c
526 .B '
527 that is not the first character is treated like
528 .BR opprime .
531 .BI special\  text\ e
532 This constructs a new object from\~\c
533 .I e
534 using a
535 .BR @L_TROFF@ (@MAN1EXT@)
536 macro named
537 .IR text .
538 When the macro is called,
539 the string
540 .B 0s
541 contains the output for\~\c
542 .IR e ,
543 and the number registers
544 .BR 0w ,
545 .BR 0h ,
546 .BR 0d ,
547 .BR 0skern ,
549 .BR 0skew
550 contain the width, height, depth, subscript kern, and skew of\~\c
551 .IR e .
552 (The
553 .I "subscript kern"
554 of an object says how much a subscript on that object should be tucked in;
556 .I skew
557 of an object says how far to the right of the center of the object an
558 accent over the object should be placed.)
559 The macro must modify
560 .B 0s
561 so that it outputs the desired result with its origin at the current
562 point, and increase the current horizontal position by the width
563 of the object.
564 The number registers must also be modified so that they correspond to the
565 result.
568 For example, suppose you wanted a construct that `cancels' an expression
569 by drawing a diagonal line through it.
573 .ft B
574 .if t .ne 6+\n(.Vu
576 \&.EQ
578 define cancel 'special Ca'
580 \&.EN
582 \&.de Ca
584 \&.\ \ ds 0s \e
586 \eZ'\e\e*(0s'\e
588 \ev'\e\en(0du'\e
590 \eD'l \e\en(0wu -\e\en(0hu-\e\en(0du'\e
592 \ev'\e\en(0hu'
594 \&..
599 Then you could cancel an expression\~\c
600 .I e
601 with
602 .BI \%cancel\ {\  e\  }
605 Here's a more complicated construct that draws a box round an expression:
609 .ft B
610 .if t .ne 11+\n(.Vu
611 \&.EQ
613 define box 'special Bx'
615 \&.EN
617 \&.de Bx
619 \&.\ \ ds 0s \e
621 \eZ'\eh'1n'\e\e*(0s'\e
623 \eZ'\e
625 \ev'\e\en(0du+1n'\e
627 \eD'l \e\en(0wu+2n 0'\e
629 \eD'l 0 -\e\en(0hu-\e\en(0du-2n'\e
631 \eD'l -\e\en(0wu-2n 0'\e
633 \eD'l 0 \e\en(0hu+\e\en(0du+2n'\e
635 \&'\e
637 \eh'\e\en(0wu+2n'
639 \&.\ \ nr 0w +2n
641 \&.\ \ nr 0d +1n
643 \&.\ \ nr 0h +1n
645 \&..
650 .BI space\  n
651 A positive value of the integer\~\c
652 .I n
653 (in hundredths of an em) sets the vertical spacing before the equation,
654 a negative value sets the spacing after the equation, replacing the
655 default values.
656 This primitive provides an interface to
657 .BR @L_ROFF@ 's
658 .B \ex
659 escape (but with opposite sign).
662 This keyword has no effect if the equation is part of a
663 .B @L_P_PIC@
664 picture.
666 .SS Extended primitives
668 .BI col\  n\  {\  .\|.\|.\  }
670 .BI ccol\  n\  {\  .\|.\|.\  }
672 .BI lcol\  n\  {\  .\|.\|.\  }
674 .BI rcol\  n\  {\  .\|.\|.\  }
676 .BI pile\  n\  {\  .\|.\|.\  }
678 .BI cpile\  n\  {\  .\|.\|.\  }
680 .BI lpile\  n\  {\  .\|.\|.\  }
682 .BI rpile\  n\  {\  .\|.\|.\  }
683 The integer value\~\c
684 .I n
685 (in hundredths of an em) increases the vertical spacing between rows,
686 using
687 .BR @L_ROFF@ 's
688 .B \ex
689 escape (the value has no effect in MathML mode).
690 Negative values are possible but have no effect.
691 If there is more than a single value given in a matrix, the biggest one
692 is used.
694 .SS Customization
695 When
696 .B eqn
697 is generating troff markup, the appearance of equations is controlled
698 by a large number of parameters.  They have no effect when generating
699 MathML mode, which pushes typesetting and fine motions downstream to
700 a MathML rendering engine.
701 These parameters can be set using the
702 .B set
703 command.
706 .BI set\  p\ n
707 This sets parameter\~\c
708 .I p
709 to value\~\c
710 .IR n ;
711 .I n\~\c
712 is an integer.
713 For example,
718 set x_height 45
722 says that
723 .B eqn
724 should assume an x\~height of 0.45\~ems.
728 Possible parameters are as follows.
729 Values are in units of hundredths of an em unless otherwise stated.
730 These descriptions are intended to be expository rather than
731 definitive.
733 .ie t \
734 .  TP \w'\fBdefault_rule_thickness'u+2n
735 .el \
736 .  TP
737 .B minimum_size
738 .B eqn
739 doesn't set anything at a smaller point-size than this.
740 The value is in points.
743 .B fat_offset
745 .B fat
746 primitive emboldens an equation
747 by overprinting two copies of the equation
748 horizontally offset by this amount.
749 This parameter is not used in MathML mode; instead, fat text uses
754 <mstyle mathvariant='double-struck'>
759 .B over_hang
760 A fraction bar is longer by twice this amount than
761 the maximum of the widths of the numerator and denominator;
762 in other words, it overhangs the numerator and
763 denominator by at least this amount.
766 .B accent_width
767 When
768 .B bar
770 .B under
771 is applied to a single character,
772 the line is this long.
773 Normally,
774 .B bar
776 .B under
777 produces a line whose length is the width of the object to which it applies;
778 in the case of a single character,
779 this tends to produce a line that looks too long.
782 .B delimiter_factor
783 Extensible delimiters produced with the
784 .B left
786 .B right
787 primitives have a combined height and depth of at least this many
788 thousandths of twice the maximum amount by which the sub-equation that
789 the delimiters enclose extends away from the axis.
792 .B delimiter_shortfall
793 Extensible delimiters produced with the
794 .B left
796 .B right
797 primitives have a combined height and depth
798 not less than the difference of
799 twice the maximum amount by which the sub-equation that
800 the delimiters enclose extends away from the axis
801 and this amount.
804 .B null_delimiter_space
805 This much horizontal space is inserted
806 on each side of a fraction.
809 .B script_space
810 The width of subscripts and superscripts is increased by this amount.
813 .B thin_space
814 This amount of space is automatically inserted after punctuation
815 characters.
818 .B medium_space
819 This amount of space is automatically inserted on either side
820 of binary operators.
823 .B thick_space
824 This amount of space is automatically inserted on either side of
825 relations.
828 .B x_height
829 The height of lowercase letters without ascenders such as `x'.
832 .B axis_height
833 The height above the baseline of the center of characters
834 such as `\(pl' and `\(mi'.
835 It is important that this value is correct for the font
836 you are using.
839 .B default_rule_thickness
840 This should set to the thickness of the
841 .B \e(ru
842 character, or the thickness of horizontal lines produced with the
843 .B \eD
844 escape sequence.
847 .B num1
849 .B over
850 command shifts up the numerator by at least this amount.
853 .B num2
855 .B smallover
856 command shifts up the numerator by at least this amount.
859 .B denom1
861 .B over
862 command shifts down the denominator by at least this amount.
865 .B denom2
867 .B smallover
868 command shifts down the denominator by at least this amount.
871 .B sup1
872 Normally superscripts are shifted up by at least this amount.
875 .B sup2
876 Superscripts within superscripts or upper limits
877 or numerators of
878 .B smallover
879 fractions
880 are shifted up by at least this amount.
881 This is usually less than sup1.
884 .B sup3
885 Superscripts within denominators or square roots
886 or subscripts or lower limits are shifted up by at least
887 this amount.
888 This is usually less than sup2.
891 .B sub1
892 Subscripts are normally shifted down by at least this amount.
895 .B sub2
896 When there is both a subscript and a superscript, the subscript
897 is shifted down by at least this amount.
900 .B sup_drop
901 The baseline of a superscript is no more
902 than this much amount below the top of the object on
903 which the superscript is set.
906 .B sub_drop
907 The baseline of a subscript is at least this much below
908 the bottom of the object on which the subscript is set.
911 .B big_op_spacing1
912 The baseline of an upper limit is at least this
913 much above the top of the object on which the limit is set.
916 .B big_op_spacing2
917 The baseline of a lower limit is at least this
918 much below the bottom of the object on which the limit is set.
921 .B big_op_spacing3
922 The bottom of an upper limit is at least this much above the
923 top of the object on which the limit is set.
926 .B big_op_spacing4
927 The top of a lower limit is at least this much below
928 the bottom of the object on which the limit is set.
931 .B big_op_spacing5
932 This much vertical space is added above and below limits.
935 .B baseline_sep
936 The baselines of the rows in a pile or matrix are normally
937 this far apart.
938 In most cases this should be equal to the sum of
939 .B num1
941 .BR denom1 .
944 .B shift_down
945 The midpoint between the top baseline and the bottom baseline
946 in a matrix or pile is shifted down by this much from the axis.
947 In most cases this should be equal to
948 .BR axis_height .
951 .B column_sep
952 This much space is added between columns in a matrix.
955 .B matrix_side_sep
956 This much space is added at each side of a matrix.
959 .B draw_lines
960 If this is non-zero, lines are drawn using the
961 .B \eD
962 escape sequence, rather than with the
963 .B \el
964 escape sequence and the
965 .B \e(ru
966 character.
969 .B body_height
970 The amount by which the height of the equation exceeds this
971 is added as extra space before the line containing the equation
972 (using
973 .BR \ex ).
974 The default value is 85.
977 .B body_depth
978 The amount by which the depth of the equation exceeds this
979 is added as extra space after the line containing the equation
980 (using
981 .BR \ex ).
982 The default value is 35.
985 .B nroff
986 If this is non-zero,
987 then
988 .B ndefine
989 behaves like
990 .B define
992 .B tdefine
993 is ignored,
994 otherwise
995 .B tdefine
996 behaves like
997 .B define
999 .B ndefine
1000 is ignored.
1001 The default value is\~0
1002 (This is typically changed to\~1 by the
1003 .B eqnrc
1004 file for the
1005 .BR ascii ,
1006 .BR latin1 ,
1007 .BR utf8 ,
1009 .B cp1047
1010 devices.)
1013 A more precise description of the role of many of these
1014 parameters can be found in Appendix\~H of
1015 .IR "The \*(txbook" .
1018 .SS Macros
1019 Macros can take arguments.
1020 In a macro body,
1021 .BI $ n
1022 where
1023 .I n
1024 is between 1 and\~9,
1025 is replaced by the
1026 .IR n-th
1027 argument if the macro is called with arguments;
1028 if there are fewer than
1029 .I n\~\c
1030 arguments, it is replaced by nothing.
1031 A word containing a left parenthesis where the part of the word
1032 before the left parenthesis has been defined using the
1033 .B define
1034 command
1035 is recognized as a macro call with arguments;
1036 characters following the left parenthesis
1037 up to a matching right parenthesis are treated as comma-separated
1038 arguments;
1039 commas inside nested parentheses do not terminate an argument.
1042 .BI sdefine\  name\ X\ anything\ X
1043 This is like the
1044 .B define
1045 command, but
1046 .I name
1047 is not recognized if called with arguments.
1050 .BI include\ \(ts file \(ts
1052 .BI copy\ \(ts file \(ts
1053 Include the contents of
1054 .I file
1055 .RB ( include
1057 .B copy
1058 are synonyms).
1059 Lines of
1060 .I file
1061 beginning with
1062 .B .EQ
1064 .B .EN
1065 are ignored.
1068 .BI ifdef\  name\ X\ anything\ X
1070 .I name
1071 has been defined by
1072 .B define
1073 (or has been automatically defined because
1074 .I name
1075 is the output device)
1076 process
1077 .IR anything ;
1078 otherwise ignore
1079 .IR anything .
1080 .I X
1081 can be any character not appearing in
1082 .IR anything .
1085 .BI undef\  name
1086 Remove definition of
1087 .IR name ,
1088 making it undefined.
1091 Besides the macros mentioned above, the following definitions are available:
1092 .BR Alpha ,
1093 .BR Beta ,
1094 \&.\|.\|.,
1095 .B Omega
1096 (this is the same as
1097 .BR ALPHA ,
1098 .BR BETA ,
1099 \&.\|.\|.,
1100 .BR OMEGA ),
1101 .B ldots
1102 (three dots on the base line),
1104 .BR dollar .
1106 .SS Fonts
1107 .B eqn
1108 normally uses at least two fonts to set an equation:
1109 an italic font for letters,
1110 and a roman font for everything else.
1111 The existing
1112 .B gfont
1113 command
1114 changes the font that is used as the italic font.
1115 By default this is\~\c
1116 .BR I .
1117 The font that is used as the roman font can be changed
1118 using the new
1119 .B grfont
1120 command.
1123 .BI grfont\  f
1124 Set the roman font to\~\c
1125 .IR f .
1129 .B italic
1130 primitive uses the current italic font set by
1131 .BR gfont ;
1133 .B roman
1134 primitive uses the current roman font set by
1135 .BR grfont .
1136 There is also a new
1137 .B gbfont
1138 command, which changes the font used by the
1139 .B bold
1140 primitive.
1141 If you only use the
1142 .BR roman ,
1143 .B italic
1145 .B bold
1146 primitives to changes fonts within an equation,
1147 you can change all the fonts used by your equations
1148 just by using
1149 .BR gfont ,
1150 .B grfont
1152 .B gbfont
1153 commands.
1156 You can control which characters are treated as letters
1157 (and therefore set in italics) by using the
1158 .B chartype
1159 command described above.
1160 A type of
1161 .B letter
1162 causes a character to be set in italic type.
1163 A type of
1164 .B digit
1165 causes a character to be set in roman type.
1168 .SH "INTERACTION"
1169 It is not possible to use the hash character (#) as a delimiter for
1170 inline equations in
1171 .B @L_P_EQN@
1172 since
1173 .BR @L_P_TBL@ (@MAN1EXT@)
1174 uses a macro called
1175 .BR .T# ,
1176 causing a clash.
1179 .SH FILES
1180 .Tp \w'\fB@MACRODIR@/eqnrc'u+2n
1181 .B @MACRODIR@/eqnrc
1182 Initialization file.
1184 .SH MATHML MODE LIMITATIONS
1185 MathML is designed on the assumption that it cannot know the exact
1186 physical characteristics of the media and devices on which it will
1187 be rendered.
1188 It does not support fine control of motions and sizes to the same
1189 degree troff does.
1190 Thus:
1192 .IP *
1193 .B eqn
1194 parameters have no effect on the generated MathML.
1196 .IP *
1198 .BR special,
1199 .BR up ,
1200 .BR down ,
1201 .BR fwd ,
1203 .B back
1204 operations cannot be implemented, and yield a
1205 MathML `<merror>' message instead.
1207 .IP *
1209 .B vcenter
1210 keyword is silently ignored, as centering on the math axis is the
1211 MathML default.
1213 .IP *
1214 Characters that
1215 .B eqn
1216 over troff sets extra large \(en notably the integral sign \(en
1217 may appear too small and need to have their `<mstyle>' wrappers
1218 adjusted by hand.
1221 As in its troff mode,
1222 .B eqn
1223 in MathML mode leaves the
1224 .B .EQ
1226 .B .EN
1227 delimiters in place for displayed equations, but emits no explicit
1228 delimiters around inline equations.
1229 They can, however, be recognized as strings that begin with `<math>'
1230 and end with `</math>' and do not cross line boundaries.
1233 See the
1234 .B BUGS
1235 section for translation limits specific to
1236 .BR eqn .
1239 .SH BUGS
1240 Inline equations are set at the point size that is current at the
1241 beginning of the input line.
1243 In MathML mode, the
1244 .B mark
1246 .B lineup
1247 features don't work.
1248 These could, in theory, be implemented with `<maligngroup>' elements.
1250 In MathML mode, each digit of a numeric literal gets a separate
1251 `<mn>\:</mn>' pair, and decimal points are tagged with `<mo>\:</mo>'.
1252 This is allowed by the specification, but inefficient.
1255 .SH "SEE ALSO"
1256 .BR @L_ROFF@ (@MAN1EXT@),
1257 .BR @L_TROFF@ (@MAN1EXT@),
1258 .BR @L_P_PIC@ (@MAN1EXT@),
1259 .BR @L_ROFF@-font (@MAN5EXT@),
1260 .I The\ \*(txbook
1262 .cp \n[__compat]
1263 .rr __compat
1265 .\" s-ts-mode