setas em equações com TikZ

Sep 09 2020

Estou tentando adicionar setas em meus documentos, da mesma forma que faria em meus papéis (ou seja, notas manuscritas). Eu adoraria indicar a resposta para alguma aritmética extensa colocando uma seta do número da equação (marcada ou não) de volta à resposta final. Por favor, veja o MWE abaixo.

\documentclass{article}

\usepackage{amsmath,tikz}

\newcommand{\myanswer}{%
    \begin{tikzpicture}%
    \hspace{0.25cm} \draw [<-] (0,0) -- (5,0);
    \end{tikzpicture}\tag{{\LARGE{$\star$}}}%
}

\begin{document}

I'd love to change the solution of
\begin{align} A &= x + y - z \nonumber \\ &= 5 + (-2) - (-0.3) \nonumber \\ &= 3.3 \end{align} to this, \begin{align} A &= x + y - z \nonumber \\ &= 5 + (-2) - (-0.3) \nonumber \\ &= 3.3 \myanswer \end{align}

... but with the equation kept centered and fill only the space between the ``answer'' and the tagged equation with an arrow.

\end{document}

Qualquer / toda a ajuda é muito apreciada.

Respostas

3 Noname Sep 09 2020 at 07:50

Para questões como esta tikzmark é seu amigo: você pode criar uma marca no final da equação e, em seguida, desenhar sua flecha de dentro de um \tagcomando. Por exemplo, uma maneira de automatizar isso é com:

\newcommand\Tag[1]{%
  \tikzmark{mytag}%
  \tag{\tikz[remember picture]{%
  \draw[overlay, ->](-0.5,0)--(pic cs:mytag)}\Large$#1$}%
}

Este comando é usado como \Tag{\star}.

Na verdade, este comando não é suficiente, pois o nome da tag não é dinâmico. Meu pensamento inicial era usar o equationcontador, mas isso não funciona porque \tagnão incrementa a equação. Em vez disso, vamos definir um novo contador, digamos Tag, e usá-lo para os rótulos internos \tikzmark.

Isso é o suficiente para definir o comando básico, mas vamos um pouco além e adicionar um argumento opcional para estilizar a seta TikZ . Também seria bom ser capaz de desenhar essas setas a partir de um número de equação, que deve ser o padrão. Como já temos um argumento opcional para definir o estilo da seta, podemos usar o \NewDocumentCommandcomando xparse para exigir um segundo argumento opcional entre parênteses para substituir o número da equação por um símbolo, como \star. Ou seja, \Tagvai desenhar uma seta do número da equação, \Tag(\star)vai desenhar de ae \starentão \Tag[red]e \Tag[red](\star), respectivamente, vai colorir essas setas de vermelho.

Com isso instalado, o MWE abaixo produz:

Aqui está o código completo.

\documentclass{article}

\usepackage{amsmath,tikz,xparse}
\usetikzlibrary{tikzmark, arrows.meta}
\usetikzlibrary{decorations.pathmorphing} % for the coil

\newcounter{Tag}
\tikzset{
   Tag/.style = {% default styling for the \Tag arrow
        arrows=-{LaTeX},
        blue
   }
}
\NewDocumentCommand\Tag{ O{} d() }{%
  \refstepcounter{Tag}         % increment Tag counter for unique tags
  \tikzmark{tagging \theTag}   % create the tikzmark
  \tag{\tikz[remember picture,overlay]{% tag equation and point to mark
    \draw[Tag, #1](-0.2,0.1)--([shift={(0.2,0.1)}]pic cs:tagging \theTag);}{%
      \IfNoValueTF{#2}{\refstepcounter{equation}\theequation}{$#2$}
    }%
  }%
}

\begin{document}

  \begin{align} A &= x + y - z \Tag \\ &= 5 + (-2) - (-0.3)\Tag[red](\star) \\ &= 3.3 \Tag[orange,decorate,decoration={coil,aspect=0}](\ast) \end{align}

\end{document}

Observe que criei um Tagestilo \tikzsetpara tornar mais fácil o estilo da seta. Por padrão, LaTeXpontas de seta são usadas e a seta é azul. Além disso, como sempre acontece quando você usa o tikzmark , é necessário compilar o documento duas vezes antes que as marcas comecem a funcionar.