用對角線劃掉任一表格儲存格展示了一種劃掉單一細胞的方法。是否可以劃掉跨多行和/或多列的儲存格?
編輯:這不是重複的,因為我需要它只是用一行完全劃掉它,而該問題需要用實際的十字劃掉單元格。我知道這對某些人來說可能非常簡單,但對我來說幾乎完全不透明(如何更改它)。
答案1
以下只是一個快速改編解決方案在這裡。
\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}
不幸的是,它對於多行來說效果不佳,但至少看起來是一個合理的起點。
答案2
你可以使用\tikzmark
.
我認為有一種方法可以自動計算精確定位,但這超出了我的知識水平。
如果您需要劃掉的單元格很少,您可以透過反覆試驗手動計算(就像我一樣),不會出現大問題。
\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}
注意\tikzmark
必須放在 裡面\multicolumn
,參見這裡。