TikZ 矩阵与 shapes.multipart 与文本宽度

TikZ 矩阵与 shapes.multipart 与文本宽度

我想知道是否有人可以理解当我尝试在多部分节点矩阵中设置文本宽度时出现的错误。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes.multipart}
\begin{document}
  \begin{tikzpicture}[every text node part/.style={font=\large\sffamily},
every two node part/.style={font=\normalsize\sffamily,%text width=0.5cm %<- causes an error
}]
    \matrix[matrix of nodes,nodes={draw,rectangle split,rectangle split parts=2,
    rectangle split draw splits=false}%,text width=0.5cm %<- causes an error
    ] {
      top\nodepart{two}some lengthy text at the bottom & x\nodepart{two} y\\
       x\nodepart{two} y & top\nodepart{two}bottom \\
    };
  \end{tikzpicture}
\end{document}

在此处输入图片描述

每次尝试设置text width都会导致错误。

Ulrike Fischer 曾表示

所有以文本开头的选项(例如文本宽度)均无效。

在矩阵中。如果不是以下反例,我很乐意相信这一点:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
  \begin{tikzpicture}
    \matrix[matrix of nodes,nodes={draw},text width=0.5cm 
    ] {
      top some lengthy text at the bottom & x  y\\
       x  y & top bottom \\
    };
  \end{tikzpicture}
\end{document}

在此处输入图片描述

以我个人观点来看,这表明可以在非多部分节点矩阵中设置文本宽度。

新见解(?):实际上至少在某种程度上设置多部分节点的大小。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes.multipart}
\begin{document}
  \begin{tikzpicture}[every text node part/.style={font=\large\sffamily},
every two node part/.style={font=\normalsize\sffamily,%text width=0.5cm %<- causes an error
}]
    \matrix[matrix of nodes,nodes={draw,rectangle split,rectangle split parts=2,
    rectangle split draw splits=false}%,text width=0.5cm %<- causes an error
    ] {
      top\nodepart[text width=1.5cm]{two}some lengthy text at the bottom & 
      x\nodepart{two} y\\
       x\nodepart{two} y & top\nodepart{two}bottom \\
    };
  \end{tikzpicture}
\end{document}

在此处输入图片描述

但是,在任何右侧(最右侧?)节点重复此技巧都会失败。不过可以添加空节点:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes.multipart}
\begin{document}
  \begin{tikzpicture}[every text node part/.style={font=\large\sffamily},
every two node part/.style={font=\normalsize\sffamily,text width=1cm %<- causes an error
}]
    \matrix[matrix of nodes,nodes={draw,rectangle split,rectangle split parts=2,
    rectangle split draw splits=false}%,text width=0.5cm %<- causes an error
    ] {
      top\nodepart{two}some lengthy text at the bottom & 
      x\nodepart{two} y &\\
       x\nodepart{two} y & top\nodepart{two}bottom &\\
    };
  \end{tikzpicture}
\end{document}

在此处输入图片描述

致谢:我感谢 Torbjørn T.、Ulrike Fischer、Manuel Kuehner 博士和 @cfr 的有益评论。

问题:有没有办法设置节点矩阵中多部分节点的文本宽度?

相关内容