可以使用\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
比较棘手,并且可能涉及使之$
活跃,这与某些用途不兼容。