改进方程式中删除项的排版

改进方程式中删除项的排版

我需要删除方程中的项。基于这个问题的答案,我试过取消套餐,但输出结果的外观并不能让我信服。考虑以下示例:

\documentclass{article}
\usepackage{cancel}
\newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
\begin{document}
\begin{equation}
  \cancelto{\mathrm{ignored}}{\pd{f}{x}} 
    + \cancelto{\mathrm{ignored}}{\pd{g}{y}} + \pd{h}{z}
\end{equation}
\end{document}

输出结果如下:

在此处输入图片描述

如果我使用包选项makeroom,我会得到:

在此处输入图片描述

这显然不能令人满意。我希望能够做到:

  • 箭头形状与 TikZ 使用的一致。
  • 平行的箭头(我想这很难做到,所以我很乐意手动指定角度)。
  • 能够指定箭头尖端的文本锚点(例如,使得文本可以锚定在底部中央或右下角)。
  • 能够指定箭头尖端附近文本的字体大小(我似乎无法做到这一点\cancelto)。
  • 自动在术语之间添加类似于makeroom(最好有,但如果我可以更改字体则不是必需的)大小的空格,因为我可以在必要时微调间距。

感谢您的帮助。

答案1

这里有一个建议,它附带一些 pgfkey,允许您随意调整角度、字体和箭头。(编辑:修复了一个角度,非常感谢user1362373!)

\documentclass{article}
\usepackage{cancel}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\tikzset{CancelTo/.is family,
CancelTo,
angle/.initial=60,
name/.initial=tmp,
node/.style={},
arrow/.style={-latex}}
\newcommand{\CancelTo}[3][]{\bgroup\tikzset{CancelTo/.cd,#1}
\tikzmarknode{\pgfkeysvalueof{/tikz/CancelTo/name}}{#3}
\begin{tikzpicture}[overlay,remember picture]
\draw[/tikz/CancelTo/arrow] let \p1=($(\pgfkeysvalueof{/tikz/CancelTo/name}.north)-(\pgfkeysvalueof{/tikz/CancelTo/name}.south)$),\n1={0.5*\y1*cot(\pgfkeysvalueof{/tikz/CancelTo/angle})},
\n2={\y1/sin(\pgfkeysvalueof{/tikz/CancelTo/angle})} 
in ([xshift=-\n1]\pgfkeysvalueof{/tikz/CancelTo/name}.south) -- ++ (\pgfkeysvalueof{/tikz/CancelTo/angle}:\n2+5pt) 
node[above right,/tikz/CancelTo/node] (tmplabel) {#2};
\path let \p1=($(tmplabel.north east)-(\pgfkeysvalueof{/tikz/CancelTo/name}.east)$) in
\pgfextra{\xdef\mydist{\x1}};
\end{tikzpicture}\egroup\vphantom{\cancelto{#2}{#3}}\hspace{\mydist}}
\newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
\begin{document}
An equation.
\begin{equation}
    \CancelTo{ignored}{\pd{f}{x}} 
  \CancelTo[arrow/.style={-stealth}]{ignored}{\pd{f}{x}} 
    + \CancelTo[node/.style={font=\tiny,text=blue}]{ignored}{\pd{g}{y}} + \pd{h}{z}
\end{equation}
Another equation with another angle.
\begin{equation}
    \CancelTo[angle=70]{ignored}{\pd{f}{x}} 
  \CancelTo[angle=70,name=mynode]{ignored}{\pd{f}{x}} 
    + \CancelTo[angle=70]{ignored}{\pd{g}{y}} + \pd{h}{z}
\end{equation}
Bonus: you can name nodes and use \tikzmarknode{this}{this} otherwise.
\begin{tikzpicture}[overlay,remember picture]
\draw[-latex,red] (this) to[bend right] (mynode);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容