Wie erhält man die gewünschten und ansprechenden Pfade für gebogene Pfeile innerhalb einer Tabelle oder steuert deren Endpunkte?

Wie erhält man die gewünschten und ansprechenden Pfade für gebogene Pfeile innerhalb einer Tabelle oder steuert deren Endpunkte?

Ich möchte folgendes einzeichnen LaTeX(natürlich in einer Weise, die schöner aussieht):

Bildbeschreibung hier eingeben

Bisher habe ich Folgendes erreicht.

\documentclass{article}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{% <---- BEWARE
            \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\usetikzlibrary{tikzmark}

\begin{document}
  \begin{tabular}{cccccccc}
\cline{4-5}
 & & & \multicolumn{1}{|c}{\circled{M1}}\tikzmark{b} & \multicolumn{1}{|c|}{M2} & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} & & & \\
\cline{4-5}
 & & &  &  & & & \\
\cline{1-2}\cline{4-5}\cline{7-8}
\multicolumn{1}{|c|}{\circled{M1}}\tikzmark{a}&\multicolumn{1}{c|}{M2} & & \multicolumn{1}{|c}{\circled{M1}}\tikzmark{x} & \multicolumn{1}{|c|}{M2} & & \multicolumn{1}{|c}{\circled{M1}}\tikzmark{c} & \multicolumn{1}{|c|}{M2} \\
\cline{1-2}\cline{4-5}\cline{7-8}
\multicolumn{1}{|c|}{R1}&\multicolumn{1}{c|}{R2} & & R1 & R2 & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} \\
\cline{1-2}\cline{4-5}\cline{7-8}
 & & &  &  & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{\circled{M1}}\tikzmark{d} & \multicolumn{1}{|c|}{M2} & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} & & & \\
\cline{4-5}
  \end{tabular}
  \begin{tikzpicture}[overlay, remember picture, yshift=.25\baselineskip, shorten >=.5pt, shorten <=.5pt]
    \draw [->] ({pic cs:a}) [bend right] to ({pic cs:x});
    \draw [->] ({pic cs:b}) [bend right] to ({pic cs:x});
    \draw [->] ({pic cs:c}) [bend right] to ({pic cs:x});
    \draw [->] ({pic cs:d}) [bend right] to ({pic cs:x});
  \end{tikzpicture}
\end{document}

Ich kann die Pfeile nicht steuern und es scheint, dass sie dazu neigen, an einem bestimmten Punkt zu enden. Wie kann ich den Endpunkt auswählen? Oder vielleicht etwas in LaTeX, das automatisch einen Pfad für die Pfeile festlegt, sodass sie sich an möglichst wenigen Stellen in der Abbildung kreuzen?

Antwort1

Hier ist eine Version ohne Tikzmark, die funktioniert, indem den Knoten, die Sie bereits im \circledBefehl erstellen, unterschiedliche Namen zugewiesen werden.


\documentclass{article}
%\url{https://tex.stackexchange.com/q/563076/86}
\usepackage{tikz}
\newcommand*\circled[2][char]{\tikz[baseline=(#1.base),remember picture]{% <---- BEWARE
            \node[shape=circle,draw,inner sep=2pt] (#1) {#2};}}

\begin{document}
  \begin{tabular}{cccccccc}
\cline{4-5}
 & & & \multicolumn{1}{|c}{\circled[b]{M1}} & \multicolumn{1}{|c|}{M2} & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} & & & \\
\cline{4-5}
 & & &  &  & & & \\
\cline{1-2}\cline{4-5}\cline{7-8}
\multicolumn{1}{|c|}{\circled[a]{M1}}&\multicolumn{1}{c|}{M2} & & \multicolumn{1}{|c}{\circled[x]{M1}}& \multicolumn{1}{|c|}{M2} & & \multicolumn{1}{|c}{\circled[c]{M1}} & \multicolumn{1}{|c|}{M2} \\
\cline{1-2}\cline{4-5}\cline{7-8}
\multicolumn{1}{|c|}{R1}&\multicolumn{1}{c|}{R2} & & R1 & R2 & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} \\
\cline{1-2}\cline{4-5}\cline{7-8}
 & & &  &  & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{\circled[d]{M1}} & \multicolumn{1}{|c|}{M2} & & & \\
\cline{4-5}
 & & & \multicolumn{1}{|c}{R1} & \multicolumn{1}{|c|}{R2} & & & \\
\cline{4-5}
  \end{tabular}
  \begin{tikzpicture}[overlay, remember picture, yshift=.25\baselineskip, shorten >=.5pt, shorten <=.5pt]
    \draw [->] (a) [bend right] to (x);
    \draw [->] (b) [bend right] to (x);
    \draw [->] (c) [bend right] to (x);
    \draw [->] (d) [bend right] to (x);
  \end{tikzpicture}
\end{document}

Gitter mit Pfeilen dazwischen

verwandte Informationen