我正在尝试使用矩阵 TikZlibrary 制作表格。问题是高度不匹配。
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{matrix}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{tikzpicture}
\matrix (M) [
matrix of nodes,
column sep=0mm,
row sep=0cm,
nodes={
draw,
line width=1pt,
anchor=south,
minimum height=8mm
},
column 1/.style={
nodes={
text width=3cm,
minimum width=3cm,
fill=yellow
}
},
column 2/.style={
nodes={
text width=4cm,
minimum width=4cm,
}
}
]{
Short text & Longer text. Spanning over several lines \\
Short text & Another long text. Spanning over even more lines...\\
};
\end{tikzpicture}
\end{document}
答案1
您可以将minimum height
的设置nodes
为至少与最高节点一样大的值。16mm
对于此示例来说已经足够了。
如果您希望不同行具有不同的高度,则可以使用与示例中使用的样式row n
类似的样式。例如column n
row 1/.style={
nodes={
minimum height=10mm
}
},
请注意,您应该在column n
样式之前添加这些内容。
另一件需要注意的事情是,每个单元格周围的线条不重叠,导致单元格之间的线条宽度加倍。将row sep
和设置col sep
为-1pt
可解决此问题。
当然,您也可以改用tabular
。表格中的线条有时会消失,这通常只是查看器的问题——线条还在,但彩色区域会贴到像素边界,从而遮盖线条(例如,参见遮蔽单元格时缺少线条)。如果放大,您可能会看到线条,这些线条也应该出现在印刷品中。
在下面的代码中,我稍微增加了表格规则的宽度。(参见带有厚规则的美观表格)
\documentclass{article}
\usepackage[table]{xcolor}
\setlength{\arrayrulewidth}{1pt}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tabular}{|>{\cellcolor{yellow}}m{3cm} | >{\raggedright\arraybackslash} m{4cm} |}
\hline
Short text & Longer text. Spanning over several lines \\ \hline
Short text & Another long text. Spanning over even more lines... \\ \hline
\end{tabular}
\begin{tikzpicture}
\matrix (M) [
matrix of nodes,
column sep=0mm,
row sep=0cm,
nodes={
draw,
line width=1pt,
anchor=south,
},
row 1/.style={
nodes={
minimum height=10mm
}
},
row 2/.style={
nodes={
minimum height=20mm
}
},
column 1/.style={
nodes={
text width=3cm,
minimum width=3cm,
fill=yellow
}
},
column 2/.style={
nodes={
text width=4cm,
minimum width=4cm,
}
}
]{
Short text & Longer text. Spanning over several lines \\
Short text & Another long text. Spanning over even more lines...\\
};
\end{tikzpicture}
\end{document}