Einrahmen von leeren Zellen in einer Tabelle

Einrahmen von leeren Zellen in einer Tabelle

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: Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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}

Ausgabe des obigen Codes

verwandte Informationen