使 tikz 节点矩阵统一

使 tikz 节点矩阵统一

我想创建一个包含几个表格和箭头/括号的图表,以描述当对表格应用不同的函数时表格之间的变化。但是,当创建包含节点矩阵的表格时,节点大小不同,这会使整个表格看起来很丑陋。

这是我的代码:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[draw, scale=0.75, inner sep=0mm]
\tikzstyle{matrix of nodes}=[
inner sep = 0mm,
execute at begin cell=\node\bgroup,
execute at end cell=\egroup;%
]
\tikzstyle{column 1} = [nodes={fill=blue!20}]
\matrix [matrix of nodes, nodes={draw=none}, minimum size = 1.25em]
{
A & 1 & 2 \\
B & 3 & 4 \\
C & 5 & 6 \\
};

\end{tikzpicture}
\end{document}

最终结果是这样的:

在此处输入图片描述

A、B 和 C 明显比数字高一点。我尝试调整字体大小和最小尺寸,但差异仍然存在。有什么方法可以让它们大小相同吗?

答案1

我认为这与节点无关。它们的类型取决于字体。如果你真的想让它们的高度相同。你可以手动将数字稍微缩放一点。然而,我认为这没有必要。

在此处输入图片描述

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[draw, scale=0.75, inner sep=0mm]
\tikzstyle{matrix of nodes}=[
inner sep =0mm,
execute at begin cell=\node\bgroup,
execute at end cell=\egroup;%
]
\tikzstyle{column 1} = [nodes={fill=blue!20}]
\matrix [matrix of nodes, nodes={draw=none}, minimum size = 1.25em]
{%
A1 & A\scalebox{1.07}{1} & 2 \\
B3 & B\scalebox{1.03}{3} & 4 \\
C5 & C\scalebox{1.05}{5} & 6 \\
};
\end{tikzpicture}
\end{document}

答案2

我认为问题可能是节点对齐。A默认matrix of nodes使用base对齐方式,字母和数字的对齐方式不同,看起来字母节点比数字节点大。如果将其更改为center,则所有节点都相等。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix [matrix of nodes, nodes={draw, inner sep=0pt, anchor=center}, minimum size = 1.25em,
row sep=-\pgflinewidth, column sep=-\pgflinewidth,
column 1/.style={nodes={fill=blue!20}}]
{
A & 1 & 2 \\
B & 3 & 4 \\
C & 5 & 6 \\
};

\end{tikzpicture}

\begin{tikzpicture}
\matrix [matrix of nodes, nodes={draw, inner sep=0pt}, minimum size = 1.25em,
row sep=-\pgflinewidth, column sep=-\pgflinewidth,
column 1/.style={nodes={fill=blue!20}}]
{
A & 1 & 2 \\
B & 3 & 4 \\
C & 5 & 6 \\
};

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

字母和数字高度之间的差异由字体设计决定,因此这与它们在tikz图片中的使用无关。但是,如果您以更常见的方式编写矩阵,则这些差异可以忽略不计,并且取决于精心设计的字体设计:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{matrix}

%\usepackage{libertine}

\begin{document}
    \begin{tikzpicture}
\matrix [matrix of nodes, 
         nodes={draw, minimum size=1em, inner sep=1pt, anchor=center},
         column sep=-0.5\pgflinewidth,
         row sep=-0.5\pgflinewidth
         ]
{
A & B & C \\
B & 1 & 2 \\
C & 3 & 4 \\
};

\end{tikzpicture}
\end{document}

cm默认设置下(现代计算机)显示如下:

在此处输入图片描述

libertine

在此处输入图片描述

luximono

在此处输入图片描述

从这些例子中你可以看到,字母的高度并不完全相同,差异可以忽略不计,这是经过精心选择的,以便在阅读文本时提供更好的视觉印象。

如果这让您感到困扰,请找到差异较小的字体(或设计自己的字体;-))。

相关内容