Crossing out expressions in eqn

You can read about defining a macro for canceling an expression in the man page of eqn. This macro draws a line over the expression, as an indication that it’s canceled. When using paper and pen, I usually use a cross instead, so this is how you do the same in eqn.
.\" define cancel_cross macro for expressions 
.defcolor cancelcolor rgb 0.0f 0.0f 0.0f 
.EQ } 
define cancel_cross ’special Cax’ 
.EN 
.de Cax 
.  ds 0s \ 
\Z’\\*(0s’\ 
\Z’\D’t 0.75p’’\ 
\m[cancelcolor]\ 
\v’\\n(0du’\ 
\D’l \\n(0wu -\\n(0hu-\\n(0du’\ 
\h’-\\n(0wu’\ 
\D’l \\n(0wu \\n(0hu+\\n(0du’\ 
\v’-\\n(0hu-\\n(0du’\ 
\Z’\D’t 0.5p’’\ 
\m[default]\ 
\v’\\n(0hu’ 
.. 

Then use it, for example, like this: { 4 times 1 } over { 4 times 5 } = { cancel_cross 4 times 1 } over { cancel_cross 4 times 5 }.

You can, of course, name your macro cancel instead of cancel_cross. The cancelcolor is also optional, and in the case above, redundant.