Tacha celdas arbitrarias de la tabla con una línea diagonalmuestra una forma de tachar celdas individuales. ¿Es posible tachar una celda que abarca varias filas y/o varias columnas?
Editar: Esto no está duplicado porque necesito que lo tache exactamente con una línea, mientras que esa pregunta debe tachar la celda con una cruz real. Sé que esto puede ser muy simple para algunos, pero para mí es casi completamente opaco (cómo cambiarlo).
Respuesta1
Lo que sigue es sólo una rápida adaptación dela solución aquí.
\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{zref-savepos}
\usepackage{multirow}
\newcounter{NoTableEntry}
\renewcommand*{\theNoTableEntry}{NTE-\the\value{NoTableEntry}}
\newcommand*{\smulticolumn}[3]{%
\multicolumn{#1}{#2}{%
\scell{#3}
}%
}
\newcommand*{\smultirow}[3]{%
\multirow{#1}{#2}{%
\scell{#3}
}%
}
\newcommand*{\scell}[1]{
\stepcounter{NoTableEntry}%
\vadjust pre{\zsavepos{\theNoTableEntry t}}% top
\vadjust{\zsavepos{\theNoTableEntry b}}% bottom
\zsavepos{\theNoTableEntry l}% left
\hspace{0pt plus 1filll}%
#1% content
\hspace{0pt plus 1filll}%
\zsavepos{\theNoTableEntry r}% right
\tikz[overlay]{%
\draw
let
\n{llx}={\zposx{\theNoTableEntry l}sp-\zposx{\theNoTableEntry r}sp-\tabcolsep},
\n{urx}={\tabcolsep},
\n{lly}={\zposy{\theNoTableEntry b}sp-\zposy{\theNoTableEntry r}sp},
\n{ury}={\zposy{\theNoTableEntry t}sp-\zposy{\theNoTableEntry r}sp}
in
(\n{llx}, \n{lly}) -- (\n{urx}, \n{ury})
;
}%
}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
foo & bar & baz \\\hline
\smulticolumn{2}{|c|}{double} & B \\\hline
C & D & \smultirow{2}{*}{$\delta$} \\
E & F & \\\hline
\end{tabular}
\end{document}
Desafortunadamente, no funciona muy bien para varias filas, pero al menos parece un punto de partida razonable.
Respuesta2
Podrías usar \tikzmark
.
Creo que hay una manera de calcular el posicionamiento exacto automáticamente, pero está por encima de mi nivel de conocimiento.
Si tienes pocas celdas para tachar, puedes calcularlo manualmente con prueba y error (como hice yo) sin grandes problemas.
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{tikzmark, calc}
\usepackage{array}
\usepackage{multirow}
\setlength{\extrarowheight}{2pt}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
foo & bar & baz \\
\hline
\multicolumn{2}{|c|}{\tikzmark{smc}\hfill double\hfill\tikzmark{emc}} & B \\
\hline
C & D & \tikzmark{smr}\multirow{2}{*}{$\delta$}\tikzmark{smr} \\
E & F & \\
\hline
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw ($(pic cs:smc)-(\tabcolsep,3.6pt)$) -- ($(pic cs:emc)+(\tabcolsep,10.4pt)$);
\draw ($(pic cs:smr)-(16pt,17.6pt)$) -- ($(pic cs:emr)+(-3.7pt,2.2pt)$);
\end{tikzpicture}
\end{document}
Tenga en cuenta que \tikzmark
debe colocarse dentro del \multicolumn
, consulteaquí.