![使用向下箭头取消数学表达式](https://linux22.com/image/476931/%E4%BD%BF%E7%94%A8%E5%90%91%E4%B8%8B%E7%AE%AD%E5%A4%B4%E5%8F%96%E6%B6%88%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
下列 解决方案到问题一些数学文本需要被删除,这里使用cancel
包。宏\cancelto
会生成一个从左下角到右上的箭头。它还会生成一个宏,\bcancel
该宏会从左上角到右下角删除。
是否有可能有一个将这两者结合在一起的宏,其形式如下\bcancelto
:从左上到右下的箭头。
以下是 MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage[makeroom]{cancel}
\begin{document}
\noindent
\verb|\cancel{5y}|:
\[ x+\cancel{5y}=0\]
\verb|\bcancel{5y}|:
\[ x+\bcancel{5y}=0\]
\verb|\xcancel{5y}|:
\[ x+\xcancel{5y}=0\]
\verb|\cancelto{\infty}{5y}|:
\[ x+\cancelto{\infty}{5y}=0\]
\end{document}
答案1
我\bcancelto{label}{term}
通过修改其中一个包例程来进行介绍。已编辑以支持上的标签\bcancelto
。
\canto@vector
对生产的修改\cantox@vector
包括三件事:
1)在调用-
之前添加一个;#4
\vector
2) 将;之前的^
上标改为下标,以及_
\raise
3)在-
之前添加符号。#2
\raise
然后我必须定义\bcancelto
进行这个宏替换并\cancelto
在替换到位的情况下调用。
\documentclass{article}
\usepackage{amsmath}
\usepackage[makeroom]{cancel}
\makeatletter
% #1, #2 offset of label #6 extra width to clear arrowhead
% #3, #4 vector direction #7 superscript label style
% #5 vector width #8 superscript label
\def\cantox@vector#1#2#3#4#5#6#7#8{%
\[email protected]\p@
\setbox\z@\vbox{\boxmaxdepth.5\p@
\hbox{\kern-1.2\p@\kern#1\dimen@$#7{#8}\m@th$}}%
\ifx\canto@fil\hidewidth \wd\z@\z@ \else \kern-#6\unitlength \fi
\ooalign{%
\canto@fil$\m@th \CancelColor
\vcenter{\hbox{\dimen@#6\unitlength \kern\dimen@
\multiply\dimen@#4\divide\dimen@#3 \vrule\@depth\dimen@\@width\z@
\vector(#3,-#4){#5}%
}}_{\raise-#2\dimen@\copy\z@\kern-\scriptspace}$%
\canto@fil \cr
\hfil \box\@tempboxa \kern\wd\z@ \hfil \cr}}
\def\bcancelto#1#2{\let\canto@vector\cantox@vector\cancelto{#1}{#2}}
\makeatother
\begin{document}
\noindent
\verb|\cancel{5y}|:
\[ x+\cancel{5y}=0\]
\verb|\bcancel{5y}|:
\[ x+\bcancel{5y}=0\]
\verb|\xcancel{5y}|:
\[ x+\xcancel{5y}=0\]
\verb|\cancelto{\infty}{5y}|:
\[ x+\cancelto{\infty}{5y}=0\]
\noindent NEW! \verb|\bcancelto{\infty}{5y}|:
\[ x+\bcancelto{\infty}{5y}=0\]
\end{document}
答案2
这是一个 TikZ 解决方案。
\documentclass[varwidth,border=50]{standalone}
\usepackage{tikz}
\tikzset{
main node/.style={inner sep=0,outer sep=0},
label node/.style={inner sep=0,outer ysep=.2em,outer xsep=.4em,font=\scriptsize,overlay},
strike out/.style={shorten <=-.2em,shorten >=-.5em,overlay}
}
\newcommand{\cancelto}[3][]{\tikz[baseline=(N.base)]{
\node[main node](N){$#2$};
\node[label node,#1, anchor=south west] at (N.north east){$#3$};
\draw[strike out,-latex,#1] (N.south west) -- (N.north east);
}}
\newcommand{\bcancelto}[3][]{\tikz[baseline=(N.base)]{
\node[main node](N){$#2$};
\node[label node,#1, anchor=north west] at (N.south east){$#3$};
\draw[strike out,-latex,#1] (N.north west) -- (N.south east);
}}
\begin{document}
\cancelto[orange]{test}{Oooo!}
and math
$\sqrt{\cancelto[red]{x}{\infty}}$
\bcancelto[orange]{test}{Oooo!}
and math
$\sqrt{\bcancelto[red]{x}{\infty}}$
\end{document}