我正在尝试在数学表达式中添加箭头(尤其是在极限内),以指出在求解极限时为某个项分配了一个值。我遇到了取消包及其命令 \cancelto{}{},但我遇到了 2 个问题:1. 它划掉该项,就像在取消它一样(显然)2. 它只向上移动(右向上,但右侧部分不困扰我),而当我显示分数分母的趋势时,我可能需要它向下移动。
在这里搜索后,我找到了一个自定义命令,它可以完成这项工作(我对其进行了一点修改),并开始使用它,但遗憾的是它有一半的时间是有效的。另一半时间它只是扰乱了方程中其他元素的所有基线。我会把命令的代码留给你(再次说明,这不是我的功劳)和我遇到的一个错误,希望有人能帮助我。我还在学习 Tikz,所以我无法自己解决这个问题,尽管我怀疑我的问题的答案就在那里。
我修改后的代码:
\usetikzlibrary{calc}
\newcommand*\canc[1]{%
\mathchoice
{\scriptstyle#1}
{\scriptstyle#1}
{\scriptscriptstyle#1}
{\scriptscriptstyle#1}
}
\newcommand*\dtendto[2][0]{%
\kern9pt%
\begin{tikzpicture}[baseline=(current bounding box.center).anchor=east]
\node[anchor=east] (a) {$#2$};
\draw[->, color = red] ($(a.south)$) -- ($(a.south)-(-4pt,8pt)$) node
at ($(a.south)-(-8pt,12pt)$) {$\canc{#1}$};
\end{tikzpicture}
}
\newcommand*\utendto[2][0]{%
\kern9pt%
\begin{tikzpicture}[baseline=(current bounding box.south).anchor=east]
\node[anchor=east] (a) {$#2$};
\draw[->, color = red] ($(a.north)$) -- ($(a.north)+(4pt,8pt)$) node
at ($(a.north)+(8pt,12pt)$) {$\canc{#1}$};
\end{tikzpicture}
}
我遇到麻烦的部分(我之前的部分已经解决了这个问题,但正确的代码肯定仍然可以在那些部分上运行)。
\lim_{x\to\infty} \frac{\bcancel{x^5}\cdot(\utendto[2]{2}
-\utendto[0]{\frac{3}{x^2}} +
\utendto[0]{\frac{2}{x^4}})}{\bcancel{x^5}\cdot\left(4 + \frac{5}{x}
-\frac{100}{x^5}\right)}
下面是显示效果的快照,请注意,我希望箭头被添加到顶部,就好像等式根本不知道它们在那里一样。现在它似乎对我添加的内容做出了响应,试图将 + 和 - 符号居中(如果我使用 \left( 和 \right) ,则包括括号)扭曲了正常外观。
下面是我希望得到的经过 Photoshop 处理的版本:
基本上,我想要的是方程式忽略箭头并进行排版,就好像它们不存在一样(当然,垂直间距不会与顶部或底部的其他线或方程式叠加)。
我设法创建了一个名为 \dtendto[]{} 的新命令,它的作用相同,只是箭头指向东南而不是东北,但我认为两者的解决方案是相同的,为了不使帖子变长,我省略了它。
提前致谢,
答案1
评论
我添加了inner xsep=0pt
和outer sep=0pt
,并且还限制了边界框。
在我的编辑中,我删除了calc
库,因为它不是真正需要的。此外,我设置了inner sep=0pt
节点和shorten <=.3333em
箭头,以保留数字和箭头之间的间距,同时取消数字下方的额外空间。
我用可扩展单位(ex
和em
)替换了所有值。
此外,您不需要宏,因为它在您的实现中\canc
始终是默认的。\scriptstyle
执行
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz,cancel}
\renewcommand{\CancelColor}{\color{red}}
\newcommand*\dtendto[2][0]{%
\begin{tikzpicture}[baseline=(a.base),every node/.style={inner sep=0pt,outer sep=0pt}]
\node (a) {$#2$};
\path[red] (a.south) node (b) at +(0.5em,-3ex) {$\scriptstyle #1$};
\draw[->,red,shorten <=.3333em,shorten >=.3333em] (a) -- (b);
\pgfresetboundingbox
\path[use as bounding box] (a.north west) rectangle (a.south east |- b.south);
\end{tikzpicture}
}
\newcommand*\utendto[2][0]{%
\begin{tikzpicture}[baseline=(a.base),every node/.style={inner sep=0pt,outer sep=0pt}]
\node (a) {$#2$};
\path[red] (a.north) node (b) at +(0.5em,3ex) {$\scriptstyle #1$};
\draw[->,red,shorten <=.3333em,shorten >=.3333em] (a) -- (b);
\pgfresetboundingbox
\path[use as bounding box] (a.south west) rectangle (a.north east |- b.north);
\end{tikzpicture}
}
\begin{document}
\fbox{
$\displaystyle
\lim_{x\to\infty} \frac{\bcancel{x^5}\cdot(\utendto[2]{2}
-\utendto[0]{\frac{3}{x^2}} +
\utendto[0]{\frac{2}{x^4}})}{\bcancel{x^5}\cdot\left(\dtendto[4]{4} + \frac{5}{x}
-\frac{100}{x^5}\right)}
$
}
\end{document}
输出
在实际输出中,边界框不会突出显示。我只是为了说明目的而将它们涂成绿色。