创建删除线命令

创建删除线命令

我正在尝试创建一个在数学模式下工作的命令,它可以模拟对角线删除线,同时保持数学显示完整。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\newcommand{\strikeout}[1]{%
\ifmmode%
      \tikz[inner sep=0.5pt,baseline] \node [strike out,draw=OrangeRed,anchor=text]{$#1$};%
\else%
      \tikz[inner sep=0.5pt,baseline] \node [strike out,draw=OrangeRed,anchor=text]{#1};%
\fi%
}

\begin{document}
$\dfrac{x^2\times 10^3}
{x^2\strikeout{\times 10^3}}$

$\dfrac{x^2\times 10^3}
{x^2\tikzmark{matha}\times 10^3\tikzmark{mathb}}$
\tikz[remember picture, overlay,OrangeRed]
{\draw ($(matha)+(0.1em,-0.125em)$) --
            ($(mathb)+(-0.1em,0.825em)$);}

$\dfrac{x^2\times 10^3}
{x^2\tikzmark{matha}\times 10^3\tikzmark{mathb}}$
\tikz[remember picture, overlay,OrangeRed,baseline]
{\draw[anchor=text] (matha.south west) --
            (mathb.north east);}
\end{document}

请注意显示的差异。第一个不维护mathmode。注意我希望它适用于任何场景,因此我考虑strikeout使用重新定义我拥有的命令remember picture, overlay。但请注意,我的问题是像原始命令一样获取要绘制的线strikeout。第二个代码似乎可以解决问题,但它是固定的,我正在尝试制作一个用户友好的命令,而第三个,它根本不可能。因此,我正在寻找一种合适的方法来使命令可用并获得所需的结果。

答案1

在此处输入图片描述

\times正如 cgnieder 在评论中指出的那样,您可以通过{}在节点内部的数学模式列表末尾插入来恢复 mathbin 间距。下面的代码将\strikeout第一个示例中使用的添加到。然而,这仍然会将子表达式框起来,使该术语成为 mathord,并将任何空白冻结在其自然宽度。

如果第二个示例中的 tikz 位正在执行我认为它们正在执行的任何操作(这不能保证),那么 tikz 标记将附加到各个原子上,因此不会用方框括住涉及空白的子项,并且通过将第一个标记和时间的组合设为 mathbin 原子来重新声明间距。再多做一点工作,代码就可以确定其参数的类别并自动插入\mathbin(或\mathxx)。

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}
\newcommand{\tikzmarkb}[3]{\tikz[remember picture,baseline,inner sep=0pt] \node[anchor=text](#2) 
{$#1#3$};}

\newcommand{\strikeout}[1]{%
\ifmmode%
      \tikz[inner sep=0.5pt,baseline] \node [strike out,draw=OrangeRed,anchor=text]{${}#1{}$};%
\else%
      \tikz[inner sep=0.5pt,baseline] \node [strike out,draw=OrangeRed,anchor=text]{#1};%
\fi%
}

\begin{document}
$\dfrac{x^2\times 10^3}
{x^2\strikeout{\times 10^3}}$


\bigskip

$\dfrac{x^2\times 10^3}
{x^2\mathbin{\tikzmarkb{}{matha}\times} 10^{\tikzmarkb\scriptstyle{mathb}3}}$
\tikz[remember picture, overlay,OrangeRed,baseline]
{\draw[anchor=text] (matha.south west) --
            (mathb.north east);}
\end{document}

相关内容