在数学模式结束时插入标记

在数学模式结束时插入标记

可以使用\everymath\everydisplay在数学模式开始时插入标记,但是如何在数学模式结束时插入标记呢?假设我想将数学模式材料封装在一对 DVI 特殊begin foo和中end foo,如何做到这一点:

\everymath{\special{begin foo}}
% where to put \special{end foo}
\everydisplay{\special{begin foo}}
% ditto

Regular text $a+b=c$ more text $$\sqrt{x}=y$$
\bye

答案1

很容易获得特别数学:

\tracingonline1
\tracingoutput1
\showboxdepth100
\showboxbreadth100

\def\efoo{\special{end foo}}

\everymath{\special{begin foo}\aftergroup\efoo}
% where to put \special{end foo}
\everydisplay{\special{begin foo}\aftergroup\efoo}
% ditto

Regular text $a+b=c$ more text $$\sqrt{x}=y$$
\bye

生产

...\mathon
...\special{begin foo}
...\teni a
...\glue(\medmuskip) 2.22217 plus 1.11108 minus 2.22217
...\tenrm +
...\penalty 700
...\glue(\medmuskip) 2.22217 plus 1.11108 minus 2.22217
...\teni b
...\glue(\thickmuskip) 2.77771 plus 2.77771
...\tenrm =
...\penalty 500
...\glue(\thickmuskip) 2.77771 plus 2.77771
...\teni c
...\mathoff
...\special{end foo}

..\hbox(8.49092+1.94444)x32.64345, shifted 218.55577, display
...\special{begin foo}
...\hbox(8.49092+1.90904)x14.04863
....\hbox(0.39998+9.6)x8.33336, shifted -7.69096
.....\tensy p
....\vbox(8.49092+0.0)x5.71527
.....\kern0.39998
.....\rule(0.39998+0.0)x*
.....\kern3.38542
.....\hbox(4.30554+0.0)x5.71527
......\teni x
...\glue(\thickmuskip) 2.77771 plus 2.77771
...\tenrm =
...\glue(\thickmuskip) 2.77771 plus 2.77771
...\teni y
...\kern0.35878
..\penalty 0
..\glue(\belowdisplayshortskip) 7.0 plus 3.0 minus 4.0
..\glue(\baselineskip) 10.05556
..\hbox(0.0+0.0)x469.75499, glue set 469.75499fil
...\special{end foo}

要在显示器之前或内部获取特色功能\mathoff比较棘手,并且可能涉及使之$活跃,这与某些用途不兼容。

相关内容