以下问题可能与这个。下面我将描述的问题与可能重复的问题非常相似。但是,重复的问题似乎与节点有关,并且根据发帖人自己的承认,解决他的问题的办法可能只是“写[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
请尝试以下操作:
\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}