Tex 添加节点样式

Tex 添加节点样式

是否可以使用我定义节点的“语法”(使用[. ])来使用不同的节点样式。

\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,而您表示您不想这样做。

相关内容