![森林:包含文件和文件内容的目录列表](https://linux22.com/image/449633/%E6%A3%AE%E6%9E%97%EF%BC%9A%E5%8C%85%E5%90%AB%E6%96%87%E4%BB%B6%E5%92%8C%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E7%9A%84%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8.png)
这扩展了使用森林的文件列表的许多问题。与我想要的解决方案最相似的解决方案是这个。
我无法找到解决方案的悬而未决的问题是:如何为文件生成多行注释?实际上,我想在其中列出文件内容的几行。额外奖励:如果我甚至可以使用某种语法突出显示(bash 语法)来格式化文件内容,那就太完美了。
\documentclass[]{article}
\usepackage[edges]{forest}
\usepackage{array}
\definecolor{folderbg}{RGB}{124,166,198}
\definecolor{folderborder}{RGB}{110,144,169}
\newlength\Size
\setlength\Size{4pt}
\tikzset{%
folder/.pic={%
\filldraw [draw=folderborder, top color=folderbg!50, bottom color=folderbg] (-1.05*\Size,0.2\Size+5pt) rectangle ++(.75*\Size,-0.2\Size-5pt);
\filldraw [draw=folderborder, top color=folderbg!50, bottom color=folderbg] (-1.15*\Size,-\Size) rectangle (1.15*\Size,\Size);
},
file/.pic={%
\filldraw [draw=folderborder, top color=folderbg!5, bottom color=folderbg!10] (-\Size,.4*\Size+5pt) coordinate (a) |- (\Size,-1.2*\Size) coordinate (b) -- ++(0,1.6*\Size) coordinate (c) -- ++(-5pt,5pt) coordinate (d) -- cycle (d) |- (c) ;
},
}
\forestset{%
declare autowrapped toks={pic me}{},
pic dir tree/.style={%
for tree={%
folder,
font=\itshape,
grow'=0,
},
before typesetting nodes={%
for tree={%
edge label+/.option={pic me},
},
},
},
pic me set/.code n args=2{%
\forestset{%
#1/.style={%
inner xsep=2\Size,
pic me={pic {#2}},
}
}
},
pic me set={directory}{folder},
pic me set={file}{file},
}
\newcommand{\fname}[2]{\begin{tabular}{m{1cm}@{\quad}m{4cm}}#1 & \normalfont#2\end{tabular}}
\begin{document}
\begin{forest}
pic dir tree,
where level=0{}{% folder icons by default; override using file for file icons
directory,
},
[system
[\fname{config}{A comment about this folder}
]
[lib
[Access
]
[Plugin
]
[\fname{file.txt}{A comment about this file}, file
]
]
[templates
]
[tests
]
]
\end{forest}
\end{document}