Ist es möglich, einen Overlay-Tikz-Knoten auf die Kreuzungsregeln einer Tabelle zu setzen? Ich habe es versucht, aber der Teil mit dem Merken von Bildern funktioniert nicht.
\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}
Antwort1
Wir kennen die Mindesthöhe und -tiefe einer Zeile, aber das gibt uns nicht die Höhe und Tiefe einer bestimmten Zeile an, da diese große Einträge enthalten kann. Wenn wir eine Zeile erstellen, die nur Tikzmarks enthält, können wir sie mit einem negativen vskip mit der nächsten Zeile überlagern.
Beachten Sie, dass @{} mehrere Koordinaten mit demselben Namen generiert. Nur die letzte zählt.
Eine Tikz-Matrix wäre einfacher gewesen.
\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}
Antwort2
Das Paket nicematrix
übernimmt diese Aufgabe (erstellt tatsächlich nicematrix
diese Knoten und verwendet sie, um weitere Funktionen bereitzustellen).
\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}
Die PGF/Tikz-Knoten befinden sich (sollte so sein) in der Mitte der Regeln.