我正在使用 dirtree 为目录生成树结构。
问题是我不能在文件或目录名称的单词之间使用特殊字符,例如下划线(_)或破折号(-)。
例如,这里有一个简短的树,展示了我想要实现的目标。
/
|
|--- [node_modules]
|--- package-lock.json
答案1
问题是_
中的node_modules
,这需要转义。这对于 来说并不特殊dirtree
,_
是 LaTeX 中的数学模式下标命令,因此当您想要编写文字下划线时,它始终需要转义。
梅威瑟:
\documentclass{article}
\usepackage{dirtree}
\begin{document}
\dirtree{%
.1 /.
.2 bin.
.2 home.
.3 [node\_modules].
.4 package-lock.json.
}
\end{document}
结果:
替代方案:带有 的目录树forest
,取自制作文件夹和文件的目录树。代码有点长。请注意,这里您还需要转义[
和字符,方法是将它们放在与和的]
组中(否则会认为它们关闭了节点)。{
}
forest
\documentclass{article}
\usepackage[edges]{forest}
\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=\ttfamily,
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},
}
\begin{document}
\begin{forest}
pic dir tree,
where level=0{}{% folder icons by default; override using file for file icons
directory,
},
[system
[config
]
[lib
[Access
]
[{[node\_modules]}
]
[package-lock.json, file
]
]
[templates
]
[tests
]
]
\end{forest}
\end{document}