Замечания

Замечания

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

Выход

В реальном выводе ограничивающие рамки не будут подсвечены. Я просто покрасил их в зеленый цвет для наглядности.

введите описание изображения здесь

Связанный контент