在 xymatrix、forest 和 pst-tree 之间选择

在 xymatrix、forest 和 pst-tree 之间选择

我对选择用于生产这种生根树的包装感到尴尬 有根的树

我可以选择森林包裹示例1, 这木犀草素包裹 示例2, 或者pst 树包裹例3或者 Tikztrees,树木

我将停下来并更详细地阐述这个问题,以免使问题变得混乱和模糊。

问题: “在这些软件包中(或者其他软件包中,如果有的话),我能做出最合适的选择是什么?”

非常感谢您宝贵的建议。

答案1

这里只是荣幸地提到一个上面似乎没有提到的选项:来自图书馆的树graphdrawing。优点是代码短,缺点是你必须使用。1lualatex这是一个例子。2

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{graphs,graphdrawing} 
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[rn/.style={label={[anchor=center,circle,draw,minimum
    size=5pt,inner sep=0pt]center:}},
    graphs/every graph/.style={anchor at={(0,0.5em-0.5*\pgfmatrixcurrentrow*1em)},
    empty nodes,tree layout,level distance=1em, sibling
    distance=1em,grow=90,nodes={circle,fill,minimum size=3pt,inner sep=0pt,outer sep=0pt}}]
\matrix[row sep=1em,column sep=1em]{
\node{1}; & \graph { 1[rn]}; \\
\node{2}; & \graph { 1[rn]--2}; \\
\node{3}; & \graph[anchor at={(0,-1em)}] { 1[rn]--2--3}; &
\graph { 1[rn]--{2,3}}; \\
\node{4}; & \graph { 1[rn]--2--3--4}; &
\graph { 1[rn]--2--{3,4}};
& \graph { 1[rn]--{2,3--4}};
& \graph { 1[rn]--{2,3,4}};\\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

1为避免冗长的讨论:我并不是说 有什么问题lualatex。但是,您无法将上述内容上传到 arXiv,在我看来这是一个缺点。

2我不太喜欢那些没有明确例子来支持其论述的帖子。

答案2

在某种程度上,这是一个基于意见的问题,因为具体软件包的实用性实际上取决于您自己。您链接的两个问题也显示了与您在图片中显示的树完全不同的树。不过,我会尝试列出您可能使用哪些标准来决定软件包。

  1. 您所绘制的表示形式是否是正式意义上的(有根)树(即,图中任意两个顶点都由一条路径连接,并具有指定的根)?如果是,那么特定的树绘制包(如tikz-qtreeforestpst-treepst-jtreexytree可能合适。如果您绘制的表示形式不是树,那么这些包可能不是最佳解决方案,而 TikZ 图形绘制方法可能在这里有所帮助。

  2. 如果表示形式是正式意义上的树,则以下标准是相关的。在这里,我将考虑 5 个包:,,,,,。tikz-qtree我不考虑基本的 TikZ 树方法,因为我发现它们的输入语法非常笨拙,但 TikZ 确实具有更有用的通用图形绘制功能。forestpst-treepst-jtreexytree

    • 输入语法简单(这tikz-qtree方面forest显然胜出)
    • 能够与任何引擎一起使用(TikZ 方法显然胜出pstricks
    • 需要用边标签或节点之间的其他连接来注释树(forest一般情况下获胜,但istgame如果您正在绘制这些树,那么游戏树的专门包也非常好。)

所有pstricks基于的方法都存在类似的共同问题:它们依赖于使用latex+dvips(或可能xelatex),并且它们的输入语法通常不是特别友好。 TikZ 方法与引擎无关(尽管一些高级库使用lualatex)。

相关内容