Wie schreibe ich in einer Formel einen Überpfeil zwischen zwei Symbole?
Ich erstelle derzeit einen Bericht über relationale Algebra und Normalisierung für Datenbanken und muss dabei eine Abhängigkeit zwischen zwei Elementen in derselben Tabelle darstellen, etwa so:
Beachten Sie, dass dieser Pfeil auch von a nach d zeigen könnte oder dass im selben Ausdruck mehrere davon vorkommen könnten, beispielsweise von a nach e und von a nach d und von c nach e.
Gibt es eine Möglichkeit, dies zu tun?
Antwort1
Eine Lösung mit pstricks
: Die zu verknüpfenden Elemente werden als Knoten definiert und ich füge Knotenverbindungen hinzu:
\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}
Antwort2
Eine reine TikZ-Lösung:
\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}
Antwort3
Wenn Sie nur einen Pfeil über zwei benachbarte Buchstaben setzen möchten, können Sie verwenden \overset
. Dies funktioniert jedoch nicht, wenn einer der Buchstaben Teil eines unterstrichenen Abschnitts ist.
Ein anderer Ansatz (der aber sehr ähnlich istdiese) mit tikzmark
s könnte sein:
\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}