
Diese Frage basiert auf einer vorherigen Frage:Zellen in einer Tabelle vertikal einrahmen
Ich möchte Zellen genau so einrahmen und die Antwort auf die vorherige Frage funktioniert wunderbar – außer wenn die Zellen leer sind oder unten im Feld weniger Text enthalten. Sehen Sie sich das an:
Irgendeine Idee, wie man das beheben kann? (Ich habe verschiedene Spaltenspezifikationen probiert – ändert nichts.) Wie sage ich Tikzmark, dass es die äußerste rechte Position in jeder Zelle markieren soll, egal ob sie leer oder mit Text gefüllt ist?Ich wäre für jede Hilfe sehr dankbar.
\documentclass{article}
\usepackage{tikz}
\usepackage{booktabs}
\usetikzlibrary{calc}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\newcommand{\DrawBox}[3][]{%
\tikz[overlay,remember picture]{
\draw[black,#1]
($(#2)+(-0.5em,2.0ex)$) rectangle
($(#3)+(0.75em,-0.75ex)$);}
}
\begin{document}
\begin{tabular}{*{7}{c}}\toprule
Col 1 & Col 2 & Col 3 & Col 4 & Col 5 & Col 6 & Col 7 \\ \cmidrule(lr){2-6}
0 & 1 & \tikzmark{top left 1}abcd more text & 0 & 0 & 0 & 1 \\
1 & 0 & www & 0 & 0 & 0 & 1 \\
0 & 1 & \tikzmark{bottom right 1} & 1 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\DrawBox[ultra thick, red]{top left 1}{bottom right 1}
\end{document}
Antwort1
Füllen Sie die leere Zelle:
\documentclass{article}
\usepackage{tikz}
\usepackage{booktabs}
\usetikzlibrary{calc}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\newcommand{\DrawBox}[3][]{%
\tikz[overlay,remember picture]{
\draw[black,#1]
($(#2)+(-0.5em,2.0ex)$) rectangle
($(#3)+(0.75em,-0.75ex)$);}
}
\begin{document}
\begin{tabular}{*{7}{c}}\toprule
Col 1 & Col 2 & Col 3 & Col 4 & Col 5 & Col 6 & Col 7 \\ \cmidrule(lr){2-6}
0 & 1 & \tikzmark{top left 1}abcd more text & 0 & 0 & 0 & 1 \\
1 & 0 & www & 0 & 0 & 0 & 1 \\
0 & 1 & \hspace*{\fill}\tikzmark{bottom right 1} & 1 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\DrawBox[ultra thick, red]{top left 1}{bottom right 1}
\end{document}
Antwort2
Mit {NiceTabular}
von nicematrix
.
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\usepackage{booktabs}
\begin{document}
\begin{NiceTabular}{*{7}{c}}
\toprule
Col 1 & Col 2 & Col 3 & Col 4 & Col 5 & Col 6 & Col 7 \\
\cmidrule(lr){2-6}
0 & 1 & \Block[tikz={offset=3pt,draw=red}]{3-1}{} abcd more text & 0 & 0 & 0 & 1 \\
1 & 0 & www & 0 & 0 & 0 & 1 \\
0 & 1 & & 1 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{NiceTabular}
\end{document}