为了在单元格中画出对角线,我从表格单元格中的对角线
在我决定使用多行之前,适合我的情况的代码运行良好。
这是 MWE。
\documentclass{article}
\usepackage{multirow}
\usepackage{tikz}
\newcommand\diag[4]{%
\multicolumn{1}{p{#2}|}{\hskip-\tabcolsep
$\vcenter{\begin{tikzpicture}[baseline=0,anchor=south west,inner sep=#1]
\path[use as bounding box] (0,0) rectangle (#2+2\tabcolsep,\baselineskip);
\node[minimum width={#2+2\tabcolsep},minimum height=\baselineskip+\extrarowheight] (box) {};
\draw (box.north west) -- (box.south east);
\node[anchor=south west] at (box.south west) {#3};
\node[anchor=north east] at (box.north east) {#4};
\end{tikzpicture}}$\hskip-\tabcolsep}}
\begin{document}
\begin{tabular}[t]{|c|c|c|}
\hline
\multirow{2}{*}{\diag{.1em}{.5cm}{$a$}{$i$}}&\multicolumn{2}{c|}{A}\\\cline{2-2}
&1\\
\end{tabular}
\end{document}
这会产生一条错误消息,
! Misplaced \omit. \multispan ->\omit
\@multispan l.20 ...ultirow{2}{*}{\diag{.1em}{.5cm}{$a$}{$i$}}
&\multicolumn{2}{c|}{A}\\\...
如果我省略该\multirow
部分,效果就会很好。
答案1
然而,正如评论中指出的那样,您不能\multicolumn
在这里使用,因为它只跨越 1 个单元格,所以您不需要\multicolum
而只需使用\parbox
。
图片生成了 12pt 的超满框警告,因为2\tabcolsep
被考虑了两次,所以我删除了这个数量的内部添加。
位于A
多列{2}中,因此我将其放入1
以进行匹配,否则内容就不会对齐。
代码需要array
添加您所使用的包,\extrarowheight
该包由该包定义。
\documentclass{article}
\usepackage{multirow,array}
\usepackage{tikz}
\newcommand\diag[4]{%
% \multicolumn{1}{p{#2}|}
\parbox[t]{#2}%
{\hskip-\tabcolsep
$\vcenter{\begin{tikzpicture}[baseline=0,anchor=south west,inner sep=#1]
\path[use as bounding box] (0,0) rectangle (#2,\baselineskip);
\node[minimum width={#2+2\tabcolsep},minimum height=\baselineskip+\extrarowheight] (box) {};
\draw (box.north west) -- (box.south east);
\node[anchor=south west] at (box.south west) {#3};
\node[anchor=north east] at (box.north east) {#4};
\end{tikzpicture}}$\hskip-\tabcolsep}}
\begin{document}
\begin{tabular}[t]{|c|c|c|}
\hline
\multirow{2}{*}{\diag{.1em}{.5cm}{$a$}{$i$}}&\multicolumn{2}{c|}{A}\\\cline{2-3}
&\multicolumn{2}{c|}{1}\\
\end{tabular}
\end{document}