如何使 TikZ 矩阵匹配高度?

如何使 TikZ 矩阵匹配高度?

我正在尝试使用矩阵 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}

相关内容