我正在寻找一种方法来为多部分形状的每个部分设置字体,而不必为每一行重复字体命令。以下是我想要实现的一个示例:
\documentclass[varwidth,convert]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\tikzset{
labeled node/.style={
rectangle split, rectangle split parts=2,
rectangle split draw splits=false,
rounded corners,
very thick,
draw=orange!50,
rectangle split part fill={orange!50, none},
align=left,
}
}
\begin{document}
\begin{tikzpicture}
\node[labeled node] {
\sffamily\bfseries\boldmath
node $v_1$
\nodepart{two}
\slshape
Contents of\\
\slshape
node $v_1$.
};
\end{tikzpicture}
\end{document}
在示例中,我必须手动设置第一部分的粗体字体,以及第二部分每一行的 slshape,如果我必须在文档中创建大量这样的多部分形状并希望它们都具有相同的样式,那么这会很烦人。
我该如何调整清晰度labeled node/.style
以使此字体设置自动进行?
答案1
执行此操作时\nodepart{two}
,将定义一个名为的样式every two part node
,并将其添加到的开头nodepart
。因此,您可以定义此样式,它将用于所有nodepart
名为的样式two
,并且如果您font=\slshape
在样式中,则不必为每一行添加字体声明。
例如:
\documentclass[border=4mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\tikzset{
labeled node/.style={
rectangle split, rectangle split parts=2,
rectangle split draw splits=false,
rounded corners,
very thick,
draw=orange!50,
rectangle split part fill={orange!50, none},
align=left,
font=\sffamily\bfseries\boldmath
},
labeled file/.style={
rectangle split, rectangle split parts=2,
rectangle split draw splits=false,
rounded corners,
very thick,
draw=blue!50,
rectangle split part fill={blue!50, none},
align=left,
font=\sffamily\bfseries\boldmath
},
every two node part/.style={font=\slshape},
every twofile node part/.style={font=\bfseries}
}
\let\pgfnodeparttwofilebox=\pgfnodeparttwobox
\begin{document}
\begin{tikzpicture}
\node[labeled node] {
node $v_1$
\nodepart{two}
Contents of\\
node $v_1$.
};
\end{tikzpicture}
\begin{tikzpicture}
\node[labeled file] {
node $v_2$
\nodepart{twofile}
That of\\
node $v_2$.
};
\end{tikzpicture}
\end{document}