Обрамление ПУСТЫХ ячеек в таблице

Обрамление ПУСТЫХ ячеек в таблице

Этот вопрос основан на предыдущем вопросе:Вертикальное обрамление ячеек в таблице

Я бы хотел обрамить ячейки именно так, и ответ на предыдущий вопрос работает прекрасно – за исключением случаев, когда ячейки пустые или содержат меньше текста в нижней части поля. Смотрите это: введите описание изображения здесь

Есть идеи, как это исправить? (Я пробовал разные спецификации столбцов — ничего не меняется.) Как мне заставить tikzmark отмечать крайнюю правую позицию в любой ячейке, пустой или заполненной текстом?Любая помощь приветствуется.

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

решение1

Заполните пустую ячейку:

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

введите описание изображения здесь

решение2

С {NiceTabular}из 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}

Вывод кода выше

Связанный контент