如何在不改变单元格位置的情况下将 TikZ 矩阵单元格内容锚定到“基线”?

如何在不改变单元格位置的情况下将 TikZ 矩阵单元格内容锚定到“基线”?

我的表格中的单元格通常包含带上标的表达式。这会导致文本基线看起来在相邻单元格之间“游移”。例如

\begin{tikzpicture}[every node/.style={minimum size=7mm}]
\matrix{
    \node[fill=gray!10]{$a$};  &  \node[fill=gray!20]{$a^2$};  &  \node[fill=gray!30]{$b$}; &  \node[fill=gray!40]{$b^2$}; \\};
\end{tikzpicture}

生产

在此处输入图片描述

我理解将所有单元格的文本对齐到公共基线的方法是使用anchor=base,但这会产生单元格混乱的副作用。例如

\begin{tikzpicture}[every node/.style={anchor=base,minimum size=7mm}]
\matrix{
    \node[fill=gray!10]{$a$};  &  \node[fill=gray!20]{$a^2$};  &  \node[fill=gray!30]{$b$}; &  \node[fill=gray!40]{$b^2$}; \\};
\end{tikzpicture}

生产

在此处输入图片描述

有没有办法将所有文本对齐到公共基线,而无需移动单元格?


\documentclass[]{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[every node/.style={minimum size=7mm}]
\matrix{
    \node[fill=gray!10]{$a$};  &  \node[fill=gray!20]{$a^2$};  &  \node[fill=gray!30]{$b$}; &  \node[fill=gray!40]{$b^2$}; \\};
\end{tikzpicture}

\begin{tikzpicture}[every node/.style={anchor=base,minimum size=7mm}]
\matrix{
    \node[fill=gray!10]{$a$};  &  \node[fill=gray!20]{$a^2$};  &  \node[fill=gray!30]{$b$}; &  \node[fill=gray!40]{$b^2$}; \\};
\end{tikzpicture}

\end{document}

答案1

你可以固定高度文本深度:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.style={anchor=base,
    text height=.8em,text depth=.2em,minimum size=7mm}]
  \matrix{
    \node[fill=gray!10]{$a$};&
    \node[fill=gray!20]{$a^2$};&
    \node[fill=gray!30]{$b$}; &
    \node[fill=gray!40]{$b^2$};\\
  };
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容