tikz 矩阵看起来像基本表格

tikz 矩阵看起来像基本表格

我已经能够让 tikz 矩阵看起来像基本表格,但这意味着使用“文本高度=...”和“文本深度=...”,每次使用新字体或不同字体大小时都需要重新调整。使用“最小高度=...”和“节点={锚点=中心}”时的问题在于水平对齐被破坏。如果没有“节点={锚点=中心}”,单元格大多数时候都不会对齐(这取决于单元格的内容),但文本会对齐。

\documentclass[a4paper]{article}

\usepackage[verbose,vmargin=30mm,hmargin=20mm]{geometry}

\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}

\usepackage{tikz}
\usetikzlibrary{positioning, matrix,calc}

\tikzset{
  allmatrix/.style = {matrix of nodes, nodes in empty cells,
                    row sep=-\pgflinewidth, column sep=-\pgflinewidth,}}

\setlength{\parindent}{0pt}
\begin{document}

\begin{tikzpicture}
\matrix at (0,0) [allmatrix,matrix anchor=north west,inner sep=0pt,nodes={
inner sep=3pt,outer sep=0pt,draw,minimum height=6mm,text width=4mm}]{
a & b & c \\
d & e & f \\
};
\end{tikzpicture}
\par
\begin{tabular}{|l|l|l|}
\hline
a & b & c \\
\hline
d & e & f \\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

答案1

您需要定义文本高度和节点锚点。例如,如以下示例所示:

\documentclass[a4paper]{article}
\usepackage[verbose,
            vmargin=30mm,hmargin=20mm]{geometry}

\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}

\usepackage{tikz}
\usetikzlibrary{matrix}

\tikzset{
  allmatrix/.style = {matrix of nodes, 
                      nodes in empty cells,
                      row sep=-\pgflinewidth, 
                      column sep=-\pgflinewidth}
        }

\setlength{\parindent}{0pt}
\begin{document}

\matrix at (0,0) [allmatrix,
                  matrix anchor=north west,
                  inner sep=0pt,
                  nodes={draw,
                         text height=2.4ex, 
                         text depth=1ex, 
                         text width=6mm, align=center,
                         anchor=center}
                  ]
{
a & b & c \\
d & e & f \\
};
\end{tikzpicture}
\par
\begin{tabular}{|l|l|l|}
\hline
a & b & c \\
\hline
d & e & f \\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

答案2

环境是在单元格、行和列下创建 PGF/Tikz 节点{NiceTabular}的环境(包的环境)。nicematrix{tabular}array

以下是一个例子:

\documentclass[a4paper]{article}
\usepackage{nicematrix,tikz}

\begin{document}
Here is a classical \verb|{tabular}| (of the package \verb|array|).
\begin{tabular}{|c|c|c|}
\hline
a & b & c \\
\hline
d & e & f \\
\hline
\end{tabular}

\bigskip
Here is an \verb|{NiceTabular}| (of the package \verb|nicematrix|).
\begin{NiceTabular}{|c|c|c|}
\Hline
a & b & c \\
\Hline
d & e & f \\
\Hline
\CodeAfter
\tikz \draw [red,thick] (2-|2) rectangle (3-|3) ; 
\end{NiceTabular}
\end{document}

上述代码的输出

如图所示,在第二个表格中,我绘制了红色框,并附有以下说明:

\tikz \draw [red,thick] (2-|2) rectangle (3-|3) ;

这表明您可以通过 Tikz 访问表格中具有与 单元格完全相同的界限的各个单元格{tabular}

相关内容