ConTeXt 中是否有等价的\cancelto
?我想用箭头取消数学表达式,如“归零”。
答案1
下面给出的代码可能并非在所有情况下都有效,并且可能有更好的方法来实现这一点,但它可以作为您的开始。它使用带有 MetaPost 背景的框架公式(无框架!)。它不如 灵活\cancelto
,因为 0 是硬编码的。
% Define the MetaPost background
\startuseMPgraphic{cancel}
drawarrow origin--(OverlayWidth,OverlayHeight);
label.top("$0$",(OverlayWidth,OverlayHeight));
setbounds currentpicture to unitsquare xyscaled(OverlayWidth,OverlayHeight);
\stopuseMPgraphic
% Define the overlay
\defineoverlay[cancel][\useMPgraphic{cancel}]
% Define a new mathframed cancel
\definemathframed[cancel][mframed][
frame=off,
offset=overlay,
background=cancel,
]
% Example
\startTEXpage[width=4in,offset=3bp]
\startformula
\int_0^{+\infty}e^{-x}\cos x\,dx
=
\cancel{\Bigl[e^{-x}\sin x\Bigr]_0^{+\infty}}
+\int_0^{+\infty}e^{-x}\sin x\,dx.
\stopformula
\stopTEXpage
附言我建议不要在公式中使用这类箭头来删除术语,而是从文本(和公式)中清楚地表明取消了什么以及为什么取消。
答案2
这只是米凯尔 (Mikael) 回答中的一些花哨玩意儿。
% Define the MetaPost background
\startuseMPgraphic{cancel}
drawarrow origin--(OverlayWidth,OverlayHeight);
label.top(\MPstring{cancelto},(OverlayWidth,OverlayHeight));
setbounds currentpicture to unitsquare xyscaled(OverlayWidth,OverlayHeight);
\stopuseMPgraphic
% Define the overlay
\defineoverlay[cancel][\useMPgraphic{cancel}]
% Define a new mathframed cancel
\definemathframed
[cancel]
[mframed]
[frame=off,
offset=overlay,
background=cancel,
to={},
extras={\setMPtext{cancelto}{$\framedparameter{to}$}}]
% Example
\startTEXpage[width=4in,offset=3bp]
\startformula
\int_0^{+\infty}e^{-x}\cos x\,dx
=
\cancel[to=0]{\Bigl[e^{-x}\sin x\Bigr]_0^{+\infty}}
+\int_0^{+\infty}e^{-x}\sin x\,dx.
\stopformula
\stopTEXpage