Можно ли наложить узел tikz на правила пересечения табличного. Я пробовал, но часть с запоминанием картинки не работает.
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx,xparse,hhline}
\usetikzlibrary{calc}
\newcommand{\tikzmark}[1]{%
\tikz[overlay,remember picture,baseline=(#1)]\coordinate (#1) ;
}
\begin{document}
\begin{tabular}{cc}\hhline{\tikzmark{A}--}
A&B \\\hhline{-\tikzmark{B}-}
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\fill (A) rectangle (B) ;
\end{tikzpicture}
\end{document}
решение1
Мы знаем минимальную высоту и глубину одной строки, но это не дает нам высоту и глубину конкретной строки, поскольку она может содержать большие записи. Если мы создаем строку, содержащую только tikzmarks, то мы можем использовать отрицательный vskip, чтобы наложить ее на следующую строку.
Обратите внимание, что @{} генерирует несколько координат с одинаковым именем. Учитывается только последняя.
Матрица tikz была бы проще.
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx,xparse,hhline}% only tikz is needed here
\usetikzlibrary{calc}
\newcommand{\tikzmark}[2][0pt]% #1 = y offset (optional), #2 = coordinate name
{\tikz[overlay,remember picture]\coordinate (#2) at (0pt,#1);}
\newcommand{\tikzrowmark}[2]% #1 = number of columns, #2 = coordinate name
{\multicolumn{#1}{c}{\tikzmark[\arraystretch\ht\strutbox]{#2}}%
\\[\dimexpr -\arraystretch\ht\strutbox-\arraystretch\dp\strutbox]}%
\begin{document}
\begin{tabular}{|@{\tikzmark{A west}\hspace{\tabcolsep}}c@{\hspace{\tabcolsep}\tikzmark{A east}}|c|}
\hline
\tikzrowmark{2}{A north}
A&B \\
\tikzrowmark{2}{A south}
\hline
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\fill[yellow] (A west |- A north) rectangle (A east |- A south) ;
\end{tikzpicture}
\end{document}
решение2
Пакет nicematrix
выполняет эту работу (фактически, nicematrix
создает эти узлы и использует их для предоставления дополнительных функций).
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arrayrulewidth}{1pt}
\begin{NiceTabular}{cc}[hvlines,name=MyTable]
A & B
\end{NiceTabular}
\begin{tikzpicture}[overlay,remember picture,name prefix = MyTable-]
\fill [yellow] (1-|1) rectangle (2-|2) ;
\end{tikzpicture}
\end{document}
Узлы PGF/Tikz находятся в середине правил (по замыслу).