请向我展示最简单、最优雅的代码:
换句话说,如何做呢?
答案1
你可以用tikz-qtree
包裹:
在下面的代码中,标签是使用树创建的,但树的分支实际上并未绘制(使用blank
设置 的样式[draw=none]
)。这确保它们与主树的级别对齐。通过将两棵树作为节点放在矩阵中,我们可以实现标签和主树之间的合理分离。
\documentclass{article}
\usepackage{tikz-qtree}
\begin{document}
\tikzset{edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode.south)
-- +(0,-8pt)
-| (\tikzchildnode)}},
blank/.style={draw=none}}
\begin{tikzpicture}
\matrix
{
\node{\Tree
[.Class \edge[blank];
[.Order \edge[blank];
[.Family \edge[blank];
[.Genus ]]]]};
&
\node{\Tree
[.{$\gamma$-proteobacteria}
[.Alteromonadales
[.Alteromonadaceae {Glaciecola} Alteromonas Agarivorans ] ]
[.Vibrionales [.Vibrionacae Vibrio ]]]};\\
};
\end{tikzpicture}
\end{document}
答案2
运行xelatex
\documentclass{article}
\usepackage{pst-tree}
\def\psedge{\ncangles[angleA=-90,angleB=90]}
\psset{levelsep=14mm,treesep=1.75cm,nodesep=3pt}
\begin{document}
\hspace*{1.3cm}
\pstree{\Tr[name=class]{$\gamma$-proteobacteria}}{%
\pstree{\Tr[name=order]{Alteromonadales}}{%
\pstree[thistreesep=3mm]{\Tr[name=family]{Alteromonadaceae}}{%
\Tr[name=genus]{Glaciecola}
\Tr{Alteromonas}
\Tr{Agarivorans}%
}}
\pstree{\Tr{Vibrionales}}{%
\pstree{\Tr{Vibrionacae}}{%
\Tr{Vibrio}
}}
}
\rput[rc](0,0|class){Class}\rput[rc](0,0|order){Order}%
\rput[rc](0,0|family){Family}\rput[rc](0,0|genus){Genus}%
\end{document}