¿Cómo colocar el nodo de superposición tikz en 4 esquinas de cada cuadro tabular?

¿Cómo colocar el nodo de superposición tikz en 4 esquinas de cada cuadro tabular?

¿Es posible superponer el nodo tikz en las reglas de cruce de una tabla? Lo intenté, pero la parte de recordar imagen no funciona.

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

Respuesta1

Conocemos la altura y profundidad mínimas de una fila, pero eso no nos da la altura y profundidad de una fila en particular, ya que puede contener entradas grandes. Si creamos una fila que no contiene nada más que tikzmarks, entonces podemos usar un vskip negativo para superponerla con la siguiente fila.

Tenga en cuenta que @{} genera múltiples coordenadas con el mismo nombre. Sólo el último cuenta.

Una matriz tikz hubiera sido más fácil.

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

manifestación

Respuesta2

El paquete nicematrixhace ese trabajo (de hecho, nicematrixcrea esos nodos y los utiliza para proporcionar funcionalidades adicionales).

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

Los nodos PGF/Tikz están en el medio de las reglas (por diseño).

Salida del código anterior

información relacionada