我正在尝试创建一个在数学模式下工作的命令,它可以模拟对角线删除线,同时保持数学显示完整。
\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}