Tikz 矩阵中的单元格位置

Tikz 矩阵中的单元格位置

我有一个单列 Tikz 矩阵,每个单元格包含一行或多行文本。我希望第一个单元格的文本居中,而所有其他单元格的文本左对齐。此外,我希望第一个单元格在列中居中,而所有其他单元格都位于列的左边框。

下面的代码

\begin{tikzpicture}[every node/.style={draw}]
\matrix [draw=red,column sep=1cm]
  {
   \node [align=center] {\textbf {Transition Record}};\\
   \node [left,align=left]
      {\textbf{Signatures} \\
       signed by Ted};\\
   \node [align=left] {\textbf{Transition} \\ \(\tau\)};\\
   \node [align=left]
      {\textbf{End State} \\
       \(\mathtt{Alice2}\mid\mathtt{Carol2}\mid\mathtt{Ted}\)};\\
};
\end{tikzpicture}

似乎将第一个单元格居中并居中对齐其文本,同时将第二个单元格左对齐并将其文本左对齐。我该如何将第三和第四个单元格定位到与第二个单元格相同的位置?(也就是说,我希望所有带有标题、“签名”、“转换”和“结束状态”的块沿其左边界对齐。“转换记录”框将保持在列的中心位置。)

先感谢您。

答案1

align=center仅设置特定节点内文本的对齐方式,并未说明该节点相对于其他节点或列的放置方式。要使节点的左边缘处于相同的水平位置,请将anchor=west(或等效地right)添加到节点选项。

xshift要获得居中的第一个单元格的外观,可以为第一个节点添加一些。(align=center当您只有一行文本时,不会执行任何操作,因此我删除了第一个节点的该选项。)人们可能会找到更优雅的解决方案,不需要像这里一样进行特定的移位,但对于一次性解决方案,它可能可以做到。假设这是你想要的:

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every node/.style={draw, anchor=west}] % added anchor=west
\matrix [draw=red,column sep=1cm]
  {
   \node [xshift=1mm] {\textbf {Transition Record}};\\ % added xshift=1mm
   \node [align=left]
      {\textbf{Signatures} \\
       signed by Ted};\\
   \node [align=left] {\textbf{Transition} \\ \(\tau\)};\\
   \node [align=left]
      {\textbf{End State} \\
       \(\mathtt{Alice2}\mid\mathtt{Carol2}\mid\mathtt{Ted}\)};\\
};
\end{tikzpicture}
\end{document}

相关内容