this repo has no description
1\RequirePackage{xparse}
2\RequirePackage{xspace}
3
4\ExplSyntaxOn
5
6
7\tl_new:N \l__forester_current_counter
8\clist_new:N \l__forester_counters
9\clist_set:Nn \l__forester_counters {section,subsection,subsubsection,paragraph,subparagraph}
10
11\keys_define:nn { forester } {
12 treeCommands .clist_set:N = \l__forester_counters,
13}
14
15\keys_define:nn { forester_tree } {
16 title .tl_set:N = \l__forester_tree_title,
17 label .tl_set:N = \l__forester_tree_slug,
18}
19
20\cs_new:Npn \forester_format_section: {
21 \use:c{\l__forester_current_counter}{
22 \l__forester_tree_title
23 }
24}
25
26\NewDocumentEnvironment{tree}{m}{
27 \group_begin:
28 \keys_set:nn { forester_tree } {#1}
29 \clist_pop:NN \l__forester_counters \l__forester_current_counter
30 \forester_format_section:
31 \bool_if_exist:cTF {g__forester_slug_defined_\l__forester_tree_slug} {} {
32 \label{\l__forester_tree_slug}
33 \bool_gset_true:c {g__forester_slug_defined_\l__forester_tree_slug}
34 }
35 \ignorespaces
36}{
37 \group_end:
38}
39
40\NewDocumentCommand\ForesterSetup{+m}{
41 \keys_set:nn { forester } { #1 }
42}
43
44\ExplSyntaxOff
45
46
47\NewDocumentEnvironment{xsect}{om}{
48\IfValueTF{#1}{
49 \begin{tree}{title = {#2}, label = #1}
50}{
51 \begin{tree}{title = {#2}}
52 }
53 }{
54 \end{tree}
55}
56
57\NewDocumentEnvironment{xnode}{omm}{
58 \begin{#2}[#3]\IfValueT{#1}{\label{#1}}
59}{
60 \end{#2}
61}