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