如何使 TikZ 矩阵的单元相对于其中心对齐?

如何使 TikZ 矩阵的单元相对于其中心对齐?

以下问题可能与这个。下面我将描述的问题与可能重复的问题非常相似。但是,重复的问题似乎与节点有关,并且根据发帖人自己的承认,解决他的问题的办法可能只是“写[anchor = center]为选项”,而在我的例子中,节点不涉及,并且将anchor=center选项传递给矩阵没有任何效果。


以下 LaTeX 代码已保存在文件中~/test.tex

\documentclass[tikz,border=1cm]{standalone}
\newcommand{\grid}[1]{\draw (0,0) rectangle ++(#1,#1);}
\begin{document}
\begin{tikzpicture}
\matrix[row sep=0pt]
{
    \grid{1} & \grid{2} \\
    \grid{3} & \grid{4} \\
};
\end{tikzpicture}
\end{document}

代码创建了四个不同大小的正方形,并将它们排列成 2x2 矩阵。

然后在终端中执行以下命令。

> cd ~
> lualatex test

因此文件~/test.pdf已创建。在 PDF 查看器中打开时,文件显示如下。

在此处输入图片描述

可以看出,每列的方块都是左对齐的,每行的方块都是底部对齐的。

  1. 我怎样才能使它们相对于中心垂直(或水平)对齐?
  2. 我怎样才能同时垂直和水平地对齐它们相对于它们的中心?

答案1

请尝试以下操作:

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{matrix}
\newcommand{\grid}[1]{\draw (0,0) rectangle ++(#1,#1);}

\begin{document}
\begin{tikzpicture}[
N/.style = {draw, minimum size=#1 cm, anchor=center,
            node contents={}}
                    ]
\matrix[matrix of nodes,
        column sep=1mm, 
        row sep=1mm]
{
\node[N=1]; & \node[N=2];  \\
\node[N=3]; & \node[N=4];  \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑: 从 OP 评论可以看出,这个问题并不完全清楚,答案应该提供一般解决方案。这是什么意思并没有解释,所以我猜,内容是一些可以分成几行的文本。例如:

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}

\matrix[matrix of nodes,
        nodes={fill=gray!10, % remove in real document
               align=center, anchor=center, font=\linespread{0.84}\selectfont},
        column sep=1mm, 
        row sep=1mm]
{
\node{a};       & \node{a\\b};  \\
\node{a, b\\c}; & \node{a\\b\\cdefgh};  \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

附录:
看来您实际上是在寻找一个可以插入图像的表格,我认为这个tabularray包很方便。一个虚拟示例:

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
    node distance = 2mm,
       dot/.style = {circle, fill=gray!30},
    baseline=(current bounding box.center) % <---
       }
\usepackage{tabularray}

\begin{document}
\begin{tblr}{colspec={Q[c] Q[c]}}
\tikz{\node (a) [dot,label=a] {};
      \node (b) [dot,label=b, right=of a] {};
       }
        & \tikz{\node (a) [dot,label=a] {};
                \node (b) [dot, right=of a] {};
                \node (c) [dot,label=c, above=of b] {};
                }    \\
\tikz{\node (a) [dot] {a};
      \node (b) [dot, right=of a] {b};
       }
        & \tikz{\node (a) [dot] {a};
                \node (b) [dot, right=of a] {b};
                \node (c) [dot, right=of b] {c};
                \node (d) [dot, above=of b] {d};
                \node (e) [dot, below=of b] {e};
                }    \\
\end{tblr}
\end{document}

在此处输入图片描述

相关内容