表の交差ルールにオーバーレイ 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
1 行の最小の高さと深さはわかっていますが、特定の行には大きなエントリが含まれている可能性があるため、特定の行の高さと深さはわかりません。tikzmark のみを含む行を作成する場合は、負の 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 ノードはルールの中央にあります (設計による)。