tikz-qtrees 上的雪

tikz-qtrees 上的雪

能不能在画出的语法树上加点雪tikz-qtree?举个简单的例子:

\documentclass[11pt]{article}
\usepackage{fontspec}
\usepackage{savetrees}
\setmainfont[Mapping=tex-text]{DejaVu Sans}
\usepackage{tikz-qtree, tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\providecommand{\alert}[1]{\textbf{#1}}

\title{tree}
\author{}
\date{\today}

\begin{document}

\section{Tree}
\label{sec-1}

\begin{tikzpicture}
\tikzset{every tree node/.style={align=center, anchor=north}}
\Tree [.TP [.DP \edge[roof ];\\I ] [.T' ] [.T\\ø ] [.VP [.V' [.V\\eat ]
      [.DP \edge[roof ];\\potatoes ] ] ] ]

\end{tikzpicture}

\end{document}

答案1

这是一棵树,节点边缘有随机选择和大小的雪花。如果您能找到更多雪花字符,可以将它们添加到列表中。每次编译文档时,模式都会发生变化。我使用 LuaTeX 进行编译,因为 XeTeX 无法提供对任何快速变化的时间值的良好访问来为随机数生成器提供种子。PGF 默认使用\time*\year作为种子,因此如果您使用 XeTeX 进行编译,图像将只会每分钟更改一次。

% !TEX TS-program = LuaLaTeX

\documentclass{article}
\usepackage{pdftexcmds} % used to give LuaTeX access to \pdf@elapsedtime
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Linux Biolinum O}
\usepackage{tikz-qtree, tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\newfontfamily\zapf{Zapf Dingbats}
\newcommand*{\flakeA}{\zapf❄}
\newcommand*{\flakeB}{\zapf❅}
\newcommand*{\flakeC}{\zapf❆}
\makeatletter
\pgfmathsetseed{\the\pdf@elapsedtime} % remove this if using XeTeX
\makeatother
\pgfmathdeclarerandomlist{size}{{Large}{huge}{large}{normalsize}}
\pgfmathdeclarerandomlist{flake}{{flakeA}{flakeB}{flakeC}}
\newcommand{\Rnd}{\pgfmathrandomitem{\S}{size}\pgfmathrandomitem{\FF}{flake}}
\newcommand*{\Flake}{\Rnd\csname\S\endcsname\csname\FF\endcsname}
\tikzset{every tree node/.style={align=center, anchor=north}
}
\begin{document}

\begin{tikzpicture}[sibling distance=1cm]
\Tree [.TP \edge node[auto=right]{\Flake};  
        [.DP\\We ] \edge node[auto=left]{\Flake}; 
        [.T\1 \edge node[auto=right]{\Flake};  
          [.T ]  \edge node[auto=left]{\Flake}; 
          [.VP \edge node[auto=right]{\Flake};
            [.V\\wish ] \edge node[auto=left]{\Flake};
            [.DP\\you ] \edge node[auto=left]{\Flake};
            [.DP \edge node[auto=right]{\Flake};
              [.D\\a ] \edge node[auto=left]{\Flake};
              [.NP \edge node[auto=right]{\Flake};
                [.AP\\Merry ] \edge node[auto=left]{\Flake};
                [.NP\\Christmas ] 
              ]
            ]
          ]
        ]
      ]
\end{tikzpicture}

\end{document}

代码输出

相关内容