Я хочу изобразить следующее LaTeX
(конечно, так, чтобы это выглядело красивее):
На данный момент я достиг следующего.
\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}
Я не могу контролировать стрелки, и, похоже, они имеют тенденцию заканчиваться в одной определенной точке. Как мне выбрать, где может быть конечная точка? Или, может быть, что-то в LaTeX, что автоматически задает некоторый путь для стрелок, чтобы они пересекали наименьшее количество мест на рисунке?
решение1
Вот версия без tikzmark, которая работает путем назначения разных имен узлам, которые вы уже создаете в \circled
команде.
\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}