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:
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}
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}
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 tikzmark
s 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}