Como escrever uma seta entre dois símbolos na fórmula?

Como escrever uma seta entre dois símbolos na fórmula?

Como devo escrever uma seta entre dois símbolos na fórmula?

Atualmente estou fazendo um relatório com álgebra relacional e normalização para bancos de dados, e o que preciso fazer é representar uma dependência entre dois elementos de uma mesma tabela, algo assim:

insira a descrição da imagem aqui

Observe que esta seta também pode ser de a a d, ou podem ser múltiplos uns na mesma expressão, como a a e e a a d e c a e.

Existe uma maneira de fazer isso?

Responder1

Uma solução com pstricks: os elementos a serem vinculados são definidos como nós e adiciono conexões de nós:

 \documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pst-node}
\usepackage{auto-pst-pdf}

    \begin{document}

\[ \begin{pspicture}
 T_{3,1}(\Rnode{d}{d}, \Rnode{e}{e}, \Rnode{a}{a}, \Rnode{c}{c})
 \psset{linewidth=0.4pt, linejoin=1, arrows=->, arrowinset=0.15, angle=90, nodesep=1pt, arm=1.1ex}
 \ncbar[offsetA=1pt]{a}{e} \ncbar[offsetA=-1pt, arm=1.3ex, nodesepB=-1pt]{a}{d}\ncbar[angle=-90]{c}{e}
 \end{pspicture} \]

  \end{document} 

insira a descrição da imagem aqui

Responder2

Uma solução TikZ pura:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\newcommand{\mypoint}[2]{\tikz[remember picture]{\node[inner sep=0pt](#1){$#2$};}}

\begin{document}
    \[
    T_{3,1}(d,\mypoint{tohere}{e},\mypoint{fromhere}{a},c)
    \]

    \tikz[overlay, remember picture]{\draw[-{Stealth[round]}] ([yshift=2pt]fromhere.north) -- ++(0,7pt) -| ([yshift=2pt]tohere.north);}

\end{document}

insira a descrição da imagem aqui

Responder3

Se você quiser apenas colocar uma seta sobre duas letras vizinhas, você pode usar \overset. Mas isso não funcionará se uma das letras fizer parte de uma seção sublinhada.

Outra abordagem (mas bastante semelhante àesses) usando tikzmarks poderia ser:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}

$T_{3,1}(d,\overset{\curvearrowleft}{e,a},c)$

\bigskip

$T_{3,1}(\underline{d,e\tikzmark{e}},a\tikzmark{a},c)$
\tikz[overlay,remember picture]{ \draw[<-] ([xshift=-.5ex,yshift=1.5ex]pic cs:e) to[bend left=60] ([xshift=-.5ex,yshift=1.5ex]pic cs:a); }

\bigskip

$T_{3,1}(\underline{d\tikzmark{d},e},a\tikzmark{aa},c)$
\tikz[overlay,remember picture]{ \draw[<-] ([xshift=-.5ex,yshift=2ex]pic cs:d) to[bend left] ([xshift=-.5ex,yshift=2ex]pic cs:aa); }


\end{document}

insira a descrição da imagem aqui

informação relacionada