如何使 tikz 多部分节点部分具有统一的大小?

如何使 tikz 多部分节点部分具有统一的大小?

在 TikZ 中制作带框节点时,一个常见要求是节点大小相等。由于 TikZ 会自动调整节点大小以适应节点内容,因此通常通过设置节点的最小大小并将设置inner sep为 0 来实现。

我如何对多部分节点的部分执行相同的操作?如以下示例所示,设置多部分节点的最小大小只会设置高度(如手册中所述)。那么,如何使每个部分与我的非分割节点大小相同?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\usepackage[margin=1in]{geometry}
\parindent=0pt
\begin{document}
\tikzset{
every node/.style={draw, minimum size=4ex,inner sep=0pt},
split/.style={rectangle split, rectangle split parts=2,draw,inner sep=0ex,
   rectangle split horizontal,rectangle split part align=base,minimum size=4ex}}
\begin{tikzpicture}
\node at (0,0) {A} ;
\node at (1,0) {a} ; 
\node at (2,0) {X} ;
\node at (3,0) {j} ;
\node at (4,0) {};
\node[split] at (5,0) {}; 
\node[split] at (6,0) {X\nodepart{two}j};
\end{tikzpicture}

\end{document}

代码输出

答案1

我根据 Caramdir 评论中的想法更新了我的答案。此方法在 pgfmanual 的教程“图表作为简单图表”中使用。

更新最好text width=4ex使用 Polgab 方法:align=center而不是\hfil ...\hfil

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\usepackage[margin=1in]{geometry}
\parindent=0pt
\begin{document}
\tikzset{
every node/.style={draw, minimum size=4ex,inner sep=0pt,textstyle},
split/.style={rectangle split, rectangle split parts=2,draw,inner sep=0ex,
   rectangle split horizontal,minimum size=4ex},
   textstyle/.style={text height=1.5ex,text depth=.25ex}}

\begin{tikzpicture}
\node at (0,0) {A} ;
\node at (1,0) {a} ; 
\node at (2,0) {X} ;
\node at (3,0) {j} ;
\node at (4,0) {};
\node[split,text width=4ex] at (6,0) {\nodepart{two}}; 
\node[split,text width=4ex] at (8,0) {\hfil X\hfil\nodepart{two}\hfil r\hfil};
\end{tikzpicture}  

\end{document}  

在此处输入图片描述

答案2

这是我的解决方案rectangle split part align=basechains仅用于链接节点)。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart,chains}

\begin{document}
\begin{tikzpicture}[start chain=going right,node distance=.5ex]
  \tikzset{
    simple node/.style={
      draw,
      text height=2.8ex,text depth=1.2ex,
      inner sep=0pt,text width=4ex,align=center
    },
    split node/.style={
      simple node,
      rectangle split,rectangle split horizontal,rectangle split parts=2,
      draw,inner sep=0ex,rectangle split part align=base,
    },
  }
  \node[on chain,simple node] {j} ;
  \node[on chain,split node] {j\nodepart{two}A};
  \node[on chain,simple node] {A} ; 
  \node[on chain,simple node] {X} ;
  \node[on chain,split node] {X\nodepart{two}j};
  \node[on chain,simple node] {j} ;
  \node[on chain,split node] {.\nodepart{two}\textbullet}; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

下面是没有的结果(注意狭缝节点左侧和右侧部分rectangle split part align=base的区别):j

在此处输入图片描述

相关内容