是否可以使用我定义节点的“语法”(使用[. ]
)来使用不同的节点样式。
\documentclass[landscape]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[margin=1in]{geometry}
\usepackage{tikz-qtree}
\usepackage{german}
\usetikzlibrary{shadows,trees}
\begin{document}
\tikzset
{
font=\small,
edge from parent,
level distance=1.75cm,
every node/.style=
{
top color=white,
bottom color=blue!25,
rectangle,rounded corners,
minimum height=8mm,
draw=blue!75,
thick,
drop shadow,
align=center,
text depth = 0pt
},
edge from parent/.style=
{
draw=blue!50,
thick
}
}
\centering
\begin{tikzpicture}
\Tree
[.{$stmt : \grq\{\grq\ \{\ stmt\ \} * \grq\}\grq\ ;$}
[.{$\grq\{\grq\ \{\ stmt\ \}* \grq\}\grq\ ;$}
[.{$\textbf{\grq\{\grq };$}
]
[.{$\{\ stmt\ \}* ;$}
[.{$stmt$}
]
[.{$stmt$}
]
[.{$stmt$}
]
]
[.{$\textbf{\grq\}\grq };$}
]
]
[.{$\grq\{\grq\ \{\ stmt\ \} \grq\}\grq\ ;$}
]
]
\end{tikzpicture}
\end{document}
目前只有every node style
,但我想要两种不同类型。
抱歉,我的问题很愚蠢,但这是我第二天使用任何类型的 TeX。
答案1
您可以使用标准\node
命令并将特定样式应用于给定节点。例如:
\documentclass[tikz,border=10pt,german]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz-qtree,mathtools}
\usepackage{babel}
\usetikzlibrary{shadows,trees}
\begin{document}
\tikzset
{
font=\small,
edge from parent,
level distance=1.75cm,
every node/.style=
{
top color=white,
bottom color=blue!25,
rectangle,
rounded corners,
minimum height=8mm,
draw=blue!75,
thick,
drop shadow,
align=center,
text depth = 0pt
},
odd node/.style={
bottom color=red!25,
draw=red!75
},
edge from parent/.style=
{
draw=blue!50,
thick
}
}
\begin{tikzpicture}
\Tree
[.{$stmt : \text{\grq}\{\text{\grq}\ \{\ stmt\ \} * \text{\grq}\}\text{\grq}\ ;$}
[.{$\text{\grq}\{\text{\grq}\ \{\ stmt\ \}* \text{\grq}\}\text{\grq}\ ;$}
[.\node[odd node]{$\textbf{\text{\grq}\{\text{\grq} };$};
]
[.{$\{\ stmt\ \}* ;$}
[.{$stmt$}
]
[.{$stmt$}
]
[.{$stmt$}
]
]
[.{$\textbf{\text{\grq}\}\text{\grq} };$}
]
]
[.{$\text{\grq}\{\text{\grq}\ \{\ stmt\ \} \text{\grq}\}\text{\grq}\ ;$}
]
]
\end{tikzpicture}
\end{document}
我还对你的代码做了一些其他的更改,使用\text{\grq}
since\grq
在数学模式下不可用,并且使用german
选项 forbabel
而不是german
作为包调用,我认为这已被弃用。
您似乎不太可能真的想要这样的引号。但另一方面,您并不清楚您可能想要什么,因此希望仅提供将使\text{}
您能够适当地修改代码。
如果您使用forest
,则可以更灵活、更简洁地将样式应用于特定节点,但我不确定是否可以使用它来完成,tikz-qtree
并且您需要使用不同的语法来使用forest
,而您表示您不想这样做。