Как написать стрелку между двумя символами в формуле?

Как написать стрелку между двумя символами в формуле?

Как мне написать стрелку между двумя символами в формуле?

В настоящее время я работаю над отчетом с использованием реляционной алгебры и нормализации для баз данных, и мне нужно представить зависимость между двумя элементами в одной таблице, что-то вроде этого:

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

Обратите внимание, что эта стрелка может быть направлена ​​и от a к d, или их может быть несколько в одном выражении, например, от a к e, от a к d и от c к e.

Есть ли способ сделать это?

решение1

Решение с pstricks: элементы, которые нужно связать, определяются как узлы, и я добавляю соединения узлов:

 \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} 

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

решение2

Чистое решение TikZ:

\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}

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

решение3

Если вы хотите поместить стрелку только над двумя соседними буквами, вы можете использовать \overset. Но это не сработает, если одна из букв является частью подчеркнутого раздела.

Другой подход (но довольно похожий наэти) с использованием tikzmarks может быть:

\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}

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

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