
Я пытаюсь добавить стрелки к математическим выражениям (особенно в пределах), чтобы отметить, что есть значение, назначенное определенному члену при решении предела. Я сталкивался с пакетом отмены и его командой \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) ), искажая нормальный вид.
А вот отфотошопленная версия того, как бы я хотел, чтобы это выглядело:
По сути, я хочу, чтобы уравнение игнорировало стрелки и было набрано так, как будто их нет (конечно, за исключением того, чтобы вертикальный интервал не накладывался на другие строки или уравнения сверху или снизу).
Мне удалось создать новую команду под названием \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}
Выход
В реальном выводе ограничивающие рамки не будут подсвечены. Я просто покрасил их в зеленый цвет для наглядности.