Equivalent of LaTeX \cancel? and Thanks!
Hi all, I recently transitioned from LaTeX to ConTeXt. There was some particular thing I needed to do (which escapes me at the moment) that was far, far easier to do in ConTeXt than in LaTeX. And, as I've learned, I've found that that's quite often the case. So, a huge thank you to everyone involved. A couple hours ago I was annoyed that I couldn't find an equivalent for the LaTeX 'cancel' environment/command/style(?)[1]. Now, I'm truly amazed that 'cancel' required a whole package. After discovering that 'underline' and 'strikethrough' were implemented as overlays, I quickly coded up the following: \startuseMPgraphic{MyCancel} draw (0,.2*\overlayheight)--(\overlaywidth,\overlayheight); \stopuseMPgraphic \defineoverlay[mycancel][\useMPgraphic{MyCancel}] \def\cancel#1{\framed[background=mycancel,frame=off]{#1}} Now, I'm sure this is not *quite* the right way to do it. The 'cancel'ed items end up being placed too high on the line, and other spacings are slightly off. But, taking a cue from underlining, I kept the MyCancel graphic and tried: \definetextbackground [cancel] [location=text, alternative=1, background=mycancel] % plus boilerplate for setting up \startcancel\stopcancel ...But, while composing this email, I found what I wanted, which still isn't ``right'' in some sense: \def\cancel#1{\framed[background=mycancel,frame=off,width=fit,height=fit,strut=no]{#1}} I found the parameters for \framed. I'm still learning to Read The Fantastic Manuals, but sent this anyway since I wanted to say thanks. Best, Ben [1] e.g. http://www.sosmath.com/CBB/viewtopic.php?t=9412
Benjamin R. Haskell wrote:
Hi all,
I recently transitioned from LaTeX to ConTeXt. There was some particular thing I needed to do (which escapes me at the moment) that was far, far easier to do in ConTeXt than in LaTeX. And, as I've learned, I've found that that's quite often the case. So, a huge thank you to everyone involved.
A couple hours ago I was annoyed that I couldn't find an equivalent for the LaTeX 'cancel' environment/command/style(?)[1]. Now, I'm truly amazed that 'cancel' required a whole package.
After discovering that 'underline' and 'strikethrough' were implemented as overlays, I quickly coded up the following:
\startuseMPgraphic{MyCancel} draw (0,.2*\overlayheight)--(\overlaywidth,\overlayheight); \stopuseMPgraphic \defineoverlay[mycancel][\useMPgraphic{MyCancel}]
\def\cancel#1{\framed[background=mycancel,frame=off]{#1}}
Now, I'm sure this is not *quite* the right way to do it. The 'cancel'ed items end up being placed too high on the line, and other spacings are slightly off. But, taking a cue from underlining, I kept the MyCancel graphic and tried:
\definetextbackground [cancel] [location=text, alternative=1, background=mycancel] % plus boilerplate for setting up \startcancel\stopcancel
....But, while composing this email, I found what I wanted, which still isn't ``right'' in some sense:
\def\cancel#1{\framed[background=mycancel,frame=off,width=fit,height=fit,strut=no]{#1}}
I found the parameters for \framed. I'm still learning to Read The Fantastic Manuals, but sent this anyway since I wanted to say thanks.
\startuseMPgraphic{mpos:par:cancel} for i=1 upto nofmultipars : draw .2[llcorner multipars[i],ulcorner multipars[i]] -- .2[urcorner multipars[i],lrcorner multipars[i]] ; endfor ; \stopuseMPgraphic \definetextbackground[cancel][location=text,mp=mpos:par:cancel] \def\startcancel{\starttextbackground[cancel]} \def\stopcancel {\stoptextbackground} \def\cancel {\groupedcommand\startcancel\stopcancel} however, this is kind of fuzzy when you cross lines an alternative is to use: \definetextbackground[cancel][location=text,alternative=4,background=,frame=off] \definestartstop [cancel] [before={\starttextbackground[cancel]}, after=\stoptextbackground] however, there is a glitch in the drawing so you need a patch \startMPinclusions def draw_multi_pars = for i=1 upto nofmultipars : do_draw_par(multipars[i]) ; if boxgridtype= 1 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) ; % withcolor boxgridcolor ; elseif boxgridtype= 2 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,false) ; % withcolor boxgridcolor ; elseif boxgridtype= 3 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) ; % withcolor boxgridcolor ; draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) shifted (0,ExHeight) ; % withcolor boxgridcolor ; elseif boxgridtype= 4 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) shifted (0,ExHeight/2) ; % withcolor boxgridcolor ; elseif boxgridtype=11 : draw graphic_grid(multipars[i],boxgriddistance,boxgriddistance,boxgriddistance/2,boxgriddistance/2) ; elseif boxgridtype=12 : draw graphic_grid(multipars[i],boxgriddistance,boxgriddistance,0,0) ; fi ; endfor ; enddef ; \stopMPinclusions (will be fixed in the next release) ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Sun, Oct 12, 2008 at 4:17 PM, Hans Hagen
Benjamin R. Haskell wrote:
Hi all,
I recently transitioned from LaTeX to ConTeXt. There was some particular thing I needed to do (which escapes me at the moment) that was far, far easier to do in ConTeXt than in LaTeX. And, as I've learned, I've found that that's quite often the case. So, a huge thank you to everyone involved.
A couple hours ago I was annoyed that I couldn't find an equivalent for the LaTeX 'cancel' environment/command/style(?)[1]. Now, I'm truly amazed that 'cancel' required a whole package.
After discovering that 'underline' and 'strikethrough' were implemented as overlays, I quickly coded up the following:
\startuseMPgraphic{MyCancel} draw (0,.2*\overlayheight)--(\overlaywidth,\overlayheight); \stopuseMPgraphic \defineoverlay[mycancel][\useMPgraphic{MyCancel}]
\def\cancel#1{\framed[background=mycancel,frame=off]{#1}}
Now, I'm sure this is not *quite* the right way to do it. The 'cancel'ed items end up being placed too high on the line, and other spacings are slightly off. But, taking a cue from underlining, I kept the MyCancel graphic and tried:
\definetextbackground [cancel] [location=text, alternative=1, background=mycancel] % plus boilerplate for setting up \startcancel\stopcancel
....But, while composing this email, I found what I wanted, which still isn't ``right'' in some sense:
\def\cancel#1{\framed[background=mycancel,frame=off,width=fit,height=fit,strut=no]{#1}}
I found the parameters for \framed. I'm still learning to Read The Fantastic Manuals, but sent this anyway since I wanted to say thanks.
\startuseMPgraphic{mpos:par:cancel} for i=1 upto nofmultipars : draw .2[llcorner multipars[i],ulcorner multipars[i]] -- .2[urcorner multipars[i],lrcorner multipars[i]] ; endfor ; \stopuseMPgraphic
\definetextbackground[cancel][location=text,mp=mpos:par:cancel]
\def\startcancel{\starttextbackground[cancel]} \def\stopcancel {\stoptextbackground} \def\cancel {\groupedcommand\startcancel\stopcancel}
however, this is kind of fuzzy when you cross lines
an alternative is to use:
\definetextbackground[cancel][location=text,alternative=4,background=,frame=off]
\definestartstop [cancel] [before={\starttextbackground[cancel]}, after=\stoptextbackground]
\definestartstop is not neccessary because \definetextbackground defines \start/\stopcancel and \cancel as shortcuts ;-)
however, there is a glitch in the drawing so you need a patch
\startMPinclusions def draw_multi_pars = for i=1 upto nofmultipars : do_draw_par(multipars[i]) ; if boxgridtype= 1 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) ; % withcolor boxgridcolor ; elseif boxgridtype= 2 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,false) ; % withcolor boxgridcolor ; elseif boxgridtype= 3 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) ; % withcolor boxgridcolor ; draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) shifted (0,ExHeight) ; % withcolor boxgridcolor ; elseif boxgridtype= 4 : draw baseline_grid (multipars[i],if multilocs[i]=1: down else: up fi,true) shifted (0,ExHeight/2) ; % withcolor boxgridcolor ; elseif boxgridtype=11 : draw graphic_grid(multipars[i],boxgriddistance,boxgriddistance,boxgriddistance/2,boxgriddistance/2) ; elseif boxgridtype=12 : draw graphic_grid(multipars[i],boxgriddistance,boxgriddistance,0,0) ; fi ; endfor ; enddef ; \stopMPinclusions
(will be fixed in the next release)
Wolfgang
participants (3)
-
Benjamin R. Haskell
-
Hans Hagen
-
Wolfgang Schuster