具有多个主文件的森林

具有多个主文件的森林

我正在使用以下代码来绘制文件夹树:

%credit:https://tex.stackexchange.com/questions/5073/making-a-simple-directory-tree
\documentclass[border=5pt]{standalone}
\usepackage{forest}

\begin{document}

\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(7.5pt,0) |- node[fill,inner sep=1.25pt] {} (.child anchor)\forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
        {insert before={[,phantom]}}
        {}
    },
    fit=band,
    before computing xy={l=15pt},
  }
%[
[text1    %this should be on the same level of...
  [text1.1
    [text1.1.1]
  ]
  [text1.2
    [text1.2.1]
  ]
]
[text2]   %...this
%]
\end{forest}

\end{document}

输出如下:

我不明白为什么 text2 没有出现。

我的目标是让 text1 和 text2 与两个主文件处于同一级别。我发现的唯一解决方案是取消注释上述代码中的方括号,并获得

但我不想在左侧出现垂直线。我该如何实现?

答案1

Salim Bou 的回答完全正确。但是,现在使用 Forest 绘制这种树要容易得多,如果不充分利用新设施,似乎有点可惜。

当前 Forest(版本 2 及更高版本)支持库来扩展其功能,就像 TiZ 就是这样的。捆绑的库之一是edges,除其他功能外,它还提供了一种用于绘制这种树的开箱即用的样式。出于某种原因,它被称为folder,但不要因此而失望。它甚至可以在 GNU/Linux 和其他 Unix-ish 系统上正常工作!

\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    folder,
    edge label={node [midway, inner sep=1.25pt, fill] {}},
  }
  [, phantom
    [text1
      [text1.1
        [text1.1.1]
      ]
      [text1.2
        [text1.2.1]
      ]
    ]
    [text2]
  ]
\end{forest}
\end{document}

directory tree the easy way

答案2

phantom您需要的是通过添加键来隐藏第一层及其边缘

%credit:https://tex.stackexchange.com/questions/5073/making-a-simple-directory-tree
\documentclass[border=5pt]{standalone}
\usepackage{forest}

\begin{document}

\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(7.5pt,0) |- node[fill,inner sep=1.25pt] {} (.child anchor)\forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
        {insert before={[,phantom]}}
        {}
    },
    fit=band,
    before computing xy={l=15pt},
  }
[,phantom  % add this to hide first level 
[text1    
  [text1.1
    [text1.1.1]
  ]
  [text1.2
    [text1.2.1]
  ]
]
[text2]   
]
\end{forest}

\end{document}

enter image description here

相关内容